-1

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

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

我该如何调试呢?来自 libc 的这对我没有太大帮助,甚至无法确定是哪段代码导致了这种情况。

任何指针?

4

1 回答 1

4

指针:

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

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

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

于 2013-02-21T08:36:39.217 回答