【GDB】基本コマンド ================== [[devtool:jtag:openocd:start]]は、GDBにとってGDBサーバの役割を果たす。ポート`3333`を使うので、接続するには下記コマンド。 ``` (gdb) target remote localhost:3333 ``` よく使うコマンド -------------- ### ソース・ファイルの選択とロード ^コマンド ^内容 ^ |`file filename` |現在表示しているソースファイルとは別のソースファイル`filename`を選択 | |`load` |選択したオブジェクトファイルをターゲットにロードする(対応していればフラッシュROMにも書き込む) | ### ブレーク・ポイントの設定や解除 ^コマンド ^内容 ^ |`break` |ファイル名と関数名,行番号などでブレーク・ポイントの設定を行う | |`clear` / `delete` |ブレーク・ポイントの解除を行う | |`disable` / `enable` |ブレーク・ポイントの無効化,有効化を行う | |`display` |プログラムが停止した時に自動的に表示する変数や式を指定する | ### プログラムの実行や停止 ^コマンド ^内容 ^ |`c(continue)` |停止しているプログラムを続行する | |`n(next)` |停止しているプログラムの次の1行を実行する。関数呼び出しを1行として関数には入らない| |`s(step)` |停止している次の1行を実行する。関数の呼び出しで関数の中に入る | |`Ctrl-C` |現在実行中のプログラムを強制ストップする。ブレーク・ポイントに止まった場合などに使用| ### プログラムの内容を表示する ^コマンド ^引き数 ^内容 ^ |`info` |`break` |設定したブレーク・ポイントを表示する | |`info` |`registers`|レジスタを表示する | |`info` |`locals` |ローカル変数を表示する | |`info` |`arg` |関数の先頭で引き数を表示する(関数の先頭にとまったとき) | |`info` |`stack` |スタックを表示する | |`info` |`frame` |現在のC関数のフレーム構造を表示する | ### プログラムを表示する ^コマンド ^内容 ^ |`list` |現在行のまわり10行分を表示する。範囲指定も可能 | |`disassemble` |メモリ上のプログラムの逆アセンブル表示を行う | |`backtrace` |関数の呼び出し元をトレースする | ### データを表示する ^コマンド ^内容 ^ |`print` |変数やポインタの表示を行う。$をレジスタ名の先頭につけることでレジスタ表示も可能 | |`x` |メモリ番地の表示を行う | ### その他 ^コマンド ^内容 ^ |`quit` |GDBを終了する | |`help` |トップ・レベルのコマンドの詳細を表示する。`help info`とすることで、個別コマンドの詳細を示す | 参考 ---- 1. 「プロなみJTAGデバックを個人でも! オープンソースOpenOCD入門」CQ出版社 Interface誌 2015年3月号 p96〜p107 2. [[http://mikilab.doshisha.ac.jp/dia/seminar/2002/pdf/gdb.pdf#search=%2527gdb+%25E5%25AE%259F%25E8%25A1%258C%25E9%2596%258B%25E5%25A7%258B%25E3%2581%2599%25E3%2582%258B+%25E3%2582%25A2%25E3%2583%2589%25E3%2583%25AC%25E3%2582%25B9%2527|第1回 GDB ゼミ]] 3. [[http://www.acha-porute-piipo.com/anything/gdb.html|GDBコマンド]] 4. [[http://inaz2.hatenablog.com/entry/2014/05/03/044943|gdbの使い方のメモ]