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

标签 c gdb cygwin breakpoints

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

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

我想在特定文件处停止调试。所以当我使用

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

它说:

No source file named main.c.

即使我将特定的函数名称(在 main.c 文件中)传递给 break 。它说:未定义此类功能。

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

设置断点时
(gdb) break main

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

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

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

最佳答案

当你编译你的.c文件时,确保你使用:

gcc filename.c -g 

gdb <binary name>

是否搜索加载调试符号?

如果不是:

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

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

关于c - 没有名为 main.c 的源文件。 gdb断点设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19151643/

相关文章:

核心转储 GDB "Backtrace stopped: frame did not save the PC"

c++ - C/C++ - 牛顿法的迭代计数器

haskell - 关于Cygwin中Haskell程序的stdout缓冲区的问题

cygwin - Git-bash (Cygwin) 和 vagrant-berkshelf

c - Node : How to send 16bit binary information

c - scanf() 将换行符保留在缓冲区中

emacs - 除了 C-x-o 之外,emacs gdb 中还有更好的方法在多个窗口之间切换吗?

c++ - 您使用什么调试器工具来查看 STL 容器的内容(在 Linux 上)

c++ - gdb 中未解析的调试符号

cygwin - 帮助安装 CUDA,在 PATH 中找不到 cl.exe