我有一个关于在Linux中调试正在运行的C++程序的问题。如果编程已经运行并且不能被中断,那该怎么做。如何在Linux中调试正在运行的C++程序?
我可以找到三种方式,但对细节我不太了解,如果有人能够详细阐述它,我很感激。
1),我们可以通过指定进程ID
gdb -p PID
在这种情况下使用GDB,这是什么和attach PID
之间的区别?
2)我们可以使用PSTAT,但是,我使用Ubuntu,没有PSTAT,但只有mpstat的
似乎mpstat的没有提供太多的信息,也没有那么多的选择。
3)检查目录下./proc
详细信息,在这种情况下,只要到与PID的目录。但是,这是否应该手动完成?
我不认为我见过的'-p'选项。通过PID连接到一个进程是很常见的。究竟是什么问题呢? – Cascabel 2010-03-18 03:16:20
我不确定你的问题真的是什么。您似乎已经有调试C++程序的工作方法,因此您的标题是自我回答的,然后您的帖子主体会询问不相关的内容。你能否改写标题或问题更清楚? – ephemient 2010-03-18 03:33:27
我已经使用'strace -p PID'来跟踪正在运行的C++应用程序的系统调用。我发现调用'open()'失败,错误情况没有得到适当的处理。 – jschmier 2010-03-18 04:02:28