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

ars*_*lan 16 c cygwin gdb breakpoints

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

./configure --enable-debug CFLAGS="-g -o0" 
make --debug=a
Run Code Online (Sandbox Code Playgroud)

我想在特定文件中调试stop.所以当我通过使用设置断点时

(gdb) break main.c:672
Run Code Online (Sandbox Code Playgroud)

它说:

No source file named main.c.
Run Code Online (Sandbox Code Playgroud)

即使我传递特定的函数名称(在main.c文件中)来打破.它说:这样的功能没有定义.

我当前的目录有这个main.c文件.我在Windows上使用Cygwin.当我使用时设置断点

(gdb) break main
Run Code Online (Sandbox Code Playgroud)

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

  1. 我怎样才能解决我的第一个问题?

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

Soh*_*mer 8

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

gcc filename.c -g 

gdb <binary name>
Run Code Online (Sandbox Code Playgroud)

是否完成了负载调试符号的搜索?

如果不:

gdb) symbol-file <path-of-symbol-file>
Run Code Online (Sandbox Code Playgroud)

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


wil*_*mpa 5

如果您正在编译-g但仍然无法设置断点,请尝试添加raise(SIGTRAP)您的main(),在 gdb 中运行该进程,然后在遇到SIGTRAP.