2009-12-22 207 views
1

当我在gdb中运行核心文件时,gdb没有显示错误来自哪里或者哪个行 在导致问题的应用程序中。gdb不打印调试信息

我使用编译器选项-g -DDEBUG -D_DEBUG,但它似乎没有帮助。

任何帮助,将不胜感激,谢谢。

+0

错误可能发生在库函数内部。你尝试过输入'backtrace'吗? – Artelius 2009-12-22 22:42:42

回答

2

你可能会吹你的堆栈。例如,运行下面的程序

#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 ??() 

wherebt命令的输出gdb后不是非常有用:

 
(gdb) where 
#0 0x0000000000000000 in ??() 
#1 0x0000000000000000 in ??() 
(gdb) bt 
#0 0x0000000000000000 in ??() 
#1 0x0000000000000000 in ??() 
0

好的,问题解决了。我有一个递归函数返回一个字符串,但问题是没有什么被返回,但我仍然不明白为什么调试信息没有生成,当我一步一步通过代码它显示行号我正在步进通过,但我想,因为它得到一个错误的行失踪了?所以没有断点出错的地方?当它试图通过递归到函数来连接它时,使用“+ =”它会进入第二个调用,但是会在函数结束时崩溃,因为没有返回任何内容。但是不应该在它没有返回的行上的第一个函数调用上产生错误?

谢谢。