segfault:如何调试

时间:2013-02-21 08:17:42

标签: c++ segmentation-fault

我有一个接受连接的主进程,根据请求,“exec”是一个进程。该过程间歇性地崩溃并出现错误:

segfault at 11 ip 000000004daa242b sp 00000000ffdc4b18 error 4 in libc-2.5.so[4da32000+153000]

我该如何调试?来自libc的这个对我来说并没有太大帮助,甚至开始使用哪一段代码导致了这个问题。

任何指针?

1 个答案:

答案 0 :(得分:4)

指针:

0x00000001:首先要做的是查看是否可以使用调试器或边界检查器。如果复制崩溃,请查找以下内容(考虑到核心转储位于libc中):损坏的数据(具有奇怪值的callstack或参数)。

0x00000002:如果没有复制崩溃,请将日志记录添加到您的值中,这些值将传输到libc函数中,看看是否有任何内容。

0x00000003:如果日志记录没有提供任何内容,请开始禁用应用程序的某些部分,再加上人为增加负载,直到核心转储不再发生,或者每次都发生。需要注意的一件事:可能是您的核心转储仅在高压力下引起(这可以解释间歇性崩溃。看看您是否可以通过重复操作来增加代码某些部分的负载(即不是执行可能导致竞争条件的调用,而是一个接一个地运行100次并且看它是否)。