是否可以边执行边调试程序?

Is it possible to debug program while being executed?

场景:

我执行了一个程序(监控软件),它需要很长时间才能完成(现在将近 30 分钟)。我知道,根据经验,它不应该花那么长时间,所以我试图找到一种方法,如果有的话,看看它发生了什么。

我试过的:

到目前为止,我唯一能做的就是

ps auxww | grep myprogram

所以我知道它在工作,并且

tail -f myprogram.log

所以我可以查看日志中是否有内容。到目前为止,只有一些小警告,它们无论如何都不会中断主程序。

问题:

那么,有没有什么办法可以在不重新启动程序的情况下,debug它以任何方式?

GNU 调试器gdb 接受选项 -p 以附加到正在运行的程序。你当然必须知道你的进程的 PID:

gdb -p PID