2

私はEmacsでRubyを書いていますが、私のEmacsスキルは実際にはかなり低いです。私にできることは、プロジェクトを開くか、Mx rinari-testを使用してTDDを開くか、Mxrun-rubyを使用して2番目のウィンドウで劣ったRubyを再生することです。今、私はStdLibからデバッガーを使い始めたいと思います。私は次のように言うことでirbからそれを呼び出すことができます:

require 'debug'

プロンプトが表示されます

(rdb:1)

しかし、そこで私の適性は終わります。ファイルに足を踏み入れる方法すら知りません。「help」と入力すると画面が表示されますが、バグのあるgemのデバッグを最終的に開始するのに役立ちませんでした。オンラインでは、誰もが「rdebug」や「ruby-debug」など、最初は使いたくないものについて書いています。次に、マグルであるため、Debianにインストールできません。助けてください!!!

4

1 に答える 1

2

helpデバッガーでの出力を実際に読み取ってみる必要があります。コマンドの説明が丁寧です。

たとえば、練習のために、エディタ/IDE 内ではなく、コマンドラインでこれを試してください。

ruby -rdebug -e 'p 1'
h

Ruby のデバッガーは、ヘルプの概要を出力します。

Debugger help v.-0.002b
Commands
  b[reak] [file:|class:]<line|method>
  b[reak] [class.]<line|method>
                             set breakpoint to some position
  wat[ch] <expression>       set watchpoint to some expression
  cat[ch] (<exception>|off)  set catchpoint to an exception
  b[reak]                    list breakpoints
  cat[ch]                    show catchpoint
  del[ete][ nnn]             delete some or all breakpoints
  disp[lay] <expression>     add expression into display expression list
  undisp[lay][ nnn]          delete one particular or all display expressions
  c[ont]                     run until program ends or hit breakpoint
  s[tep][ nnn]               step (into methods) one line or till line nnn
  n[ext][ nnn]               go over one line or till line nnn
  w[here]                    display frames
  f[rame]                    alias for where
  l[ist][ (-|nn-mm)]         list program, - lists backwards
                             nn-mm lists given lines
  up[ nn]                    move to higher frame
  down[ nn]                  move to lower frame
  fin[ish]                   return to outer frame
  tr[ace] (on|off)           set trace mode of current thread
  tr[ace] (on|off) all       set trace mode of all threads
  q[uit]                     exit from debugger
  v[ar] g[lobal]             show global variables
  v[ar] l[ocal]              show local variables
  v[ar] i[nstance] <object>  show instance variables of object
  v[ar] c[onst] <object>     show constants of object
  m[ethod] i[nstance] <obj>  show methods of object
  m[ethod] <class|module>    show instance methods of class or module
  th[read] l[ist]            list all threads
  th[read] c[ur[rent]]       show current thread
  th[read] [sw[itch]] <nnn>  switch thread context to nnn
  th[read] stop <nnn>        stop thread nnn
  th[read] resume <nnn>      resume thread nnn
  p expression               evaluate expression and print its value
  h[elp]                     print this help
  <everything else>          evaluate

開始する重要なコマンドはsn、、およびcです。bq

  • sメソッドにステップインします。
  • nメソッドをステップオーバーします。
  • c numberline に到達するまで実行 (継続) しますnumber
  • b numberline にブレークポイントを設定しますnumber。ブレークポイントを設定した後c、その行が実行されるまで実行を続けます。
  • qデバッガを終了します。

個人的には、debugger gem を使用しています。他の人はPRYを使用します。これは IRB に似ていますが、デバッガーのような拡張機能があります。

デバッガーの使用方法を知っていることは、優れたスキルです。puts変数に含まれる内容をインタラクティブに確認したり、変数に特定の値が含まれるまで条件付きでループしたりできるため、デバッガーを使用してすばやく追跡できる問題がありますが、ステートメントを使用しようとすると時間がかかります。

于 2012-12-27T07:41:11.607 に答える