デバッガ (debugger)

デバッガの有効化と起動。

C言語

コンパイル、リンク コンパイル、リンク、ともに -g オプションを付ける。
デバッガからプログラム起動 $ gdb 対象プログラム
でデバッガを起動し、(ブレークポイントを設定するなどして)
(gdb) run
実行中のプログラムへのアタッチ ps コマンドなどで対象プログラムのプロセスIDを調べておき、
$ gdb 対象プログラム
でデバッガを起動し、(ブレークポイントを設定するなどして)
(gdb) attach プロセスID
終了 (gdb) quit

メニューに戻る

java

コンパイル、リンク コンパイルに -g オプションを付ける。
ant の build.xml では、<javac ... debug="true"/> とする。
デバッガからプログラム起動 $ jdb -classpath クラスパス -sourcepath ソースパス 対象メインクラス
でデバッガを起動し、stop in や stop at でブレークポイントを設定して、run で実行。
$ jdb -classpath classes -sourcepath srcs Target
jdb の初期化中です...
> stop in Target.main
ブレークポイント Target.main を保留しています。
クラスがロードされた後に設定されます。
> run
Target を実行します
uncaught java.lang.Throwable を設定しました
保留した uncaught java.lang.Throwable を設定しました
> 
VM が起動しました: 保留した ブレークポイント Target.main を設定しました

ブレークポイントのヒット: "スレッド=main", Target.main(), line=6 bci=0
6               ...

main[1]     

メニューに戻る

Python

$ python -m pdb target.py

実行開始した状態で先頭行で止まっているので、b などでブレークポイントを設定し、c で実行継続する。

utf-8 以外の文字コードで書かれていて、先頭に coding:euc-jp といった記述をしていると、encoding 関連ライブラリ内で止まってしまうので、b target.main や b target:123 というように指定関数や行を覚えておいてブレークポイントを設定する。

メニューに戻る

Ruby

$ ruby -rdebug target.rb

実行開始した状態で先頭行で止まっているので、b などでブレークポイントを設定し、c で実行継続する。

メニューに戻る