[分享] Visual Studio 遠端偵錯

參考:Visual Studio 遠端偵錯和診斷

在程式開發的過程中常需要在不同的作業系統平台上偵錯,以前的做法是在該平台上安裝 Visual Studio,但這不僅僅曠日廢時,同時也破壞測試的完整性,畢竟在一般使用者的平台上是不會有這些開發環境的程式的。

所以看過今天的介紹後,你再也不需要這麼麻煩了,只要有網路線,你就可以利用遠端遙控的方式來偵錯,同時可以將一個測試平台分享給不同的開發者測試,一舉數得。




首先是在測式平台上安裝遠端偵測工具,以 Visual Studio 2013 為例,你可以到 這裡 下載對應的程式 (遠端工具的版本與 Visual Studio 的版本必須一致),執行後按預設值設定即可,基本上就是打開防火牆而已。有一點要特別注意的是,如果你要偵錯的程式需要 "管理者權限",則遠端工具也需要以管理者權限啟動


接下來是設定開發端,基本上都在 Debugging 的頁面,首先把設定切換到 "Remote Windows Debugger",各項設定說明如下:


Remote Command : 要在遠端執行的程式名稱,前面需要遠端電腦的絕對路徑,而檔名可以用 $(TargetFileName) 取代,這樣當 Win32 / x64 檔名不相同時就不需要分別設定了

Working Directory : 遠端執行程式的工作路徑,一般與 Remote Command 的路徑相同

Remote Server Name : 可以從遠端工具程式取得,後面的 Port number 不需要輸入


Connection : 使用預設的 Windows 認證即可,所以你必須要有登入遠端電腦的使用權限

Debugger Type : 若偵測 C++ 的程式可以直接選 Native Only;C# 則選擇 Managed Only。減少選擇 Auto 的判斷時間

Deployment Directory : 程式部署的路徑,一般與 Remote Command 的路徑相同

Additional Files to Deploy : 需要額外部署的檔案,若要部署整個資料夾則不適用。如果該檔案是不會改變的,則手動 Copy 到該路徑即可


最後再勾選要部署的程式即可



當啟動遠端偵錯後,Visual Studio 會把執行檔及對應的 DLL Copy 到遠端的平台並執行,其中 WinRing0 的目錄就是前面提到手動 Copy 的檔案


不過此時你還是得到遠端電腦操作你的程式,或者利用 TeamViewer 遠端遙控軟體及雙螢幕在開發端遙控遠端電腦


最後,這種方式還是有一些限制的,例如在 Win7 的開發平台上,就無法偵錯遠端 Win10 D3D12 的程式,原因是在 Win7 的平台上無法安裝 DX12 SDK,所以無法 Build D3D12 的程式,當然就無法在遠端偵錯了。



遠端偵錯 Visual C# 專案
  1. 遠端電腦工作目錄必須與來源端完全相同
  2. 不支援部署到遠端電腦 
 故首先確認程式輸出的路徑,然後在遠端電腦建立相同的路徑


 為了能手動部署,遠端電腦的資料夾必須設定為分享,首先是開啟網路分享的設定


 在該資料夾上按滑鼠右鍵,選擇 Property | Sharing 標籤,點選 Share 按鈕


然後用目前的使用者分享


最後可以得到分享路徑的名稱


可以使用帳號、密碼先試一下連線是否正常


若沒問題則可以將下列命令加入 Post-build event command line 中,令其在建置成功後手動部署 (/S 為包含子目錄、/Y 為直接確認)

xcopy $(TargetDir)*.* \\TW-JOHNNYWANGSC\Test\Test\bin\Debug /S /Y


設定遠端電腦名稱 (若無 DNS 則可以用 IP 代替),並確認沒有勾選原生程式碼偵錯


遠端電腦執行 Remote Debugger (確認 Visual Studio 版本與權限是否與來源端相同),若設定無誤則可以看到連線成功的訊息,且程式在遠端電腦執行


設定中斷點可以在來源端偵錯



雖然它不像 C++ 那樣方便,但至少是一個解決方式,在開發的過程中可以遠端偵錯而不用在遠端電腦安裝開發環境。

留言

這個網誌中的熱門文章

Linux 批次檔的寫法

【分享】如何顯示 Debug Message