こちらの記事シリーズはCプログラムの勉強やVS CODEなどの環境構築になります。今回は以下の項目を完成させます。
- 変数ウォッチの活用
- 逆アセンブリ表示
- メモリ確認
さ、FAを楽しもう!

Reference Link
コラボ1:変数ウォッチ
Run and Debug→WATCHで変数を監視できます。それはみなさんPLCで使ってるWATCH TABLEと近い機能です。
Expression to watch の欄で監視したい変数を入力します。
Done!WATCHでsrc_lenの現在値を確認できました。
下図のように、必要な変数をWATCH Tabにどんどん入れていきましょう。
VS CodeのWATCH Tabは本当に変数を監視してるかを確認したいので、Step Overをクリックし次のプログラムLineに進みます。
Done!dest_lenが56に変わりました。
コラボ2:逆アセンブリ
VS Code の「逆アセンブリ」機能は、デバッグ中に実行中のバイナリコードをアセンブリ命令として表示する機能です。つまり、ソースコードがなくても CPU が実際に実行している命令レベルで動きを追えるモードです。
何が見えるのか?
C や C++ などのソースをコンパイルした結果の 機械語を、人間が読めるアセンブリ表記に変換して表示します。それは関数やループ、変数アクセスなどが、mov, add, jmp などの命令として見え、また変数やメモリのアドレス、レジスタの値を直接確認できます。
いつ使う?
逆アセンブリは様々なケースで活躍できます。
- 最適化後の動作確認(コンパイラがどう変換したか見る)
- ソースコードが無いライブラリやバイナリの解析
- 難しいバグの原因調査(特にメモリ破壊やジャンプミスなど)
- 低レベル動作の学習(CPU命令やABIの理解)
表示方法
VS CodeでCtrl+Shift+Pでコマンドラインを開きます。
Open Disassembly Viewを開きます。
Done!VS Codeの逆アセンブリ画面が表示されました。
ソートコードを見ながらアセンブリを確認したい場合は、下図のICONをクリックします。
Done!VS Codeは現在下図のように右・左に画面を分けれるようになりました。
コラボ3:メモリをダンプしてみる
最後はVS CODE上でメモリ値を確認します。Terminal→DEBUG CONSOLEをクリックします。
下記のコマンドを実行し、メモリに格納されたinput変数値を確認できます。
–exec x/64bx input |
もちろん他の変数にも同じの操作です。
-exec x/64bx compressed |
こちらのコマンドで現在フレームの詳細を確認できます。
-exec info frame #0 main () at /home/threespc07/ws/zlib_hello/main.c:12 |
こちらのコマンドでプログラムの逆アセンブリを確認できます。
-exec disassemble |
こちらのコマンドでレジスタ値の確認も可能です。
-exec info registers |
最後の少し補足ですが、execには様々なオプションがあり、それによって表示する結果も分かります。詳しくはCHATGPTに聞いて下さい。
–exec x/64bx input |
部分 | 意味 |
-exec | VS Code から gdbコマンドを実行する指示 |
x | examine memory(メモリの中身を表示) |
/64b | 表示する長さと形式の指定64 バイトを b(byte) 単位で表示 |
x のあと b | byte単位で表示(他にもh=halfword, w=wordなどある) |
x のあと x | 表示形式が16進数(hex)(dなら10進、iなら命令など) |
input | どのアドレスをダンプするか(ここでは input 変数の先頭アドレス) |