透過 Visual Studio 的「附加至處理序」直接對 Linux 程式偵錯

| | 0 Comments| 08:44
Categories:

針對要怎麼用 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 附加處理序,這樣才能開始下一個偵錯的工作階段。

所以,個人覺得這種方法應該比較適合一次性、或是偶發性的狀況,如果是要常態性地有一個可以用來偵錯的環境,還是不合適的。


本系列文章目錄:

Leave a Reply

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