我想知道是否有一个 IDE 允许我定义到远程主机的 ssh 连接、连接并在本地调试远程运行的脚本(有点像您可以在 Eclipse 中调试远程 Java 应用程序)?我希望能够逐行检查变量等等。
答案1
改进跟踪输出的一个简单方法是使用以下代码片段:
PS4='[${BASH_SOURCE[0]:-inherited}:${LINENO}:${FUNCNAME[0]:-main}] '
set -o xtrace
这将向您展示:
- 源文件
- 源行号
- 函数名
也可以看看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是针对用户和消费者的。