Debugging 使用代码块和定制(Boost.Build)进行调试

Debugging 使用代码块和定制(Boost.Build)进行调试,debugging,gdb,codeblocks,boost-build,Debugging,Gdb,Codeblocks,Boost Build,我在WinXP机器上使用代码::Blocks和MinGW已经有一段时间了。但自从我开始使用Boost.Build作为“定制构建工具”以来,我在设置代码::块的断点时遇到了麻烦。启动调试会话时,Code::Blocks尝试将所有断点发送到GDB,但GDB似乎无法识别源文件名: Debugger name and version: GNU gdb 6.6 No source file named C:/xxx/CB-Workspace/altomo/src/main.cpp. Breakpoint

我在WinXP机器上使用代码::Blocks和MinGW已经有一段时间了。但自从我开始使用Boost.Build作为“定制构建工具”以来,我在设置代码::块的断点时遇到了麻烦。启动调试会话时,Code::Blocks尝试将所有断点发送到GDB,但GDB似乎无法识别源文件名:

Debugger name and version: GNU gdb 6.6
No source file named C:/xxx/CB-Workspace/altomo/src/main.cpp.
Breakpoint 1 ("C:/xxx/CB-Workspace/altomo/src/main.cpp:185) pending.
(xxx只是一个删节)

为了查看发生了什么,我手动启动了GDB并尝试设置断点:

(gdb) break main.cpp:181
Breakpoint 1 at 0x40231e: file src/main.cpp, line 181.
(gdb) break src/main.cpp:182
Breakpoint 2 at 0x402331: file src/main.cpp, line 182.
(gdb) break "C:/xxx/CB-Workspace/altomo/src/main.cpp:185"
Breakpoint 3 at 0x402513: file src/main.cpp, line 185.
一切似乎都很好。我还发现在所有的*.o文件中都有完整的路径

奇怪的是,在我切换到Boost.Build之前,调试就已经开始了。所以,我真的不知道去哪里找。谁该受责备?Me、Boost.Build、Code::Blocks还是GDB?我是否错过了一些明显的编译器选项或CB项目设置w.r.t.搜索路径或其他内容

我希望继续使用Boost.Build as Build工具和Code::Blocks进行编辑和作为GDB前端。非常感谢您对解决此问题的任何帮助。

请尝试以下方法:

(gdb) break main.cpp:185
如果
GDB
也不知道
main.cpp
,那么
Boost.Build
不会生成调试版本。
很可能是Boost。编译源代码时,Build没有使用绝对路径名。

尝试以下方法:

(gdb) break main.cpp:185
如果
GDB
也不知道
main.cpp
,那么
Boost.Build
不会生成调试版本。

很可能是
Boost。编译源代码时,Build
没有使用绝对路径名。

我启用了code::Block的调试日志,以查看传递给GDB的命令,问题似乎出在code::Blocks上。它发出一个信号

directory C:/XXX~1/CB-WOR~1/altomo

命令发送到GDB,GDB是“DOS损坏”目录名。GDB不喜欢这样。因此,在我看来,这似乎是Code::Blocks中的一个bug。

我启用了Code::Block的调试日志,以查看哪些命令被传递到GDB,而问题似乎出在Code::Blocks上。它发出一个信号

directory C:/XXX~1/CB-WOR~1/altomo

命令到GDB,它是“DOS MANAGED”目录名。GDB不喜欢这样。因此,在我看来,它看起来像是Code::Blocks中的一个bug。

手动break main.cpp:185break main.cpp:181一样有效,这是我已经尝试过的(见上文)。手动break main.cpp:185break main.cpp:181一样有效(见上文)。