使用GDB调试从shell脚本调用的C++程序

Ven*_*tta 28 c++ debugging shell gdb

我有一个非常复杂的shell脚本,在其中调用我想通过GDB调试的C++程序.将c ++程序与shell分离是非常困难的,因为它有很多分支和很多环境变量设置.

有没有办法在这个shell脚本上调用GDB?看起来gdb需要我直接调用C++程序.

Vis*_*hal 20

除了@ diverscuba23提到的选项之外,您还可以执行以下操作:

gdb --args bash <script>
Run Code Online (Sandbox Code Playgroud)

(假设它是一个bash脚本.否则相应调整)

  • gdb从上面的方法开始,但我不能做任何事情,比如设置断点,因为它说"找不到符号表".怎么解决这个? (2认同)

div*_*a23 18

您可以选择两种方法:

  1. 直接在shell脚本中调用GDB.这意味着您没有标准输入和标准输出重定向.

  2. 运行shell脚本,然后将调试器附加到已经运行的C++进程,如下所示: gdb progname 1234 where 1234是正在运行的C++进程的进程ID.

如果你需要在程序开始运行之前做一些事情,那么选项1将是更好的选择,否则选项2是更清洁的方式.