我在Ubuntu 9.10(Karmic Koala)上使用GCC 4.4.1和GDB 7.0-ubuntu。但是,当使用以下任何开关时,GCC都不会生成调试器信息:-g、-g3、-ggdb或-ggdb 3中的一个或多个。
所以当我用GDB运行程序时,就好像没有生成任何调试器信息一样。我在一个新的空文件夹中创建了非常简单的测试源文件。
以下是一个示例:
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char **argv)
{
char msg[4];
// Allocate 4 bytes on the stack
strcpy (msg, "Hello, World!");
// Overflow
printf ("%s\n", msg);
return 0;
}
下面是我的命令行序列:
gcc -g ./mytest.c -o mytest
gdb ./mytest
为了测试代码中的堆栈溢出问题,我之前已经打开了MALLOC_CHECK_=1。这是有效的,所以我得到了一个堆栈跟踪。但是,无论我是否包含调试信息,堆栈跟踪都没有什么不同。有了调试信息,我希望在GDB下看到一个文件的行号,指出问题发生的位置。然而,这并没有发生。
3条答案
按热度按时间9njqaruj1#
它工作得很好。我在我的电脑上运行了调试器。我不得不添加
我把这个文件命名为
debugger.c
。步骤如下:这将启动调试器
但是问题似乎不在于运行调试器,而在于获取代码失败的信息。可以使用
backtrace
来实现这一点。zwghvu4y2#
您需要:
永远不要把任何东西叫做“test”--它会与内置的shell冲突。按照惯例,“test.o”是一个目标文件的名称,而不是一个可执行文件的名称。
envsm3lx3#
你的评论说你跑了:
这可能不是你想要的。
是更有可能成功的。如果gdb ralphs在上面,那么你的gcc或gdb的安装有问题。