アットウィキロゴ
nisya @Wiki
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

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
記事メニュー
最近更新されたスレッド
ウィキ募集バナー