1. 程式人生 > 其它 >使用VS遠端除錯其他電腦上安裝的軟體

使用VS遠端除錯其他電腦上安裝的軟體

今天在使用者的一臺機器上遇到了很奇怪的問題。一個按鈕點選時概率性的第一次點選無反饋。

因為是概率性的,概率又很低,而當初在設計Log時又設計的是必須重啟軟體才會生效log開關;

所以這裡使用當時release編譯出的產物+除錯產物配合遠端除錯來跟蹤問題。

需要用到的東西:

一、被除錯的機器安裝Remote Debugger

在VS安裝的電腦裡進入以下目錄,如果是2017的VS找對應的2017資料夾。我的是Enterprise版本,找對應的資料夾就行。比如preview版本的就找preview等等。32位的程式就拷貝X86的目錄到對應的軟體機器上,64位的就拷貝x64用於除錯。

目錄如下:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger

C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Remote Debugger

在需要被除錯的機器上啟動目錄下的msvsmon.exe 程式。我保持了預設、點選配置遠端除錯。並在彈出的UAC中選擇是。

右下角圖示通知欄就會有一個下圖的圖示,如果沒有,在收起來的圖示欄裡找一下。這個就是除錯工具,用於安裝在被除錯的機器上。

雙擊開啟偵錯程式。選擇工具=》選項=》我關閉了身份驗證,選擇無身份驗證,設定最長時間為999999。當然您也可以設定windows 身份驗證,但是我除錯時間比較短,而且只是除錯的時候開啟這個軟體,所以我設定了無身份驗證,點選確定。

我是在同一個區域網之內的,如果不是同一個區域網,看是否有外網獨立IP。或者使用花生殼之類的轉發,也可以。

二、在VS中開啟對應的程式碼並附加遠端除錯的程序。

在對應的程式碼工程中,點選選單欄中的除錯=》附加到程序=》連線目標=》查詢=》找到下面的1個連線=》點選選擇

如果列表中沒有,請檢查是否在一個網路之內。或者是否能訪問到這個機器。在cmd下用ping的方式驗證一下,是否可以連通IP地址。

如果選擇成功之後,程序列表就會重新整理,然後選擇你需要除錯的程序,點選附加,如果沒有你要的程序,請在需要被除錯的機器上確認是否程序存在,然後再除錯的機器上點選重新整理。找到需要除錯的程序,點選附加。就可以了。

三、在VS中使用模組載入新增斷點

PS:VS沒有執行DEBUG是沒有這個選單的

VS附加進來之後。如果沒有對應版本除錯使用的pdb檔案是沒有辦法打斷點除錯的。

再執行起來的VS中點選除錯=》視窗=》模組,用於附加除錯。

再這個模組功能中找到你對應的exe和DLL。然後看符號狀態,是否是已載入符號,如果不是,則右鍵點選對應的行,選擇載入符號,選擇程式碼對應的pdb檔案。一定要注意,程式碼和應用程式和PDB檔案要能對應上,否則沒有辦法除錯。這個可以再每次出版本提交程式碼的時候。再SVN或者git上做個記錄,把pdb產物也提交上去做備份。

通過以上步驟,就可以正常再你的程式碼中增加斷點,並且通過操作除錯拉。

我建立了一個C#相關的交流群。用於分享學習資料和討論問題,歡迎有興趣的小夥伴:QQ群:542633085