我正在調試具有兩個運行實例的Windows服務,通過附加到兩個實例。我這樣做是因爲我知道只有一個實例會觸發我的斷點,但我想知道哪個實例是這樣的,以便將來我不必再附加到這兩個實例。如何判斷我正在調試哪個進程(連接到多個進程)?
有沒有辦法,當附加到多個進程,你可以知道哪一個已經打斷點?反覆試驗的解決方案是每次附加一個解決方案,查看斷點是否被命中,或者停止其中一個服務(通過services.msc)並查看哪個進程ID消失 - 但這兩種解決方案都不可擴展對我來說。有沒有更優雅的方式?
謝謝!
我正在調試具有兩個運行實例的Windows服務,通過附加到兩個實例。我這樣做是因爲我知道只有一個實例會觸發我的斷點,但我想知道哪個實例是這樣的,以便將來我不必再附加到這兩個實例。如何判斷我正在調試哪個進程(連接到多個進程)?
有沒有辦法,當附加到多個進程,你可以知道哪一個已經打斷點?反覆試驗的解決方案是每次附加一個解決方案,查看斷點是否被命中,或者停止其中一個服務(通過services.msc)並查看哪個進程ID消失 - 但這兩種解決方案都不可擴展對我來說。有沒有更優雅的方式?
謝謝!
你可以手錶添加以下語句:
System.Diagnostics.Process.GetCurrentProcess().Id
這給你的PID(進程ID)您連接到。 您可以在Windows任務管理器中查找pid(菜單視圖 - >選擇列並打勾PID)。
希望這有助於
你可以試試「當打......」上一個斷點可用的選項(右鍵點擊斷點,它在彈出的右鍵菜單)。然後,您可以打印與很多其他的信息,比如沿着一個變量的值的消息:
$地址 - 當前指令
$來電 - 上函數名稱
$調用堆棧 - 調用堆棧
$函數 - 當前功能名稱
$ PID - 進程ID
$ PNAME - 進程名稱
$ TID - 線程ID
$ TNAME - 線程名稱
http://msdn.microsoft.com/en-us/library/232dxah7(v=vs.110).aspx
這是進程窗口是什麼(調試 - > Windows的>進程或Ctrl + Alt + Z)。
該窗口中的ID列是PID。如果它是十六進制,並且你想用十進制(ala Task Manager),切換到Autos窗口,右鍵單擊並翻轉十六進制顯示選項,然後切換回進程窗口。 – Spike0xff
這兩種解決方案都可以工作,儘管這個方法在通過監視窗口檢索ID時更爲簡潔,所以我將其標記爲答案。 – Alec