无法设置gdb断点 我用多个C++文件进行程序工作。我已经通过gdb运行了可执行文件以调试分段错误。随后,gdb backtrace提供了分段故障前的函数列表。后来,我尝试在文件中的特定行号上设置断点。(指定的路径是绝对路径)
但是,gdb给出了以下信息:无法设置gdb断点 我用多个C++文件进行程序工作。我已经通过gdb运行了可执行文件以调试分段错误。随后,gdb backtrace提供了分段故障前的函数列表。后来,我尝试在文件中的特定行号上设置断点。(指定的路径是绝对路径),c++,debugging,gdb,C++,Debugging,Gdb,但是,gdb给出了以下信息: No source file named /aia/r015/home/sathish/zfs_amr/src/zfslbminterfaced2q9.cpp. 但是,该位置确实存在这种特殊情况。这条信息到底意味着什么 这条信息到底意味着什么 该消息表示GDB不知道任何名为/aia/r015/home/sathish/zfs_amr/src/zfslbinterfaced2q9.cpp的源文件 这种情况可能有多种原因: 缺少此文件的调试信息,这可能是因为该文件在
No source file named /aia/r015/home/sathish/zfs_amr/src/zfslbminterfaced2q9.cpp.
但是,该位置确实存在这种特殊情况。这条信息到底意味着什么
这条信息到底意味着什么
该消息表示GDB不知道任何名为/aia/r015/home/sathish/zfs_amr/src/zfslbinterfaced2q9.cpp的源文件
这种情况可能有多种原因:
- 缺少此文件的调试信息,这可能是因为该文件在编译时未使用
-g
,也可能是因为后来删除了调试信息(可能是无意中)
- 在上面的路径中有一些符号链接,GDB通过完全解析的路径名知道该文件
- 文件实际上根本没有链接到可执行文件
- 共享库的文件部分,该共享库的符号尚未加载
- 等等
正如帕特所建议的,在zfslbinterfaced2q9.cpp:100
上设置断点更有可能起作用
如果这不起作用,信息源将告诉您GDB知道哪些文件
更新:
信息来源为空
这意味着应用程序根本没有任何调试信息
通常,发生这种情况的原因有两个:
- 您忽略了在链接行中指定
-g
(有些平台在编译和链接时都需要-g
)
- 在链接行的某个地方有一个“杂散的”
-s
(它会剥离最终的可执行文件)
尝试在没有完整路径的情况下指定源文件名,例如(gdb)break zfslbinterfaced2q9.cpp:100另一个想法:您是否使用调试信息编译程序,即使用-g标志?是的,该程序使用-g3和-ggdbinfo编译。信息源为“已读入符号的源文件”提供空白信息;以及“按需读入符号的源文件:”
No source file named /aia/r015/home/sathish/zfs_amr/src/zfslbminterfaced2q9.cpp.