-g
オプションをつけて、
ソースファイルに関する情報(シンボル情報)を埋め込む。
これを忘れると、ソースウィンドウに正しく表示されない。
gcc -g -o exefile sample.c
実行ファイル名を引数として起動する。
ddd ./exefiledddだけで起動し、 メニューの
[File]--[Open Program ...]
から実行ファイルを選択しても良い。
起動するとこんな画面が表示される。
初期状態では、少し使いにくいところがあるので、以下のような設定をしておくと
よいと思う。
メニューの
[Edit]--[Preferences ...]
を選択し、以下のように設定する。
[General]
タブの
[Supress X Warnings]
にチェックを入れる。[Source]
タブの
[Display Source Line Numbers]
にチェックを入れる。[Source]
タブの
[Tab Width]
スライダーを「4」にする。
[Source Indentation]
スライダーを「4」にする。
[Startup]
タブの、
[DDD Splash Screen]
,
[Tips of the day]
のチェックを外す。[Helpers]
タブの、
[Edit Sources]
を
「emacs +@LINE@ @FILE@」にする。
[Execution Window]
の
xterm を kterm にする。
起動時には、ソースウィンドウには main 関数を含むソースファイルが表示されているはずである。
表示されている場所は、 次に述べるプログラムの実行制御に応じて、変化するが、 次のようにlookupボタンを使用することで手動で表示箇所を変更することもできる。
b.c:2
と入力し、ボタンを押す。
ソース画面で、一時停止したい行の左側のの空白部分を左クリックすると、
lookupフィールドにファイル名と行番号が表示されるので、
ツールバーの「Break」ボタンを押すとブレークポイントが設定される。
ブレークポイントが設定されたことは、赤い「STOP」マークがつくのでわかる。
行の左側の空白部分を右クリックし、 メニューから「set breakpont」を選んでもよい。
ブレークポイントの設定ができない場合には、 -g オプション付きでコンパイルされていないことがほとんどである。
プログラムの実行を開始するには、コマンドツールのRunを押す。
プログラムを引数をつけて実行したい場合には、
メニュー
[Program]--[Run]
を選ぶ。
ダイアログが開くので、[Run with Arguments]のところに、
プログラムに渡す引数を設定する。
一度入力した引数は記憶してくれるので、
2回目以降は、ダイアログ中のArgumentsから選択すればよい。
最後に Run ボタンを押すと実行が行なわれる。
実行状況はdddの一番下のコンソール部に表示されるが、
デバッガ自身の出力メッセージと混在するので、わかりにくいかもしれない。
そのような場合には、
メニュー
[Program]--[Run in Execution Window]
にチェックを入れておく。
新しいウィンドウが開いて、その中でプログラムが実行される。
ブレークポイントに到達すると、実行が一時停止する。 現在停止している場所は、緑の矢印で示されるが、 この行はまだ実行されていないことに注意せよ。
緑の矢印がさす行を実行して次の行にすすむには、 コマンドツールの「Step」や「Next」を押す。
Step
---
1ステップ実行する。関数呼出しの場合には、関数の内部に入る。
Next
---
次の行まで実行する。関数呼出しの内部は一気に実行される。
ただし、関数内部にbreakpointが設定されていた場合には、そこで一時停止する。
単純な型の変数の値を見るには、マウスポインターを変数の上にのせて ちょっと待つ。マウスカーソルのところに変数の値がポップアップ されるはずである(ステータスラインのところにも表示される)。
変数名をクリックし、ツールバーの
Display
を押すと、その変数の値が
データディスプレイウィンドウに表示されるので、
ステップ実行しながら、値の変化を確認することができる。
ddd --pid=プロセスIDプロセスIDとは、
ps
コマンドで表示される番号である。
そのプログラムが-g
オプションつきでコンパイルされていて、
ソースファイルがカレントにあるならば、ソースリストもきちんと表示される。
Cのデバッグの場合には、dddはgdbのGUIとなっているが、 JAVAのデバッグの場合には、dddはjdbのGUIとなる。
jdbの機能があまり高くないことと、 dddのjdbへの対応状況がいまいちであることから、 gdbのときのような快適さは期待できない。
javacでコンパイルする時に、-g
をつける。
ddd を起動する時に、jdb を利用することを明示する-j
オプション
をつける。
javac -g sample.java java sample ddd -j sample