代码之家  ›  专栏  ›  技术社区  ›  sellibitze

使用代码块和自定义生成进行调试(boost.build)

  •  1
  • sellibitze  · 技术社区  · 15 年前

    我用code::blocks和mingw在winxp框上已经有一段时间了。但自从我开始使用boost.build作为“自定义生成工具”以来,我在从code::blocks设置断点时遇到了问题。当我启动调试会话时,代码::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之前,调试曾经起作用。所以,我真的不知道该去哪里。该怪谁?我,boost.build,code::blocks,还是gdb?我是否错过了一些明显的编译器选项或cb项目设置w.r.t.搜索路径或其他什么?

    我想继续使用boost.build-as-build工具和code::blocks进行编辑和作为gdb前端。如有任何帮助,我们将不胜感激。

    2 回复  |  直到 15 年前
        1
  •  1
  •   sellibitze    15 年前

    我启用了code::block的调试日志来查看哪些命令被传递到gdb,似乎是code::block s有问题。它发送一个

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

    命令到gdb,这是“dos mangled”目录名。GDB不喜欢这样。所以,对我来说,它看起来像是code::blocks中的一个bug。

        2
  •  0
  •   Employed Russian    15 年前

    试试这个:

    (gdb) break main.cpp:185
    

    如果 GDB 不知道 main.cpp 要么,然后 Boost.Build 未生成调试版本。
    机会是 增强构建 编译源时未使用绝对路径名。