使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM