我想在第 45 行的文件 service.cpp 上的 gdb 中设置一个断点,我这样做:
gdb> break service.cpp:45
问题是我的应用程序中有很多 service.cpp 文件,它没有选择我感兴趣的文件。如何指定正确的 service.cpp 文件?
我想在第 45 行的文件 service.cpp 上的 gdb 中设置一个断点,我这样做:
gdb> break service.cpp:45
问题是我的应用程序中有很多 service.cpp 文件,它没有选择我感兴趣的文件。如何指定正确的 service.cpp 文件?
指定完整路径:
gdb> break /Full/path/to/service.cpp:45
只需提供与其他文件不同的相同尾随组件:
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
除了@Carl 的回答,
如果有人No source file named /Full/path/to/service.c
喜欢@Tobias,请确保将调试-g
标志添加到 main 和您要访问的源文件,例如main.c
and foo.c
。
然后确保main
使用已-g
编译的operable
文件,这可能意味着您必须更新并重新链接库,例如。