74

我想在第 45 行的文件 service.cpp 上的 gdb 中设置一个断点,我这样做:

gdb> break service.cpp:45

问题是我的应用程序中有很多 service.cpp 文件,它没有选择我感兴趣的文件。如何指定正确的 service.cpp 文件?

4

3 回答 3

110

指定完整路径:

gdb> break /Full/path/to/service.cpp:45
于 2011-03-11T18:44:56.087 回答
1

只需提供与其他文件不同的相同尾随组件:

filename:linenum 指定源文件文件名中的行 linenum。如果 filename 是一个相对文件名,那么它将匹配任何具有相同尾随组件的源文件名。例如,如果文件名是 `gcc/expr.c',那么它将匹配 /build/trunk/gcc/expr.c 的源文件名,但不匹配 /build/trunk/libcpp/expr.c 或 /build/trunk /gcc/x-expr.c。

https://www.zeuthen.desy.de/dv/documentation/unixguide/infohtml/gdb/Specify-Location.html

于 2021-03-31T14:16:48.850 回答
1

除了@Carl 的回答,
如果有人No source file named /Full/path/to/service.c喜欢@Tobias,请确保将调试-g标志添加到 main 和您要访问的源文件,例如main.cand foo.c

然后确保main使用已-g编译的operable文件,这可能意味着您必须更新并重新链接库,例如。

于 2020-11-20T22:04:28.023 回答