我有一个由两个应用程序生成的核心转储->/usr/bin/python和/usr/bin/app1。我知道可以分析垃圾
gdb /path/to/app /path/to/core
但是,有没有办法把这两种应用都包括在争论中呢?
我确实尝试过gdb'/usr/bin/python/usr/bin/app1'core.xxx,但这似乎不对。
有什么建议吗?
我认为单次调用gdb
无法实现您想要的目标。但是您可以在不同的终端窗口中运行两次gdb
。我不止一次这样做,而且效果很好(当然,除了你自己的大脑可能会稍微过载)。
一个gdb
进程只能调试一个程序、一个被调试的进程或(对于死后调试)一个单独的core
文件。
给定的core
文件是由一个进程(而不是几个进程)的异常终止产生的,所以我不理解你的问题。
显然,在python
的某些执行中出现了崩溃,可能是由于错误的C代码而导致的。我建议拥有一个可调试的Python变体,也许可以安装python3-all-dbg
包或类似的东西,然后在上面使用gdb
。当然,在启用调试的情况下编译插入Python的C代码。也许您违反了Python垃圾收集器的一些不变量。