2011-01-16 10 views
4

私は、他の人のコードを踏んで、特定のテスト可能なものの中で何が壊れているのかを調べています(テストフレームワークが実際の使用とは異なる結果を出す理由を私に尋ねないでください)。私がクラッシュする前にコードを少しずつ読み込むたびに、ソースコードを変更せずにブレークポイントを設定できる方法はありますか?だから私は次のステップ、次のステップ、次のステップ、次のステップ、毎回する必要はありませんか?または毎回ソースを変更してください。また、これらのプログラムはライブラリを大量に使用するため、バグそのものがこれらのライブラリの1つに含まれているように見えるので、複数のファイルをステップ実行する必要があることを考慮してください。だから私はファイルの行番号を打つまで実行を続行する必要があることを知っている。また、図書館は図書館をロードしています。ソースを変更せずにPerlデバッガでブレークポイントを設定することはできますか?

注:私は、あなたが将来のブレークポイントを設定するために使用することができるインタラクティブなPerlのデバッガ、中bコマンドをしたいようですね

+1

[perldebug](http://perldoc.perl.org/perldebug.html)を読んでいますか? – ephemient

+0

@ephemient perldebugはこの時点で私にとって少し包括的だったので、私は[perldebtut](http://perldoc.perl.org/perldebtut.html#Stepping-through-code)を通して読んだことがあります。私は自分のしていることの基本を本当に知りませんから。私は少し混乱の部分を見つけたので、私は何か重要なことを逃しているかもしれません。 – xenoterracide

+0

@ephemientあなたが私が読んでいるはずのperldebugの正確なセクションを教えていただければ幸いです。 – xenoterracide

答えて

6

一般的にデバッガに新たなんです。あるいは、cコマンドで、引数が与えられればGDBのuntilのように動作します。

afterinitでデバッガを起動するたびに、特定のブレークポイントを自動的に設定することもできます(.perldb)。または、Rコマンドを使用して、ブレークポイントなどの情報を保持したままデバッガ(およびデバッグ対象のプログラム)を再起動します。

+0

私はちょっと私の質問を明確にしました。私の問題の一部は、どのように私がラインにジャンプするか、まだ存在しないサブ、またはそれをどのようにテストするかを私は確信していないということです。 – xenoterracide

+4

@xenoterracide: 'b load filename'でファイルがロードされたときのブレークポイントを設定できます。そのブレークポイントにヒットしたら、そのファイル内にさらにブレークポイントを設定することができます。あるいは、 'require'を使ってファイルを強制的に* now *ロードすることができます。 – ephemient

3

あなたがBコマンドの組み合わせ、 Fコマンド、%INCの内容、かつ迅速にあなたのコードをナビゲートするCコマンドを使用することができます。

cは、指定された行に到達するまで実行を継続できます。これにより、任意のポイントに簡単にジャンプすることができます。

あなたは%のINCにそのモジュールのエントリを見て、モジュール内の特定のポイントで破断したい場合は、モジュールが一部だった場合(キーが「いくつか/ Module.pm」になります。 :モジュール)。そのキーの値は、モジュールがロードされたファイルです。モジュールがまだロードされていない場合は、デバッガのコマンドプロンプトでを使用し、%INCを探します。

あなたがにブレークポイントを設定するコードを含むファイルを入手したら、デバッガのリットル(リスト)とテキスト検索コマンドを切り替えるFファイル名を行う(/ - ?転送それぞれのファイルを参照して、必要なブレークポイントとcを設定します。

関連する問題