4

我正在調試具有兩個運行實例的Windows服務,通過附加到兩個實例。我這樣做是因爲我知道只有一個實例會觸發我的斷點,但我想知道哪個實例是這樣的,以便將來我不必再附加到這兩個實例。如何判斷我正在調試哪個進程(連接到多個進程)?

有沒有辦法,當附加到多個進程,你可以知道哪一個已經打斷點?反覆試驗的解決方案是每次附加一個解決方案,查看斷點是否被命中,或者停止其中一個服務(通過services.msc)並查看哪個進程ID消失 - 但這兩種解決方案都不可擴展對我來說。有沒有更優雅的方式?

謝謝!

回答

4

你可以手錶添加以下語句:

System.Diagnostics.Process.GetCurrentProcess().Id 

這給你的PID(進程ID)您連接到。 您可以在Windows任務管理器中查找pid(菜單視圖 - >選擇列並打勾PID)。

希望這有助於

+0

這兩種解決方案都可以工作,儘管這個方法在通過監視窗口檢索ID時更爲簡潔,所以我將其標記爲答案。 – Alec

4

你可以試試「當打......」上一個斷點可用的選項(右鍵點擊斷點,它在彈出的右鍵菜單)。然後,您可以打印與很多其他的信息,比如沿着一個變量的值的消息:

$地址 - 當前指令

$來電 - 上函數名稱

$調用堆棧 - 調用堆棧

$函數 - 當前功能名稱

$ PID - 進程ID

$ PNAME - 進程名稱

$ TID - 線程ID

$ TNAME - 線程名稱

http://msdn.microsoft.com/en-us/library/232dxah7(v=vs.110).aspx

3

這是進程窗口是什麼(調試 - > Windows的>進程或Ctrl + Alt + Z)。

+1

該窗口中的ID列是PID。如果它是十六進制,並且你想用十進制(ala Task Manager),切換到Autos窗口,右鍵單擊並翻轉十六進制顯示選項,然後切換回進程窗口。 – Spike0xff

相關問題