fc2ブログ

2024.11 «  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - - - - » 2025.01
TOP > Rails 2.0・その10(ruby-debugコマンドマニュアルv.0.10.0 デバッグの方法が簡単に)

 ← Rails勉強会@東京第27回へ参上つかまつるの巻 | TOP | Rails 2.0・その9(ブラウザのロード時間を短くなったように体感させる)

Rails 2.0・その10(ruby-debugコマンドマニュアルv.0.10.0 デバッグの方法が簡単に)  

2008年02月15日 ()
Rails 2.0 の場合は以下のようにするだけで、本当に簡単にデバッグを始められます。

1.gem install ruby-debug
 ↑このコマンドは ruby-debug がインストールされていない最初の1回だけ。root 権限のユーザで実行。
2.debugger(view の場合は <% debugger %>) をデバッグを開始したい行に、ソースコードに直接書く。
3.script/server -u



デバッグを開始した後、debugger と書いた行の処理が走ったらそこで処理は一旦中断します。

すかさず先ほど script/server -u をしたコンソールに、(rdb:2) などと表示されるので、デバッグコマンドを打ちます。

デバッグの流れとしては、

l=
で現在の行を確かめて

pp 変数名
で変数の値を確かめて

e 変数名="honyarara"
でこの変数の値を変更してみたりした後

n
でステップ実行したり

s
でステップインしたり

fin
でステップアウトしたりして

c
で次のブレークポイントまで実行させる感じでしょうか。


使えるデバッグコマンド一覧(ruby-debug-0.10.0)は以下の通りです。意訳でスマソ。ruby-debug-0.9.3のコマンド一覧はこちらからどうぞ。


アルファベット順
backtrace break catch continue delete disable
display down enable eval exit finish
frame help info irb list method next
p pp ps putl quit reload restart
save set show source step thread
trace undisplay up var where
------------------
用途順
★変数の値を見たい
★ソースコードやデバッグ中の行周辺を見たい
★ブレークポイントを追加・削除したい
★ステップ実行をしたい
★一気に実行したい
★watch式のように、ある値を繰り返し見たい
★各ブレークポイント・watch式の有効・無効の切り替えをしたい
★全部の変数について一覧したい
★例外をキャッチしたい
★デバッグ中のプログラムの情報を表示したい
★デバッガの情報を表示したい
★デバッガの情報を設定したい
★スレッドを操作したい
★スレッドにトレースモードを設定したい
★今の状態をセーブしたい・ロードしたい
★irbを使いたい
★デバッグを再起動したい
★デバッグをやめたい
★ヘルプを使いたい
★その他
------------------
★変数の値を見たい (↑topへ)
■p expression
■e[val] expression
expression の値を評価して表示する。
注:自動評価をオンにするには、set autoeval を使う。(筆者注:自動評価とは、いきなり変数名をコマンドラインに打ってリターンを押すと、eval 変数名 とした場合と同じ効果があるというようなことです。)
■pp expression
expression の値を見やすい形で表示する。
■putl expression
expression の値を見やすい形で表示する。
expression が配列の場合、配列のそれぞれの要素自身をそのままの順序で表示する。
■ps expression
expression の値を見やすい形で表示する。
expression が配列の場合、配列のそれぞれの要素自身をソートしてから表示する。
■m[ethod] i[nstance] <オブジェクト名>
オブジェクトのメソッドを表示する。
■m[ethod] iv <オブジェクト名>
オブジェクトのインスタンス変数を表示する。
■m[ethod] <クラス名|モジュール名>
クラスやモジュールのインスタンスメソッドを表示する。

★ソースコードやデバッグ中の行周辺を見たい (↑topへ)
■l[ist]
次のページのソースコードを表示する。
■l[ist] -
前のページのソースコードを表示する。
■l[ist] =
現在のデバッグしている行周辺のソースコードを表示する。
■l[ist] nn-mm
行 nn から行 mm までのソースコードを表示する。
オートリストをオンにするには、set autolist を使う。
■w[here]
■bt
■backtrace
フレーム(スタック)を表示する。
■up[移動数]
上位のフレーム(スタック)へ移動する。
移動数が指定された場合、その個数だけ上位のフレームへ移動する。
移動数が指定されない場合、1個だけ上位のフレームへ移動する。
■down[count]
下位のフレーム(スタック)へ移動する。
移動数が指定された場合、その個数だけ下位のフレームへ移動する。
移動数が指定されない場合、1個だけ下位のフレームへ移動する。
■f[rame] フレーム番号
指定されたフレーム番号のフレームへ移動する。
フレーム番号に負の数を指定すると、反対側の端から数えることになる。なので、frame -1 と指定すると、一番上位のフレームへ移動し、frame 0 と指定すると、一番下位のフレームへ移動する。

