可能有人會對這個問題有一些爭議,因為大部分情況下我們只需要在偵錯程式(debugger)裡面直接啟動被除錯程式(debuggee)就可以在程式啟動前除錯程式了。
但有些情況下,你是不能控制被除錯程式(debuggee)在什麼時候啟動的。例如在dcom環境裡面,dcom客戶端(client)可以通過呼叫cocreateinstanceex(…, ctx_local_server, …)啟動dcom伺服器(server),啟動dcom伺服器的過程是在com庫中進行的,
你沒有辦法將在dcom伺服器的winmain函式之前將你的偵錯程式附加(attach)上去。windows提供了乙個功能就是在乙個程式啟動的時候,自動將設定好的偵錯程式附加到這個新啟動的程式上去。這裡我就是要介紹這個功能:
1.開啟登錄檔編輯器(regedit.exe).
2.找到鍵值hkey_local_machine/software/microsoft/windows nt/currentversion/image file execution options/。
3.新建乙個鍵(key),鍵名就是你要除錯的程式的檔名,例如notepad.exe。
4.然後在這個新建的鍵值(key)下,在我們的例子裡,這個鍵值是notepad.exe。新建乙個字串值(string value)debugger,值設定為你喜歡的偵錯程式,例如c:/debuggers/windbg.exe。
你可以用下面的登錄檔指令碼完成上面的工作:
windows registry editor version 5.00
[hkey_local_machine/software/microsoft/windows nt/currentversion/image file execution options/notepad.exe]
"debugger"="c://debuggers//windbg.exe"
設定好了以後,執行notepad.exe看看有什麼結果?
WinDbg偵錯程式 啟動程式時自動連線偵錯程式方法
當我們在除錯ie瀏覽器時,一定會遇到乙個比較煩惱的問題,那就是通過偵錯程式啟動ie後,發現ie還會再啟動第二個程序,實際上通過windbg啟動的整合根本是不幹活的,此時除錯工作就無法繼續下去 遇到這種問題時,其實我們可以通過 image file execution options 也就是映像劫持技...
如何在程式啟動的時候自動掛接Debugger
在某些情況下,你可能需要除錯乙個由其他程式所啟動的程序的啟動 而這個過程並不由你所控制。比較典型的例子有com程序外伺服器和windows service。通常你可以在 中手動加上debugbreak api呼叫來自動啟動除錯程式,大部分情況這都能工作。不過,某些情況下debugbreak會不起作用...
vivado 如何在程式啟動的時候觸發 ILA
下面講解在vivado中怎麼抓乙個bit下進去後開始執行的初始事件,即startup trigger。操作起來比較複雜,一般情況下都是讓要抓的事件延遲發生或者迴圈發生,方便除錯。如果實在要抓啟動時的事件,按下面的步驟 1.先把有ila核的bit檔案下進去,設定觸發好條件 2.執行下面的tcl命令把觸...