gdb不打印调试信息

时间:2009-12-22 22:39:10

标签: gdb

当我在gdb中运行核心文件时,gdb不显示错误的来源或行 在导致问题的应用程序中。

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

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

2 个答案:

答案 0 :(得分:2)

你可能在吹嘘。例如,运行以下程序后

#include <stdio.h>
#include <string.h>

int main(void)
{
  int a[10];

  memset(a, 0, 100 * sizeof a[0]);

  return 0;
}

然后在生成的gdb收益

上运行core
$ gdb oflow core
[...]
Core was generated by `./oflow'.
Program terminated with signal 11, Segmentation fault.
#0  0x0000000000000000 in ?? ()

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

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

答案 1 :(得分:0)

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

感谢。