当回溯以零开始时,如何调试崩溃

How to debug crash, when backtrace starts with zero

本文关键字:调试 崩溃 何调试 回溯 开始时      更新时间:2023-10-16

我的长期运行的应用程序由于分段错误而随机崩溃。当尝试调试生成的coredump时,我遇到了wierd-stacktrace:

(gdb) bt full
#0 __memmove_ssse3 () at ../sysdeps/i386/i686/multiarch/memcpy-ssse3.S:2582
No locals.
#1 0x00000000 in ?? ()
No symbol table info available.

回溯从0x00000000开始是怎么回事
我可以做些什么来进一步调试此问题?我无法在gdb中运行它,因为它可能需要一周的时间才能崩溃。

通常,这意味着堆栈上的返回地址已被0覆盖,可能是由于溢出了堆栈上数组的末尾。您可以尝试在gcc或clang上使用地址消毒剂进行构建(如果您正在使用它们(。或者,您可以尝试运行valgrind,看看它是否会告诉您无效的内存写入。