如何使用从shell脚本调用的gdb运行程序,而shell脚本又通过boost :: process从c ++调用

时间:2016-08-24 12:12:19

标签: c++ linux shell boost gdb

我想用shell脚本调用gdb来调试c程序。在这个shell脚本中,有很多事情已经完成,并且设置了许多环境变量。

这个shell脚本由来自c ++程序的boost :: process :: launch调用。

我可以更改c ++程序,shell脚本和c程序本身,但无法更改此流程的体系结构。

有没有办法,所以我可以使用gdb来调试程序。

如果没有解决方案,是否有办法在启动shell脚本之前转储所有环境设置,以便我可以使用这些设置启动相同的脚本以便稍后进行调试。我更喜欢便携式和长期解决方案。

1 个答案:

答案 0 :(得分:2)

两个简单的选择:

  1. 在程序开始后使用raise(SIGSTOP);附加gdb,如果在特定点停止它并不重要。

  2. 在C程序中插入1,使其停止。停止进程后,将{g}添加到SIGCONT中,设置所需的任何断点,然后向进程发送kill -CONT <pid of process>信号(getElementsByTagName("td");)以使其继续。