nisya @Wiki
GDB
最終更新:
匿名ユーザー
-
view
使用するにあたっての注意事項
・起動時に表示されるソースは、コンパイル時に意識しているソース名で、 かつ、同一ディレクトリにあることが条件になっている模様。 ・LMを入れ替えて新旧の試験をする際には、ソースも入れ替えておく必要アリ (ソースを入れ替えなくとも実行は可能ですが、例えば、旧LMと 新ソースの組み合わせとなった場合、実際に実行中の行と表示される ソース行が食い違うことになりますので混乱します)。 ・「list 行番号」で行番号近辺のソースを表示させることができます。 便利ですが、現在行まで動いてしまうので、次のアクション時には 注意が必要です。 このコマンドを使用した後は、「info line」で現在行を再確認することを お勧めします。
コンパイルオプション
cc 時に -g オプションが必要 > cc -g progname.c -o 実行形式名(LM名)
起動方法
> gdb 実行形式名(LM名)
実行手順
1.まずブレイクポイントを設定。 > b 100 2.実行(入力パラメータなしの場合) > r 3.実行(入力パラメータ有りの場合) > r argv1 argv2 argv3 ・・・・
その他コマンド
実行
> run argv1 argv2 ... :実行 > info args :引数表示 > n :next 1行実行。関数とばし(S) > s :step 1行実行。関数の中に入る。
ブレイクポイント
> list :現在位置のソースを表示
set listsize 99 で表示するソースの行を変えれる。
> b *.c:line :*.c の line行
> b 関数名 :関数名の先頭
> info b :ブレーク・ポイントの表示
> delete 番号 :ブレーク・ポイントの解除
その他
> info line :現ライン "inf li"まで省略可
> c :cont 実行再開。
> j line :line へジャンプ
> up :関数の呼び出し側に戻る
> down :upの反対
> call 関数(引数) :関数呼び出し。インタプリタ感覚
> list 行番号 {,行番号} :ソース・プログラムの表示
> list 関数名
> p 式 :print 式の値の表示
> p/形式 式 :指定された形式で式の値の表示
> x 番地 :メモリの内容の表示
> x/形式 番地 :指定された形式でメモリの内容の表示
※形式指定方法(数 形式文字 サイズ)
数:何回繰り返す回数(xのみ)
形式文字(x,print両方) :
c(char) s(string), x(hex), t(binary), o(octal),
d(decimal), u(unsigned decimal), t(binary),
f(float), a(address), i(instruction),
サイズ(xのみ) :
b(byte), h(halfword, 2バイト), w(word, 4バイト), g(giant, 8バイト)
> where :バックトレース
> bt :バックトレース (where と同じ)
> リターン :前のコマンドの繰返し
> help :使い方の表示
長い項目に値を入力したいとき、memset()・memcpy()が使用可
ex. char buf[256]; に値を入力したい場合 > p memset(buf, 0x00, sizeof(buf)) > p memcpy(buf, "1234567890", 10)
参考LINK
http://www.h7.dion.ne.jp/~matsu/feature/gdb/index.html