1. 程式人生 > >[Reomting Debug] 巧用VS 的remote debug 功能遠端除錯程式

[Reomting Debug] 巧用VS 的remote debug 功能遠端除錯程式

前言:  有時候我們Dev(開發人員)需要debug tester(測試人員)或者customer(客戶)的環境,可tester的機器上沒有Code,是不是有點著急? 而且是多版本應用且tester 發現了問題需要我們去檢視的時候, 這個時候怎樣能夠第一時間幫助tester 找到問題的原因呢?  不要著急, 這裡VS給我們提供了一個很好的功能: Remote Debugger, 下面就好好的來說下這個功能吧. 

使用場景:

假設現在有A、B兩臺機器,其中A是Dev的開發server(這裡是在win server環境去開發)裝著Visual Studio以及Code,B機器上是Tester部署著我們的應用。

第一種方式: Windows Authentication

1、在A機器上的Visual Studio安裝目錄下找到Common7\IDE\Remote Debugger資料夾, 並將其Copy到B機器上。如下圖:​

 

2、執行B機器上Remote Debugger下與本機向對應的目錄下(x86  or x64 )的msvsmon.exe檔案如下圖:(注意以管理員的身份執行msvsmon.exe)

 

Remote Debugger啟動時預設選擇的認證方式就是"Windows Authentication",啟動後我們可以看到如上圖所示的一條資訊,紅框圈起來的其實是server name,其中,Administrator是登陸B機器的使用者名稱稱,TEST28-181是B機器的名稱。

3. 開啟Tools > Options選單項,點選"Permissions…"按鈕,在彈出的對話方塊中確認當前使用者有Debug的許可權,如下圖:

 

到此需要除錯的機器B已經設定完畢。

4、返回到A機器上,在開啟的原始碼中選擇Debug選單中的Attach to Process子選單項,在彈出的對話方塊中的Qualifier  文字框中輸入Step 3 裡的Server name,然後點選"Refresh"按鈕,選中需要除錯的的程序,點選Attach按鈕,如下圖:​(PS: 因為怕涉及到公司一些東西, 所以圖片中有些地方直接加了馬賽克)

 

5. 這時候返回到B機器上,你會在Remote Debugger中看到一條類似如紅框所示的資訊,這說明Remote Debugger已經連上了。

 

剩下的,你就可以像在本機一樣,痛痛快快的debug了,真的是毫無違和感呢。

最後重要的一點:採用Windows Authentication​的話,兩臺機器的賬戶名和密碼要是一樣,如果遇到不一致的情況,可以通過新建使用者或者修改密碼的方式來解決。

第二種: No Authentication

1、選擇認證方式為“No Authentication”,check “Allow any user to debug”。

 出現一下內容就對了:

2、VS -> DEBUG -> Attach To Process,然後就如下圖進行設定,埠要與Remote Debug Option配置成一樣。

 

Refresh之後Avaliable Processes有值並且Debug Monitor會出現xxx connected.

 

      OK,Attach To Process之後,就可以隨意的Debug了。

     最後重要的一點:採用No Authentication​的話,兩臺機器的防火牆都需要關掉。

 寫在最後: 如果將自己code build 過後的dll 替換到tester 的環境上仍然無法debug 的話, 就要考慮給dll 打強名了, 具體方法: http://www.cnblogs.com/darrenji/p/3654650.html

簡單描述一下:

為了簡單:

1:目標程式執行機器:複製Remote Debugger -》 msvsmon.exe (x64) -》工具 -》 選項 -》無身份驗證 + 允許任何使用者除錯 -》確定;

2:除錯機器: 除錯- 》 附加到程序 -> 輸入目標機器IP(無需埠號) ->選擇程序 -》確定;