2

我正在尝试编写一些与调试器通信的vimscript,但我不完全确定如何去做。有没有办法可以将输入发送到调试器并以编程方式读取其输出?

我知道这是可能的,因为 Code::Blocks、Eclipse 和其他 IDE 以某种方式做到了这一点。我只是想知道如何做到这一点。

4

2 回答 2

1

我只是想知道如何做到这一点。

GDB 有“机器接口”就是为了这个。详情在这里

于 2013-10-13T00:59:27.997 回答
0

Git 2.18 展示了一种有趣的方式来包装调试器、gdb 或其他工具并与之通信。

请参阅Elijah Newren ( ) 的提交 8424364(2018 年 4 月 24 日(由Junio C Hamano 合并 -- --89753dc 提交中,2018 年 5 月 23 日)newren
gitster

使git在其他类似调试器的程序下运行变得容易

这允许我们git在使用脚本时bin-wrappers在其他程序下运行。
在测试套件脚本中使用的几个示例:

debug git checkout master
debug --debugger=nemiver git $ARGS
debug -d "valgrind --tool-memcheck --track-origins=yes" git $ARGS

或者,如果有人bin-wrappers/在他们的$PATH并且正在git测试套件之外执行:

GIT_DEBUGGER="gdb --args" git $ARGS
GIT_DEBUGGER=nemiver git $ARGS
GIT_DEBUGGER="valgrind --tool=memcheck --track-origins=yes" git $ARGS

还有一个方便的快捷方式,GIT_DEBUGGER=1含义相同

GIT_DEBUGGER="gdb --args"

在 中查看结果t/test-lib-functions.sh


关于这一点GIT_DEBUGGER,Git 2.23 记录了它。

请参阅Emily Shaffer ( ) 的提交 f547101(2019 年 5 月 28 日(由Junio C Hamano 合并 -- --7df94cd 提交中,2019 年 6 月 17 日)nasamuffin
gitster

docGIT_DEBUGGER:提示CodingGuidelines

GIT_DEBUGGER我们在 via 运行时 检查一个方便的环境变量bin-wrappers/,但是这个特性没有记录。

将如何使用它的提示添加到CodingGuidelines(记录其他有用的环境设置的地方DEVELOPER)。

所以Documentation/CodingGuidelines现在包括:

您可以gdb使用速记围绕您的程序启动GIT_DEBUGGER

  • 运行GIT_DEBUGGER=1 ./bin-wrappers/git foo以简单地gdb按原样使用,或
  • 运行GIT_DEBUGGER="<debugger> <debugger-args>" ./bin-wrappers/git foo以使用您自己的调试器和参数。
    示例:(GIT_DEBUGGER="ddd --gdb" ./bin-wrappers/git log请参阅wrap-for-bin.sh。)
于 2018-05-23T20:32:02.050 回答