gpt4 book ai didi

使用 gdb 和 bazel(和 emacs)进行 C++ 调试

转载 作者:可可西里 更新时间:2023-11-01 17:34:32 31 4
gpt4 key购买 nike

我想调试用 Bazel 生成的可执行文件。 gdb 调试器丢失了 Bazel 生成的链接,无法向我显示 C++ 源代码。如何解决?

项目根目录是/home/.../Cpp/

./Cpp/
├── bazel-bin -> /home/picaud/.cache/bazel/_bazel_picaud...
├── bazel-Cpp -> /home/picaud/.cache/bazel/_bazel_picaud...
├── bazel-genfiles -> /home/picaud/.cache/bazel/_bazel_picaud...
├── bazel-out -> /home/picaud/.cache/bazel/_bazel_picaud...
├── bin
│   ├── BUILD
│   └── main.cpp
├── MyLib
│   ├── BUILD
│   ├── ....hpp
│   ├── ...cpp
└── WORKSPACE

最佳答案

第一步是使用 Debug模式生成可执行文件:

bazel build ... --compilation_mode=dbg -s

(-s 选项不是强制的,它只显示执行的命令,如果需要可以删除它)

从命令行调试 gdb:

您可以使用命令(从您的项目根目录)启动gdb:

gdbtui bazel-bin/bin/main

->一切正常,您应该看到您的 C++ 源代码。

错误的做法是:

cd bazel-bin/bin/
gdbtui main

在那种情况下,由于链接的原因,gdb 无法检索源代码。

从 Emacs 进行 gdb 调试:

照常做

M-x gdb 

在 emacs 提示中定义可执行文件的完整绝对路径:

gdb -i=mi /home/picaud/.../Cpp/bazel-bin/bin/main

现在在 gdb 缓冲区 中,您必须通过定义项目根目录(您的 WORKSPACE 文件所在的位置)的绝对路径来告诉 gdb 在哪里可以找到源代码:

set directories /home/picaud/.../Cpp

现在 emacs gdb 命令应该可以正常工作,您可以像往常一样进行调试。

(好吧,这是一个简单的修复,只是一个注释,也许可以帮助...)

关于使用 gdb 和 bazel(和 emacs)进行 C++ 调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45812725/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com