Shell脚本调试

Shell脚本调试

我想知道是否有一个 IDE 允许我定义到远程主机的 ssh 连接、连接并在本地调试远程运行的脚本(有点像您可以在 Eclipse 中调试远程 Java 应用程序)?我希望能够逐行检查变量等等。

答案1

改进跟踪输出的一个简单方法是使用以下代码片段:

  PS4='[${BASH_SOURCE[0]:-inherited}:${LINENO}:${FUNCNAME[0]:-main}] '
  set -o xtrace

这将向您展示:

  1. 源文件
  2. 源行号
  3. 函数名

也可以看看c42-common-functions 的 wiki 页面

输出示例:

   $ c42_loglevel_trace
   $ pidkill --help
   ++ '[' '+ ' == '+ ' ']'
   ++ PS4='[${BASH_SOURCE[0]:-inherited}:${LINENO}:${FUNCNAME[0]:-main}] '
   ...
   [/usr/local/bin/pidkill:224:main] '[' 1 -eq 0 ']'
   [/usr/local/bin/pidkill:230:main] signal=KILL
   [/usr/local/bin/pidkill:231:main] '[' 1 -gt 0 ']'
   [/usr/local/bin/pidkill:233:main] case $1 in
   [/usr/local/bin/pidkill:268:main] shift 1
   [/usr/local/bin/pidkill:269:main] help
   [/usr/local/bin/pidkill:57:help] cat
   pidkill <-h|--help>                                              this help
   [/usr/local/bin/pidkill:70:help] copyLeft
   [/usr/local/bin/pidkill:13:copyLeft] echo ''
   ...

另一种选择是bash数据库:

这是对 Bill Rosenblatt 的“学习 Korn Shell”中 Korn Shell 调试器的完全重写,该书由 O'Reilly and Associates 出版(ISBN 1-56592-054-6),并由 Michael Loukides 和 Cigy Cyriac 进行了更改。然而,此代码现在依赖于许多调试支持功能,这些功能既不属于 POSIX 标准,也不存在于许多类似 POSIX 的 shell 中。虽然您可以仅使用 bashdb 来调试用 BASH 编写的脚本,但它也可以用作学习更多有关 BASH 编程的前端。作为额外的帮助,调试器可以在现有脚本的上下文中使用,其函数和变量已经初始化;可以通过在调试器内更改现有代码的片段来进行试验。

答案2

用于调试 bash 脚本的 IDE?我不明白图形 GUI 如何帮助 ssh 进入主机并为您提供脚本的 cli 输出。另外我不知道可以在其中运行脚本的 bash 调试器。但您没有指定您正在谈论哪种 shell 脚本。

如果是 bash,则可以使用该-x标志来启用跟踪。这几乎是调试。但你不能打破并进入/退出/越过...不过我发现它非常有用。

这样你就可以直接在 shebang 上启用它

#!/usr/bin/bash -x

或使用 set 来启用/禁用跟踪

set -x # enable debugging

set +x # disable tracing

你也可以暂停你的脚本read

ENV 变量可以发现/proc/<PID>/environ 它们是 \0 分隔的,您可以使用 sed 将空字符替换为 CR

cat /proc/10815/environ | sed 's/\0/\n/g'

享受

忘记 GUI 让你的生活更轻松。 GUI是针对用户和消费者的。

相关内容