最近用在开发一个 agent 程序,需要支持 Linux、 FreeBSD 及 Windows 等操作系统。 复杂的机器环境,导致一系列诡异问题,尽管代码发布前在不少测试机上验证过。
Python
程序吐 coredump
文件怎么办?
很多人会想到用 gdb
加载 coredump
文件,然后查看 信号 及 堆栈 信息,据此分析原因。
堆栈信息在调试中非常有用,可别忘了,待调试的是 Python
代码,而 gdb
提供的是 C
堆栈信息!
难道要撸 Python
源码,然后分析各种核心数据结构吗?
有什么方式可以查看到 Python
堆栈信息吗?
还遇到过另一个问题,一个 Python
进程突然间陷入死循环,所有其他线程都调度不到。
遇到这种情况,首先可能需要知道死循环到底在干什么。
如何获悉呢?可能用 strace 跟一下系统调用可以看出一点端倪。
但是一个堆栈信息更为具体更有说服力,就算是只有 C
堆栈信息有时也是足以说明问题的。
gdb 就可以解决以上难题(其实远不止),接下来,我们一起看看具体要怎么操作吧~