Eclipse GDB无法找到源文件:调试加载C++共享库的Python代码遇阻
解决Eclipse GDB调试Python调用C++共享库时找不到源文件的问题
我之前也碰到过一模一样的场景,用Eclipse Oxygen搭配PyDev调试调用C++共享库的Python代码时,GDB找不到源文件确实挺头疼的,给你几个亲测有效的解决步骤:
1. 先确认C++共享库是带调试信息编译的
GDB要关联源文件,首先得有调试符号支撑。你得确保编译C++共享库的时候,加了调试编译参数:
- 用GCC/G++的话,一定要加
-g(想要更详细的调试信息可以用-ggdb3) - 绝对不能加
-O这类优化参数,代码优化会打乱行号和源文件的对应关系,GDB根本没法匹配
2. 给Eclipse的GDB配置源文件搜索路径
很多时候GDB找不到源文件,就是因为它不知道去哪找。你可以手动添加搜索路径:
- 打开「Run > Debug Configurations」,找到你用的C/C++ Attach调试配置
- 切换到
Debugger标签页,找到Source Lookup选项 - 点击
Add,选择「File System Directory」,然后添加你的C++源文件所在的根目录 - 记得勾选「Search subfolders」,这样子目录里的源文件也能被搜到
3. 检查Python进程的工作目录
如果Python运行的工作目录和你编译C++库时的路径不匹配,GDB也会找不到源文件:
- 打开PyDev的调试配置,确认
Working Directory是你的项目根目录(或者和编译C++库时的相对路径对应的目录) - 要是你编译C++库时用的是绝对路径,得确保现在这个路径还存在;如果是相对路径,就得保证Python进程的工作目录和编译时的相对路径一致
4. 手动在GDB控制台指定源文件路径
要是上面的配置都没用,你可以直接在Eclipse的GDB控制台里敲命令:
directory /path/to/your/cpp/source/files
这个命令会直接告诉GDB去指定目录找源文件,执行完再恢复调试,大概率就能定位到断点了
5. 确认Attach的是正确的线程/进程
有时候可能不小心attach到了错误的Python线程或者子进程,导致没法关联C++代码:
- 在PyDev暂停的时候,看一下Debug视图里的Python线程列表,选执行测试的那个线程去attach
- 另外要注意,pytest可能会启动子进程,attach的时候要选对对应的进程
内容的提问来源于stack exchange,提问作者xjsc16x
相关产品推荐
相关产品推荐

