2017-08-22 26 views
3

Bazelで生成された実行ファイルをデバッグしたい。 gdbデバッガはBazelによって生成されたリンクで失われ、C++のソースコードを表示することはできません。それを修正するには?gdbとbazel(&emacs)を使ったC++デバッグ

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

(:

プロジェクトのルートディレクトリは、/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 
+0

(だけでなく、これは簡単に修正、多分助けることができるだけのノート...だった)Bazel + GTEST:https://stackoverflow.com/questions/45814669/c-project-with-bazel-and-gtest –

答えて

7

第一歩デバッグモードを使用して実行可能ファイルを生成することです-sオプションは、実行されたコマンドのみを表示することは必須ではなく、必要に応じて削除することができます)

コマンドラインから

GDBデバッグ:

あなたが開始することができます(プロジェクトのルートディレクトリから)このコマンドでGDB

gdbtui bazel-bin/bin/main 

- >すべてが大丈夫です、あなたがすべきあなたのC++ソースコードを見てください。

エラーがを行うには、次のようになりますので、リンクのような場合には

cd bazel-bin/bin/ 
gdbtui main 

を、GDBはソースコードを取得することができません。 Emacsのから

GDBデバッグ:gdbの中で今

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

実行ファイルへの完全な絶対パスを定義するプロンプトEmacsで通常の

M-x gdb 

のようにしてください。バッファの絶対パスを定義することによって、どこにソースを見つけるかgdbに指示する必要があります。 (ワークスペースファイルがある)プロジェクトのルートディレクトリ:

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

は今のEmacsのGDBコマンドが正常に動作するはずです、あなたはいつものようにデバッグすることができます。

は私もに関する質問/回答が書かれているデバッグ/テストに関する

関連する問題