Visual Studio 的遠端偵錯:Windows

| | 0 Comments| 14:45
Categories:

一般來說,在使用 Visual Studio 開發軟體的時候,大部分的程式偵錯,應該都會是在裝有 Visual Studio 的本機來進行。

但是有的時候,其實還是會碰到只能在某些設定上測試、或是只有在某些電腦上有問題的狀況;這個時候,如果沒辦法在那台電腦上安裝肥大的 Visual Studio 的話,其實會讓偵錯變得很麻煩。

而實際上,針對這種情況,微軟其實是有提供「遠端偵錯」的機制,讓開發者可以在本來的 Visual Studio 開發環境、透過網路連線到遠端的電腦來進行測試、除錯的。

這部分的官方文件,可以參考《Remote Debugging》,Heresy 這邊算是簡單紀錄一下 Heresy 自己透過這個機制來進行遠端 C++ 程式偵錯的經驗。


運作原理

其實 Visual Studio 遠端偵錯的遠裡也很簡單,基本上就是需要在要執行程式的遠端電腦上,安裝較為簡易的「Visual Studio 2019 遠端工具」 ,用來建立一個伺服器,接受開發者電腦上的 Visual Studio 透過連進來控制。

這樣的連線控,可以允許 Visual Studio 透過遠端工具,把編譯好的程式部屬到測試機上、執行起來,進行偵錯。

都設定好後,除厝的流程就會和在本機偵錯時幾乎一樣,修改程式後只要按下 F5,他就會自動完成編譯、檔案傳輸、執行並偵錯的流程了~

當然,由於程式實際上是在遠端的電腦執行的,所以如果有圖形介面、或是需要互動的話,要不就是要走到遠端的電腦操作,不然就是要用遠端桌面之類的工具來控制了。


在要執行的電腦上安裝遠端工具

要進行遠端偵錯,遠端的電腦必需是 Windows 7 以後的作業系統;而雖然不用安裝 Visual Studio,但是還是要安裝「Visual Studio 2019 遠端工具」。

他的下載頁面是:https://visualstudio.microsoft.com/zh-hant/downloads/

進入之後,拉到下面的「所有下載」、並點選「Visual Studio 2019 的工具」,就可以看到「Visual Studio 2019 遠端工具」的項目了~他有提供 x64、ARM64、x86 三種版本可以選擇,就看自己的環境是什麼。

以 x64 版來說,安裝檔案大小不到 100MB,相對完整的 Visual Studio 來說,算是相當小的了。

安裝好了之後,就可以在開始功能表裡面找到「Reomte Debugger」了~他執行起來後,畫面如下:

他基本上就是建立一個伺服器,等待 Visual Studio 連線過來,告訴他該做什麼事。

他預設使用的連接埠是 4024,如果有防火牆的話可能會要自己去允許使用這個連接埠;或怎也可以自己修改成使用其他連接埠。

如果只有使用 Windows 內建放火強的話,第一次執行的時候,應該是會出現要調整 Windows 防火牆的畫面,只要讓他自己去修改就可以了。


Visual Studio 專案設定

至於在 Visual Studio 裡面要怎麼修改呢?這邊的修改主要都是要在專案的屬性視窗中。

其步驟如下:

  1. 在左邊找到「偵錯」,然後先把右邊「要啟動的偵錯工具」,由預設的「本機 Windows 偵錯工具」,改成「遠端 Windows 偵錯工具」。
  2. 一定要修改的項目,包括了:
    • 遠端伺服器名稱:
      • 要用來偵錯的電腦,可以輸入電腦名稱,或是像 Heresy 這邊是輸入 IP
    • 部屬目錄:
      • 這邊用的例子是「d:x64」,是用來偵錯的遠端電腦上、用來存放這個專案的資源的路徑。
      • 由於部屬檔案的時候可能還會有許多相關聯的 dll 一起被部屬過去,所以這邊建議獨立一個資料夾,做為測試之用。
    • 工作目錄:
      • 程式執行時的工作目錄,通常會和「部屬目錄」相同。
    • 遠端命令:
      • 輸入要執行的程式的檔案名稱,這邊是「concept.exe」。
      • 不過自己測試是好像要給完整的路徑,所以會是「d:x64Concept.exe

不過,這樣設定完之後,其實並沒有開啟自動部屬的功能;如果希望能在編譯後自動把編譯好的執行檔移到測試機上的話,則需要點選右上方的「組態管理員」,並勾選專案的「部屬」。

然後,理論上就可以這樣來偵錯了!


不過,由於 Visual Studio 部屬的檔案應該是以系統提供的為主,所以有的額外的 DLL、或是其他需要的檔案,還是需要自己部屬到測試機上的~

個人會建議,先把 d:x64 這個資料夾處理到可以正常執行,再來開始除錯會比較好。

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *