没有名为main.c的源文件。 gdb断点设置

时间:2013-10-03 05:44:23

标签: c gdb cygwin breakpoints

我正在使用gdb来调试C项目源代码。我编译如下:

./configure --enable-debug CFLAGS="-g -o0" 
make --debug=a

我想在特定文件中调试stop。所以当我使用

设置断点时
(gdb) break main.c:672

它说:

No source file named main.c.

即使我传递特定的函数名称(在main.c文件中)也要中断。它说:这种功能没有定义。

我当前的目录有这个main.c文件。我在Windows上使用Cygwin。当我使用

设置断点时
(gdb) break main

它在Cygwin文件的主要功能中设置了断点,而不是在我的源代码中。

  1. 如何解决我的第一个问题?

  2. 好奇,如果在Cygwin文件和我的源代码中有相同的函数名,如何避免第二个问题?

5 个答案:

答案 0 :(得分:7)

编译.c文件时,请确保使用:

gcc filename.c -g 

gdb <binary name>

搜索是否已完成加载调试符号?

如果不是:

gdb) symbol-file <path-of-symbol-file>

你可以在obj目录中找到符号文件

答案 1 :(得分:3)

Crucial是编译期间的gcc参数-g。

其他一切都是次要的。

请参阅breakpoints in GDB

答案 2 :(得分:3)

我之前也遇到过类似的问题。我刚刚删除了 .metadata 文件夹并再次导入了特定项目,并且运行良好。

答案 3 :(得分:2)

如果您正在使用-g进行编译但仍无法设置断点,请尝试在raise(SIGTRAP)中添加main(),在gdb中运行该过程,然后设置所需的断点再次点击SIGTRAP后。

答案 4 :(得分:1)

每当您必须使用GDB时,请在命令行中键入以下内容

gcc -g -o outputfile sourcefile.c

现在输入

gdb -tui outputfile

然后输入break命令