2011-03-10 62 views
3

我在附加到目標進程時創建的線程中運行我的事件循環。 我之前做的分離只是簡單地調用一個函數來清除調試並調用DebugSetProcessKillOnExit等,但得到錯誤的返回值我想他們必須從我創建的線程中調用。所以我做了,現在沒有錯誤,但目標進程只是退出/脫離自己時退出。Windows調試Api - 分離不起作用

在我檢查的事件循環布爾檢查我是否應該分離(?沒有更好的辦法)的時刻,然後執行以下操作:


pEng->ClearHardwareBreakpoints(); 
DebugSetProcessKillOnExit(FALSE); 
ContinueDebugEvent(pEng->pId, pEng->tId, DBG_CONTINUE); 
DebugActiveProcessStop(pEng->pId); 

return 0; 

ClearHardwareBreakpoints掛起目標線程,以調用GetThreadContext CONTEXT_DEBUG_REGISTERS並使用SetThreadContext移除調試寄存器並恢復該線程。

所以,正如我所說的,問題是調試過程也隨我的過程退出,就好像分離不起作用。

任何幫助表示讚賞。

+0

將其分解爲可能的最小問題。註釋掉事情,然後慢慢添加回來,直到問題發生。至少這將有助於縮小範圍。 – Luke 2011-03-10 14:36:03

回答

0

我發現了錯誤:在線程完成其部分(分離)之前,我正在退出程序。