2012-04-03 45 views
0

我有一个由2个应用程序生成的核心转储 - >/usr/bin/python和/ usr/bin/app1。 我知道转储可以通过使用gdb分析由多个应用程序生成的核心转储

gdb /path/to/app /path/to/core 

进行分析,但有没有办法,包括在arguement两个应用程序?我试过gdb'/ usr/bin/python/usr/bin/app1'core.xxx,但看起来不对。

有什么建议吗?

回答

1

我认为你不能通过单一调用gdb来实现你想要的。但是您可以在不同的终端窗口中运行两次gdb。我做了不止一次,它运作得很好(当然,除了你自己的大脑可能稍微超载)。

a gdb进程只能调试一个程序,只有一个调试进程或(用于事后调试)一个core文件。

而给定的core文件是由一个单独的进程异常终止(而不是几个)产生的,所以我不明白你的问题。

显然,您在执行python的某些执行时可能会崩溃,可能是您的C代码出错。我建议有一个可调试的Python变种,也许通过安装python3-all-dbg包或类似的东西,然后使用gdb就可以了。当然,在启用调试的情况下编译插入Python的C代码。也许你违反了Python垃圾回收器的一些不变性。

+0

当我尝试使用gdb python core.xxx来调试核心文件时,我在调试器中看到一行说明由'/ usr/bin/python/usr/bin/app1'**生成的**核心。 我认为这是由2个进程生成的,但我开始认为app1正好是一个python进程,导致它产生这样的消息。 – avid 2012-04-03 14:03:12

+0

不,'gdb'只是显示了整个命令行(技术上说是传递给''main''的'argv'数组)。只有一个过程产生了核心转储。 – 2012-04-03 14:08:36

相关问题