我想用 gdb 调试一个由 shell 脚本调用的 c 程序。在这个shell脚本中,做了很多事情,设置了很多环境变量。
此 shell 脚本由 boost::process::launch 从 c++ 程序调用。
我可以更改 c++ 程序、shell 脚本和 c 程序本身,但不能更改此流程的体系结构。
有什么办法可以用gdb调试程序吗
如果没有解决方案,有没有办法在启动 shell 脚本之前转储所有环境设置,以便我可以使用这些设置启动相同的脚本以便稍后对其进行调试。我更喜欢便携的长期解决方案。
最佳答案
两个简单的选择:
程序启动后附加 gdb
gdb -p <pid of process>
如果在特定点停止它并不重要。插入
raise(SIGSTOP);
在你希望它停止的 C 程序中。进程停止后,附加 gdb,如1
,设置您需要的任何断点,然后向进程发送SIGCONT
发出信号 (kill -CONT <pid of process>
) 使其继续。
关于c++ - 如何使用从 shell 脚本调用的 gdb 运行程序,该脚本又通过 boost::process 从 c++ 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122997/