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の内部で実行するとその機能を無効にするには?
は、あなたが何をしようとしたことがあり、真であるとき
この機能は
DB::DB()
から呼び出される関数のためにのみ無効になっていますか?あなたがしようとしていることの詳細を知らなくても、ここで実際の問題はないようです。 –「デバッガをデバッグする」という意味を明確にすることはできますか?あなたが書いたカスタムデバッガをデバッグしようとしていますか?あなたは具体的な例を挙げることができますか? – ThisSuitIsBlackNot
@ThisSuitIsBlackNot、はい、カスタムデバッガをデバッグしようとしています。 –