fc2ブログ

2023.09 «  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 - - - - » 2023.11
TOP > CATEGORY > デバッグ初体験

TOP

デバッグ初体験03【ruby-debug v0.9.3 マニュアルお気楽翻訳】 

2007年07月09日 ()
ruby-debug v0.9.3 のヘルプファイルを今日は目標10分で超訳してみたいと思います。

ちなみにRails2.0対応のもっと新しい v0.10.0の内容はこちらからどうぞ。

翻訳が間違ってても責任は負いかねますよ!Good Luck To Myself!!

やりたいこと別にリンクを付けてみましたよ。

※ 以下のコマンドのうち、[ホニャララ] の、ホニャララの部分は省略できます。

---------------------
★変数の値を見たい
★今どの行をデバッグしているか見たい
★ブレークポイントを追加・削除したい
★ステップ実行をしたい
★一気に実行したい
★watch式のように、ある値を繰り返し見たい
★全部の変数について一覧したい
★スレッドを操作したい
★スレッドにトレースモードを設定したい
★例外をキャッチしたい
★今の状態をセーブしたい・ロードしたい(ドラクエの教会のように)
★デバッグ中のオプションを設定したい
★irbを使いたい
★デバッグをやめたい
★ヘルプを使いたい
★その他
---------------------


★変数の値を見たい (↑topへ)
■p EXPRESSION
■e[val] EXPRESSION
EXPRESSION を評価してその結果を出力する。(←訳注:pp の方が見やすい形で出力されます。)
set autoeval を使うと autoval が有効になります。
■pp EXPRESSSION
EXPRESSION を評価してその結果を出力する。(←訳注:p よりも見やすい形で出力されます。)

★今どの行をデバッグしているか見たい (↑topへ)
■l[ist][ (-|=|nn-mm)]
プログラムソースコードを表示する。list を実行する度に次のページのソースコードが表示される。- を指定すると前のページのソースコードが表示される。=を指定すると、現在の行を表示する。nn-mm を指定すると nn 行目から mm 行目までのソースコードを表示する。
set autolist を使うと、autolist が有効になります。
■up[count]
上位レベルのフレームへ移動する。
■down[count]
下位レベルのフレームへ移動する。
■f[rame] フレーム番号
指定されたフレーム番号のフレームへ移動する。フレーム番号に負の値が指定された場合、逆順になる。frame -1 の場合は、一番古いフレームへ、frame 0 の場合は、一番新しいフレームへ移動する。
■w[here]
■bt|backtrace
スタックを表示する。
■r[eload]
ソースコードをリロードする。

