我写了一个自定义调试器,如perldebguts中所述。但是,我的调试程序代码有问题,所以我想逐行查看我的DB::DB()
和DB::sub()
例程以找出问题。如何调试自定义调试器?
我想我可以通过设置$^D
到1<<30
做到这一点,因为documentation说:
当你的程序的执行到达可容纳一个断点一个点,
DB::DB()
子程序被称为如果任何变量$DB::trace
,$DB::single
或$DB::signal
为真。这些变量不可本地化。在DB::DB()
内执行时,此功能被禁用,包括从中调用的函数,除非$^D & (1<<30)
为真。当程序执行到达子程序调用时,调用
&DB::sub (args)
而不是调用,$DB::sub
保存被调用子程序的名称。 (如果子程序是在DB包编译这不会发生。)
(强调)表示,对IRC#Perl的帮助渠道
人与$^D & (1<<30)
我也许能调试我的调试器,但他们不知道任何细节。
如何跟踪我的DB::DB()
和DB::sub()
子例程的执行?
UPD 根据下面的答案。当设置$^D |= (1<<30)
标志时,这允许我调试在DB
名称空间之外定义的调试器命令,但这不是问题的答案:如何在DB :: DB内执行时禁用该功能?
你尝试过什么?在不了解你想要做什么的更多细节的情况下,这里似乎并没有真正的问题。 –
你能说清楚“debug the debugger”是什么意思吗?您是否尝试调试您编写的自定义调试器?你能举一个具体的例子吗? – ThisSuitIsBlackNot
@ThisSuitIsBlackNot,是的,我正在尝试调试一个客户调试器。 –