天天看點

使用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中選擇是。

使用VS遠端調試其他電腦上安裝的軟體

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

使用VS遠端調試其他電腦上安裝的軟體

輕按兩下打開調試器。選擇工具=》選項=》我關閉了身份驗證,選擇無身份驗證,設定最長時間為999999。當然您也可以設定windows 身份驗證,但是我調試時間比較短,而且隻是調試的時候打開這個軟體,是以我設定了無身份驗證,點選确定。

使用VS遠端調試其他電腦上安裝的軟體

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

二、在VS中打開對應的代碼并附加遠端調試的程序。

在對應的代碼工程中,點選菜單欄中的調試=》附加到程序=》連接配接目标=》查找=》找到下面的1個連接配接=》點選選擇

使用VS遠端調試其他電腦上安裝的軟體

如果清單中沒有,請檢查是否在一個網絡之内。或者是否能通路到這個機器。在cmd下用ping的方式驗證一下,是否可以連通IP位址。

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

三、在VS中使用子產品加載添加斷點

PS:VS沒有運作DEBUG是沒有這個菜單的

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

再運作起來的VS中點選調試=》視窗=》子產品,用于附加調試。

使用VS遠端調試其他電腦上安裝的軟體

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

使用VS遠端調試其他電腦上安裝的軟體

通過以上步驟,就可以正常再你的代碼中增加斷點,并且通過操作調試拉。

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