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

标签 c++ linux shell boost gdb

我想用 gdb 调试一个由 shell 脚本调用的 c 程序。在这个shell脚本中,做了很多事情,设置了很多环境变量。

此 shell 脚本由 boost::process::launch 从 c++ 程序调用。

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

有什么办法可以用gdb调试程序吗

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

最佳答案

两个简单的选择:

  1. 程序启动后附加 gdb gdb -p <pid of process>如果在特定点停止它并不重要。

  2. 插入 raise(SIGSTOP);在你希望它停止的 C 程序中。进程停止后,附加 gdb,如 1 ,设置您需要的任何断点,然后向进程发送 SIGCONT发出信号 ( kill -CONT <pid of process>) 使其继续。

关于c++ - 如何使用从 shell 脚本调用的 gdb 运行程序,该脚本又通过 boost::process 从 c++ 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122997/

相关文章:

linux - 具有进程替换的 shell 脚本中的语法错误

c++ - 在 WinAPI 函数中使用 std::wstring:并非所有文本都已发送

c++ - 私有(private)/公共(public) header 示例?

c++ - 重载赋值运算符与提供隐式构造函数

python - PyQt 应用程序在 Linux 上卡住屏幕,在 Windows 上正常

linux - 使用 "top"命令了解 Linux 中的 CPU 使用情况以了解 VLC 使用情况

linux - 如何查找特定软件何时安装在服务器上?

linux - shell 脚本如何判断它是否在支持 256 色的 xterm 窗口中运行?

MySQLSHOW 抑制 Bash 脚本中的警告

c++ - 在 C++ 代码中处理 Angle Wrap