我寫了一個自定義調試器,如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,是的,我正在嘗試調試一個客戶調試器。 –