Linux环境下Bazel编译二进制文件GDB调试路径异常问题求助
问题原因
Bazel编译生成调试符号时,会把源码文件的**相对路径(以项目根目录为基准)**写入二进制文件。当你在bazel-bin/examples/hello_world目录启动GDB时,GDB会以当前目录为起点去匹配这些相对路径,自然找不到对应的源码文件;而在项目根目录启动GDB时,当前目录刚好和调试符号里的路径基准一致,所以能正常加载源码符号并查看代码。
解决方法
直接在二进制所在目录调试的话,有两种实用方案:
- 启动GDB时指定源码搜索根目录:
替换成你实际的项目根路径即可,GDB会自动去这个目录下匹配调试符号里的相对路径。gdb -d /你的项目根目录绝对路径 hello_world - 进入GDB后手动添加源码路径:
先正常启动GDB:
然后在GDB命令行输入:gdb hello_world
添加完成后,再设置断点就能正常定位到源码了。dir /你的项目根目录绝对路径
内容的提问来源于stack exchange,提问作者wssbygone
相关产品推荐
相关产品推荐