★ブレークポイントを追加・削除したい (↑topへ)
■b[reak] [ファイル名:][行番号] [if expr]
指定されたファイル名の行番号にブレークポイントを設定する。
(※筆者注:ファイル名は、ルートから、つまり app/controllers/... のようなパスで指定する。)
ファイル名が省略された場合、現在デバッグ中のファイル名が使用される。
ファイル名と行番号が省略された場合、現在デバッグ中の行が使用される。
if expr が指定されたら、expr == true の時だけブレークポイントを設定する。
■b[reak] クラス名(.|#)メソッド名 [if expr]
指定されたクラス名のメソッドの先頭にブレークポイントを設定する。
if expr が指定されたら、expr == true の時だけブレークポイントを設定する。
■del[ete][ ブレークポイント番号...]
指定したもしくは全てのブレークポイントを削除する。
ブレークポイント番号を省略した場合は、全てのブレークポイントを削除する。

★ステップ実行をしたい (↑topへ)
■n[ext][+]?[ 回数]
ステップオーバーする。
回数が指定されていたら、指定した回数だけステップオーバーする。
+ が指定されていたら、強制的に次の行へ移動する。
■s[tep][+]?[ 回数]
ステップインする。
回数が指定されていたら、指定した回数だけステップインする。
+ が指定されていたら、強制的に次の行へ移動する。
■fin[ish]
ステップアウトする。

★一気に実行したい (↑topへ)
■c[ont[inue]][ 行番号]
プログラムの最後までか、次のブレークポイントか、指定された行番号までプログラムを実行する。

★watch式のように、ある値を繰り返し見たい (↑topへ)
■disp[lay]
ウォッチ式リストを表示する。
■disp[lay]
expression をウォッチ式リストに加える。
■undisp[lay][ ウォッチ式番号]
プログラム停止時に表示されるウォッチ式を無効にする。
停止するウォッチ式番号を指定することができる。
引数を指定しない場合は、全てのウォッチ式を無効にする。
delete display はこのコマンドと同じ効果がある。(筆者注:と書いてあるがこの delete display コマンドはうまく動かないんですけどorz)
info display で、現在設定されているウォッチ式の番号を見ることができる。(筆者注:undisplay で無効にしたウォッチ式番号も表示します。)

★各ブレークポイント・watch式の有効・無効の切り替えをしたい (↑topへ)
■enable
何かを有効にする。
disable コマンドの効果をキャンセルするために使われる。
以下のオプションが使える。
--------------
enable breakpoints ブレークポイント番号
 指定したブレークポイントを有効にする。
enable display ウォッチ式番号
 プログラムが停止したときに指定したウォッチ式が表示されるようにする。(筆者注:nextコマンドとかcontinueコマンドの直後のことです)
--------------
■disable
何かを無効にする。
無効にした項目は消え去る訳ではありません。次に有効になるまで無効なままなだけです。
enable コマンドで再び有効にすることができます。
以下のオプションが使える。
--------------
disable breakpoints ブレークポイント番号
 指定したブレークポイントを無効にする。
disable display ウォッチ式番号
 プログラムが停止したときに指定したウォッチ式が表示されないようにする。(筆者注:nextコマンドとかcontinueコマンドの直後のことです)
--------------

★全部の変数について一覧したい (↑topへ)
■v[ar] c[onst] <クラス名|モジュール名>
クラスやモジュールの定数を表示する。
■v[ar] g[lobal]
グローバル変数を表示する。
■v[ar] i[nstance]
オブジェクトのインスタンス変数を表示する。
■v[ar] l[ocal]
ローカル変数を表示する。

★例外をキャッチしたい (↑topへ)
■cat[ch]
キャッチポイントを表示する。
一番最後に指定したキャッチポイント1つだけが有効となる。
■cat[ch] <例外名>
例外名を指定してキャッチポイントを設定する。

★デバッグ中のプログラムの情報を表示したい (↑topへ)
■info
デバッグ中のプログラムの情報を表示するための汎用コマンド
以下のオプションが使える。
--------------
info args
 現在のスタックフレームに渡された引数
info breakpoints
 ユーザが設定できるブレークポイント状況
info display
 プログラムが停止したときに表示されるウォッチ式リスト
info file
 読み込んだファイル名とタイムスタンプ(筆者注:と書いてありますがタイムスタンプは表示されないんですけど)
info global_variables
 グローバル変数
info instance_variables
 インスタンス変数
info line
 現在位置のファイル名と行番号
info locals
 現在のスタックフレームのローカル変数
info program
 プログラムの実行状況
info stack
 スタックのバックトレース(筆者注:where コマンドと同じようです。)
info threads
 現在分かっているスレッドのID
info variables
 ローカル変数とインスタンス変数
--------------

★デバッガの情報を表示したい (↑topへ)
■show
デバッガの各情報について表示する。
以下のオプションが使える。
--------------
show annotate
 情報逐次表示レベル
show args
 プログラムがデバッグ開始されたときに渡す引数リスト
show autoeval
 コマンドとして存在しない命令を、とにかく評価するかどうか
show autolist
 ブレークポイントにきたら必ず list コマンドを発行するかどうか
show autoirb
 停止したら必ず irb を開始するかどうか
show autoreload
 ソースコードが変更されたら読み込み直すかどうか
show basename
 ファイル名だけを表示するようにするかどうか
show callstyle
 フレームスタックのコールパラメータがどのように表示されるか
show forcestep
 next と step コマンドを使うと必ず次の行へ移動するかどうか
show fullpath
 フレーム内でファイル名をフルパスで表示するかどうか
show history
 コマンド履歴の設定について
show keep-frame-bindings
 それぞれの呼び出しでフレームのバインディングを保存するかどうか
show linetrace
 実行行ごとのトレース情報を表示するかどうか
show linetrace+
 重複した行は省略しながら実行行ごとのトレース情報を表示するかどうか
show listsize
 ソースコードをいっぺんに何行表示するのか
show port
 サーバーのポート番号
show trace
 eval コマンドで例外が発生したときにスタックトレースを表示するかどうか
show version
 デバッガのバージョン
show width
 デバッガが使用する1行の幅
--------------

★デバッガの情報を設定したい (↑topへ)
■set
デバッグ環境の各設定を変更する。
ブール値は、on, off, 1, 0 のいずれかを取る。
これらの設定値は show コマンドで見ることができる。
以下のオプションが使える。
--------------
set annotate [0-3]
 情報逐次表示レベルを設定する。
set args <引数>
 プログラムがデバッグ開始されたときに渡す引数リストを設定する。
set autoeval ブール値
 コマンドとして存在しない命令を、とにかく評価する。
set autolist ブール値
 ブレークポイントにきたら必ず list コマンドを発行する。
set autoirb ブール値
 停止したら必ず irb を開始する。
set autoreload ブール値
 ソースコードが変更されたら読み込み直す。
set basename ブール値
 ファイル名だけを表示するようにする。
set callstyle (short|last|tracked)
 フレームスタックのコールパラメータがどのように表示されるかを設定する。
set forcestep ブール値
 next と step コマンドを使うと必ず次の行へ移動する。
set fullpath ブール値
 フレーム内でファイル名をフルパスで表示する。
set history save ブール値
 コマンド履歴を記録するかどうかを設定する。
set history size 履歴数
 指定した履歴数だけコマンド履歴を記録する。
set keep-frame-bindings ブール値
 それぞれの呼び出しでフレームのバインディングを保存する。
set linetrace ブール値
 実行行ごとのトレース情報を表示する。
set linetrace+ ブール値
 重複した行は省略しながら実行行ごとのトレース情報を表示する。
set listsize 行数
 ソースコードをいっぺんに何行表示するのかを設定する。
set trace ブール値
 eval コマンドで例外が発生したときにスタックトレースを表示するかどうかを設定する。
set width 数値
 デバッガが使用する1行の幅
--------------

★スレッドを操作したい (↑topへ)
■th[read] [cur[rent]]
現在のスレッドを表示する。
■th[read] l[ist]
全てのスレッドを表示する。
■th[read] stop <スレッド番号>
指定されたスレッド番号のスレッドを停止する。
■th[read] resume <スレッド番号>
指定されたスレッド番号のスレッドを再開する。
■th[read] [sw[itch]] <スレッド番号>
指定されたスレッド番号へ、スレッドコンテキストを切り替える。

★スレッドにトレースモードを設定したい (↑topへ)
■tr[ace] (on|off)
現在のスレッドのトレースモードを切り替える。
■tr[ace] (on|off) all
全てのスレッドのトレースモードを切り替える。

★今の状態をセーブしたい・ロードしたい (↑topへ)
■source ファイル名
デバッガコマンドが書いてあるファイルを実行します。
■save ファイル名
現在のブレークポイントやキャッチポイントをファイルへ書き出します。

★irbを使いたい (↑topへ)
■irb
IRB のセッションを開発する。(まだ実験段階)

★デバッグを再起動したい (↑topへ)
■r[eload]
ソースコードを再読み込みする。
■restart [args]
■R [args]
プログラムを再起動する。この再起動で全てのデバッグ状態をクリアする。args は、コマンドパラメータとして使用する。

★デバッグをやめたい (↑topへ)
■q[uit] [unconditionally]
■exit [unconditionally]
デバッガを停止する。(←筆者注:Web サーバも止まっちゃうみたいです。)
停止する前に普通はプロンプトが表示される。しかし、unconditionally パラメータを指定すると、プロンプトを表示せずに停止する。

★ヘルプを使いたい (↑topへ)
■h[elp]
このヘルプを表示する。
■h[elp] コマンド名
指定したコマンドについてのヘルプを表示する。

★その他 (↑topへ)
■tm[ate] フレーム番号
現在のファイルを TextMate で開く。
フレーム番号が指定されている場合、そのフレーム番号で開く。
■エンターキー
前のコマンドを繰り返す。

【広告】

[2008.02.15(Fri) 00:17] [2.0]デバッグTrackback(0) | Comments(0)
↑TOPへ

 ← Rails勉強会@東京第27回へ参上つかまつるの巻 | TOP | Rails 2.0・その9(ブラウザのロード時間を短くなったように体感させる)

COMMENT

COMMENT POST















管理者にだけ表示

 ← Rails勉強会@東京第27回へ参上つかまつるの巻 | TOP | Rails 2.0・その9(ブラウザのロード時間を短くなったように体感させる)