VC下多進程的調試方法

         比如:A函數調用了CreateProcess創建了另外一個相同的進程,然後這個新進程調用了函數B,我們直接把斷點設在函數B中肯定是不可行的。這裏有兩種方法可以解決這個問題:

        1. 在B函數入口調用AfxMessageBox函數,當進程一旦進入這個函數就掛起。然後啓動第一個進程(非調試),執行相應的操作創建第二個進程並調用函數B,這樣就會彈出這個MessageBox窗口,此時將vs Attach到第二個進程中。摁下MessageBox中的OK,這樣就可以進入B的斷點進程調試。注意,在Attach中選擇合適的Code類型,是Native的還是Managed的,否則斷點就進不去。

        2. 在B函數入口調用函數DebugBreak(),當執行到DebugBreak()時,將會拋出一個異常,這個異常會由操作系統捕捉到,然後彈出一個對話框,說程序遇到了問題,問你要不要發送錯誤報告,點擊該對話框的調試按鈕,系統又會彈出一個對話框,選擇相應的調試器進行調試,然後子進程就會中斷在代碼DebugBreak()處,接下來就可以正常調試了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章