★ブレークポイントを追加・削除したい (↑topへ)
■b[reak]
breakpointを一覧表示する。
■b[reak] [file:]行番号 [if expr]
■b[reak] [class(.|#)]メソッド名 [if expr]
breakpointを指定された場所に設定する。if expr が指定された場合、 expr == true の時だけbreakpointを設定する
■del[ete][ nnn]
break コマンドで表示される番号を指定して、breakpoint を消す。番号が指定されていなかったら、全部の breakpoint を消す。

★ステップ実行をしたい (↑topへ)
■s[tep][ nnn]
今の行の step into。nnn が指定されていると、nnn 行までの step into。
■fin[ish]
上位レベルのフレームへ処理を戻す。
■n[ext][+][ nnn]
1 行 step over する。もしくは nnn 回 step over する。+ を指定すると、強制的に次の行へ移動する。

★一気に実行したい (↑topへ)
■c[ont] [ nnn]
次の breakpoint が見つかるか nnn 行目までプログラムを実行する。
■restart|R [args]
デバッグを最初からやり直す。args が指定されている場合、やり直す時のコマンド引数として使用する。

★watch式のように、ある値を繰り返し見たい (↑topへ)
■disp[lay]
expression を一覧表示する。
■disp[lay] EXPRESSION
expression 一覧に EXPRESSION を加える。(←訳注:watch みたいなものでしょう。)
■undisp[lay][ nnn]
指定された番号の expression を消す。番号が指定されていなかったら、全部の expression を消す。(←訳注:今試してみたら expression が消されなかったのですけど・・・orz)

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

★スレッドを操作したい (↑topへ)
■th[read] l[ist]
スレッド一覧を表示する。
■th[read] [sw[itch]] nnn
スレッドコンテキストを nnn 番に切り替える。
■th[read] stop nnn
nnn 番のスレッドを停止する。
■th[read] c[ur[rent]]
現在実行しているスレッドを表示する。
■th[read] resume nnn
nnn 番のスレッドを開始する。

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

★例外をキャッチしたい (↑topへ)
■cat[ch]
catchpoint を表示する。
■cat[ch] 例外名
指定された例外名に catchpoint を設定する。

★今の状態をセーブしたい・ロードしたい(ドラクエの教会のように) (↑topへ)
■save ファイル名
現在の breakpoint や catchpoint をスクリプトファイルとして保存する。
■script ファイル名
スクリプトファイルを実行する。

★デバッグ中のオプションを設定したい (↑topへ)
■set
には以下の値を使用できる。
autolist
 - 全部のブレークポイントに対して list コマンドを実行する。
autoeval
 - コマンドとして認識されないものは全部評価する。
autoreload
 - ソースコードの自動再読み込みを行う。
autoirb
 - デバッガが止まる度に IRB を入れる。
trace
 - eval 評価されるときには、必ずスタックトレースを表示する。
framefullpath
 - フルパス名のファイル名でフレームを表示する。
frameclassname
 - フレームと一緒にクラス名も表示する。
forcestep
 - next/step コマンドは、必ず次の行へ進むようにする。

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

★デバッグをやめたい (↑topへ)
■q[uit]
■exit
デバッガから抜ける。(←訳注:Web サーバも止まっちゃうみたいです。)

★ヘルプを使いたい (↑topへ)
■h[elp]
ヘルプを表示する
■h[elp] command
指定されたコマンドのヘルプを表示する。

★その他 (↑topへ)
■エンターキー
前のコマンドを繰り返す。
■その他
入力された式をそのまま評価する。




結局45分ぐらい掛かってもうた orz

【広告】

スポンサーサイト



[2007.07.09(Mon) 02:54] デバッグ初体験Trackback(0) | Comments(0) 見る▼
↑TOPへ

デバッグ初体験02【ruby-debugを使う】 

2007年07月08日 ()
前回、breakpoint を入れて script/breakpointer を使ってみたらrubyのバージョンが新しすぎるよエラーが出てしまいましたので、代替案としての ruby-debug が見つかったので、それを使ってみます。

まずインストールから。root ユーザになってから

# gem install ruby-debug
Install required dependency ruby-debug-base? [Yn] y
Select which gem to install for your platform (i386-linux)
1. ruby-debug-base 0.9.3 (ruby)
2. ruby-debug-base 0.9.3 (mswin32)
3. Skip this gem
4. Cancel installation
> 1
Building native extensions. This could take a while...
Successfully installed ruby-debug-0.9.3
Successfully installed ruby-debug-base-0.9.3
Installing ri documentation for ruby-debug-0.9.3...
Installing ri documentation for ruby-debug-base-0.9.3...
Installing RDoc documentation for ruby-debug-0.9.3...
Installing RDoc documentation for ruby-debug-base-0.9.3...



そして、script/server で WEBrick を再起動します。

さらに、config/environments/development.rb ファイルの一番最後に

require 'ruby-debug'



を加えます。

またまた、script/server で WEBrick を再起動します。

あとは、ブレークポイントを入れたい行に

debugger



と入れれば、OKです。

この debugger を入れた行の処理が走ると、先ほど script/server コマンドを実行したコンソールに、debugger コマンドプロンプトが表示されます。

(rdb:1)



てな具合に。

ですので、そこでコマントを打ってあげると、いろいろな情報を見られるのです!!!スゴイ!!!ブンダバー!!!


たとえば、

list



と打つと、今止まっている行のソースコードが見られるし、

p 変数名



と打つと、変数の値を出力してくれるし、

break 行番号



と打つと、breakpointを設定してくれるし、

break



と打つと、今設定されているbreakpointの一覧を出力するし、

del ブレークポイント番号



と打つと、指定されたbreakpointを消すし、

cont



と打つと、次のbreakpointまで一気に実行してくれます。

ほかにもいろいろコマンドがあるみたいですので、また私の拙い超訳を次回行いたいと思います。

では Tschuess!!!

【広告】

[2007.07.08(Sun) 01:34] デバッグ初体験Trackback(0) | Comments(0) 見る▼
↑TOPへ

デバッグ初体験01【breakpointエラーで泣く】 

2007年07月07日 ()
デバッグを試してみようと思いまして、適当なcontrollerのdef~endの間に
breakpoint
という行を加えてみて実行してみました。

わくわくしながら待っていると

Breakpoints are not currently working with Ruby 1.8.5

といエラーが表示されています。orz

いろいろ調べてみると、Ruby1.8.5以上だと、breakpoint というオブジェクト(メソッド?)は使えないんだそうです。

1.8.4以下限定だそうです。

http://eigenclass.org/hiki.rb?call_stack+0.1.0

せっかく script/breakpointer コマンドを使おうと思っていたのに残念です。

あー、困った、と思ってまたいろいろ探したら、代わりにruby-debugを使えばよい、と上記のURLのコメント欄に載っていました。

というわけで、ruby-debugをインストールして使ってみようと思います。というのは次回に。


【広告】

[2007.07.07(Sat) 01:11] デバッグ初体験Trackback(0) | Comments(0) 見る▼
↑TOPへ

TOP