在Linux上使用vscode編譯除錯C/C++程式碼

liwenkaitop發表於2020-12-13

在linux下搬磚C/C++的姿勢有點辛苦,所以想著是不是可以用更優雅一些的姿勢搬磚,尤其是debug。然而,如果我們用CMake來組織工程(因為我們已經大量的使用了CMake檔案來組織工程),那麼就不只是涉及vscode設定的問題。

主要參考如下連結(官方文件):
Using C++ on Linux in VS Code(https://code.visualstudio.com/docs/cpp/config-linux)

一,需要用到的東西

(1)GCC(g++)作為編譯器
(2)GDB作為偵錯程式
(3)VS code作為編輯器,可以下載相關的擴充套件外掛(C/C++外掛,CMake外掛),從而組織成IDE使用
(4)CMake用於處理依賴,組織工程檔案

二、編譯和除錯

按照參考官方網頁裡的介紹,簡單的編譯設定非常簡單。
(1)安裝C/C++外掛
(2)Terminal->Configure default build task 自動生成tasks.json檔案(較大的工程,就在於組織tasks了)
(3)Ctrl+Shift+B編譯出可執行檔案

對應的設定,會生成相應的配置檔案,檔案寫的好,一次生成,多處使用即可:
tasks.json (compiler build settings)

主要是除錯上會方便很多,主要是對上層應用程式開發過程的除錯和問題定位,很直觀的斷點設定,單步執行等。也會生成對應的設定檔案,一次生成,多處使用:
launch.json (debugger settings)

三、cmake外掛編譯+vscode除錯

既然打算用CMake了,其實簡單編譯的tasks.json和launch.json可以省了,各種依賴如果已經組織好,在VScode裡編譯起來就很簡單了。當然在命令列裡用CMake組織好的工程,編譯也很簡單,mkdir & cd build, cmake …, make 就可以了。
在VScode裡面操作的話,對於組織好cmake的工程,直接呼叫CMake外掛就編出來了,當然如果有問題就得排錯,只是列印資訊是在VScode裡面還是在shell裡的差別,需要除錯的情況下,使用VScode進行除錯才會顯示出效率來。

但是,仔細想想看,也仍然是對於有main入口函式的應用程式工程有幫助,對於庫工程的問題定位,似乎仍然得回到在命令列裡掛gdb或加列印資訊的方式。

相關文章