当我在gdb中运行核心文件时,gdb没有显示错误来自哪里或者哪个行 在导致问题的应用程序中。gdb不打印调试信息
我使用编译器选项-g -DDEBUG -D_DEBUG,但它似乎没有帮助。
任何帮助,将不胜感激,谢谢。
当我在gdb中运行核心文件时,gdb没有显示错误来自哪里或者哪个行 在导致问题的应用程序中。gdb不打印调试信息
我使用编译器选项-g -DDEBUG -D_DEBUG,但它似乎没有帮助。
任何帮助,将不胜感激,谢谢。
你可能会吹你的堆栈。例如,运行下面的程序
#include <stdio.h>
#include <string.h>
int main(void)
{
int a[10];
memset(a, 0, 100 * sizeof a[0]);
return 0;
}
,然后运行对所得core
收率
$ gdb oflow core [...] Core was generated by `./oflow'. Program terminated with signal 11, Segmentation fault. #0 0x0000000000000000 in ??()
的where
和bt
命令的输出gdb
后不是非常有用:
(gdb) where #0 0x0000000000000000 in ??() #1 0x0000000000000000 in ??() (gdb) bt #0 0x0000000000000000 in ??() #1 0x0000000000000000 in ??()
好的,问题解决了。我有一个递归函数返回一个字符串,但问题是没有什么被返回,但我仍然不明白为什么调试信息没有生成,当我一步一步通过代码它显示行号我正在步进通过,但我想,因为它得到一个错误的行失踪了?所以没有断点出错的地方?当它试图通过递归到函数来连接它时,使用“+ =”它会进入第二个调用,但是会在函数结束时崩溃,因为没有返回任何内容。但是不应该在它没有返回的行上的第一个函数调用上产生错误?
谢谢。
错误可能发生在库函数内部。你尝试过输入'backtrace'吗? – Artelius 2009-12-22 22:42:42