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
最初のステップは、デバッグモードを使用して実行可能ファイルを生成します。
bazel build ... --compilation_mode=dbg -s
(-sオプションは必須ではなく、実行されたコマンドのみを表示します。必要に応じて削除できます)
コマンドラインからのgdbデバッグ:
thisコマンドで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 bufferで、プロジェクトのルートディレクトリ(WORKSPACEファイルがある場所)への絶対パスを定義して、ソースの場所をgdbに通知する必要があります。
set directories /home/picaud/.../Cpp
これで、emacs gdbコマンドが正しく機能するようになり、通常どおりデバッグできます。
(まあこれは簡単な修正でした、おそらく助けることができるメモです...)