2016-03-18 11 views
4

perldebgutsで説明したカスタムデバッガを作成しました。私のデバッガのコードには何か問題がありますので、問題を特定するために私のDB::DB()DB::sub()ルーチンを1行ずつ進めたいと思います。カスタムデバッガをどのようにデバッグできますか?

私はdocumentationが言うので、私は、1<<30$^Dを設定することによってこれを行うことができたとします

あなたのプログラムの実行がブレークポイントを保持できる点に達したときのいずれかの場合には、DB::DB()サブルーチンが呼び出されます変数$DB::trace,$DB::single、または$DB::signalがtrueです。これらの変数はローカライズできません。 $^D & (1<<30)が真でない場合、から呼び出される関数を含めて、DB::DB()の内部で実行すると、この機能は無効になります。

プログラムの実行がサブルーチンコールに達すると、が呼び出されたサブルーチンの名前を保持して、&DB::sub (args)が呼び出されます。 (サブルーチンはDBパッケージにコンパイルされた場合、これは起こりません。)IRCの#perlのヘルプチャネル上

(強調追加)

人々は$^D & (1<<30)と私はできるかもしれないと言いました私のデバッガをデバッグするのに、それ以上の詳細はわかりませんでした。

DB::DB()DB::sub()サブルーチンの実行をステップごとにトレースするにはどうすればよいですか?

UPD 以下の答えに従ってください。 $^D |= (1<<30)フラグを設定すると、DB名前空間の外で定義されたデバッガコマンドをデバッグすることができますが、それは質問の答えではありません:DB :: DBの内部で実行するとその機能を無効にするには?

+1

は、あなたが何をしようとしたことがあり、真であるとき
この機能はDB::DB()から呼び出される関数のためにのみ無効になっていますか?あなたがしようとしていることの詳細を知らなくても、ここで実際の問題はないようです。 –

+1

「デバッガをデバッグする」という意味を明確にすることはできますか?あなたが書いたカスタムデバッガをデバッグしようとしていますか?あなたは具体的な例を挙げることができますか? – ThisSuitIsBlackNot

+0

@ThisSuitIsBlackNot、はい、カスタムデバッガをデバッグしようとしています。 –

答えて

1

これはデバッグする私のカスタムデバッガーDevel::DebugHooksです。

この式をデバッガ$^D|=(1<<30)から実行した後、デバッガコマンドを実行すると、vars 2 $xのようになり、DB :: namespaceから呼び出されるコードをデバッグできます。 $^D & (1<<30)がDOCから

この文真でなければ、単に混乱を行い、そこから呼び出される関数を含む、)(DB :: DBの内部で実行するときに

この機能は無効になっています。
$^D & (1<<30)が真でない限りDB::DB()を実行すると、機能はではなく、が無効になります。 $^D & (1<<30)

+0

あなたの質問に編集リンクを使用して追加情報を追加してください。回答を投稿するボタンは、質問に対する完全な回答のためだけに使用してください。 - [レビューの投稿](レビュー/低品質の投稿/ 13327349) – lokusking

+0

完全な答えではありませんので、私はそれを受け入れません。私は私のカスタムデバッガを今作業中です。私はそれを完了した後、私もこの答えを完了します。 –

関連する問題