針對要怎麼用 Visual Studio 來開發 Linux 的程式,之前已經寫了幾種方法了。不過,如果只是要偵錯、又不想額外建立專案的話,該怎麼辦呢?
其實,如果只是要偵錯的話,Visual Studio 本身有提供「附加至處理序」,可以針對已經在執行中的程式進行偵錯。而 Heresy 本來一直以為他只有支援 Windows 的程式,但是沒想到居然他也可以針對其他平台進行偵錯!
要透過這個方法來偵錯的話,要先開啟對應的方案(不需要是 Linux 專案、包含同樣程式碼的 Windows 的方案即可),然後點選選單中「偵錯」下的「附加置處理序」。
之後,Visual Studio 就會開啟「附加置處理序」的視窗,他的介面大致上如下:
他預設應該會是列出本機的執行程序,這邊需要先切換「連線類型」。
可以看到,連線類型算是滿彈性的!「預設」會是 Windows 本機的處理序,而除此之外,他也還支援 Windows Docker、或是遠端 Windows 電腦來針對 Windows 程式進行偵錯。
Linux 的部分則可以透過 WSL、SSH、或是 Linux Docker 來偵錯。
這邊則是以「SSH」來做說明。在選取「連線類型」後,要再選取「連線目標」、選取已經設定好的遠端 Linux 電腦後,下方就會列出可用的處理序了。
而這邊只要選取要偵錯的處理序、然後按下右下方的「附加」,他就會跳出來詢問要使用什麼工具來進行偵錯:
這邊由於 Heresy 的程式是用 g++ 建置的,所以就選 GDB 了。
而如果不想每次都問的話,也可以直接在「附加置處理序」的視窗中,在「附加至」那邊直接選好。
而理論上,這樣就可以開始進行偵錯了~Heresy 也不確定到底他怎麼去對應的,但是看來在 Visual Studio IDE 裡面是能正確定找到程式碼、而中斷點看來也是可以正常運作,不過反應似乎更慢一些就是了。
至於缺點呢,就是由於這種方法是要先執行程式、然後再附加處理序,所以基本上沒辦法從頭開始偵錯;也因此,如果程式是在剛執行起來初始化的階段就有問題的話,這個方法就不適用了~
再來,這個方法雖然算是滿方便的,甚至在 Linux 端也不需要有原始碼、只要有執行檔就好;但是代價就是在修改程式碼之後,必須要自己手動去建置 Linux 版的執行檔、然後手動佈署到偵錯用的遠端 Linux 機器上,接下來再重新執行、重新用 Visual Studio 附加處理序,這樣才能開始下一個偵錯的工作階段。
所以,個人覺得這種方法應該比較適合一次性、或是偶發性的狀況,如果是要常態性地有一個可以用來偵錯的環境,還是不合適的。
本系列文章目錄:
- 基本概念與環境設定
- 一般的 MSBuild 專案
- 使用既有的 Makefile 專案
- CMake 專案
- 不使用專案來除錯