vscodeでC/C++ デバッグの設定(GDB/MIインターフェース)

vscodeの ms-vscode.cpptools はGDB/MIインターフェイスを使用している。 そのためlaunch.jsonを適切に設定するには、GDB/MIインターフェイスの理解が必要となる。

GDBが解釈するインターフェースは2つある。 一つ目がGDBコマンド、もう一つがGDB/MIインターフェイス

GDBコマンド

gdbをtuiで使って実行している時に使うもの。 ステップ実行を例にすると nextやその省略形のnGDBコマンドに該当する

(nextは本来、下位プログラムの実行を再開し、 次のソース行の先頭に到達したところで停止するものだが理解しやすさを優先しここではステップ実行と説明する)

GDB/MIインターフェイス

GDB/MIインターフェイスについては以下を参照するとよい

www.asahi-net.or.jp

そこから拝借すると以下のような説明がある.

GDB/MIは、 GDBに対する行ベース・マシン用のテキスト・インターフェイスです。

GDBコマンドとGDB/MIインターフェイスの対応づけは上記リンクに記載してあるものが多い。

ステップ実行を行うGDBコマンドnextに対応するGDB/MIインターフェースは-exec-nextとなる。

なお全てのGDB/MIインターフェースのソースコードは以下にある。

sourceware.org Git - binutils-gdb.git/blob - gdb/mi/mi-cmds.c