任何时候我都有一个表现糟糕的过程(盯住CPU,或冻结,或以其他方式表现得很奇怪)我通常会杀了它,重启它并希望它不会再发生。
如果我想探索/理解问题(即调试其他人正在运行的程序),我的选择是什么?
我(一般地)知道像strace,lsof,dmesg等等。但是我不确定最好的方式开始高效地探索。
有没有人有系统的方法来解决这些问题?还是一般的建议?或正在杀戮&重新启动真的是最好的人能做到的吗?
感谢。
答案 0 :(得分:1)
如果你安装了有问题的程序的调试符号,你可以用gdb附加它,看看那里有什么问题。启动gdb,输入attach pid,其中pid是相关程序的进程ID(您可以通过top或ps找到它)。然后键入Ctrl-C以停止它。说回溯给你调用堆栈,这意味着它告诉当前正在运行哪行代码以及哪些函数称为当前正在运行的函数。