2012-06-21 61 views
4

我有一個啓動時啓動一些進程的項目。這些進程在適當的析構函數中(或者點擊一個按鈕)被停止並銷燬,並且一切都很好。 我調試時出現問題。當然,在調試時,我不會一直關閉我的應用程序「正常」;大多數情況下,我將點擊Visual Studio中的「停止調試」按鈕(Shift + F5),否則就會崩潰。我這些情況下,我必須去手動關閉進程:(Visual Studio - 停止調試時殺死特定進程(Shift + F5)

只是想知道是否有VS2010 Pro中的選項,這將允許我停止調試時殺死創建的進程我正在考慮編寫一個宏可能會工作,但是VS2010有一個內置的功能嗎?有點像自定義構建步驟,但用於調試!

+0

這不限於調試會話,這也會發生在您發貨後,並且進程停止,例如未處理的異常。但沒有你周圍殺死正確的過程。你需要編寫代碼來防止這種情況發生。解決您的調試問題。 –

+0

那麼,對於已發貨的產品,您總是可以嘗試{catch()主程序並檢查失控程序是否被殺死,這是非常安全的。在這種情況下停止調試器將不會終止它們。 此外,子進程「應該」定期檢查父進程是否仍在運行,如果不是,則會終止。這解決了這個問題,但根據它檢查的頻率增加了一個小到大的開銷。但你是對的,我最終會做到的! –

回答

3

我會從沒有這種功能的沉默中取得它 所以這裏是它的宏:

Sub StopDebugAndKillProcesses() 
    Dim dbg As EnvDTE80.Debugger2 = DTE.Debugger 
    dbg.Stop() 
    Dim shell_string As String 
    shell_string = "taskkill /F /IM TheProcessToKill.exe" 
    Shell(shell_string) 
End Sub 

分配給一個按鈕,把它放在原來的「停止」按鈕旁邊你完成了。

+1

不幸的是,在VS2012中沒有更多的宏。我親自在子進程中添加一個監視線程來監視父進程是否還活着。如果父進程死亡,那麼子進程本身就會關閉。 –

相關問題