ubuntu下vscode调试开发踩过的坑
1.安裝vscode
??安裝vscode很簡(jiǎn)單,只需要一個(gè)命令即可搞定:
$ sudo apt-get install visual-studio-code
??注:如果需要卸載,可使用 $ sudo apt-get remove code
安裝成功后,會(huì)在菜單欄上出現(xiàn)vscode的標(biāo)簽,如果沒有,則可以在terminal中使用命令./code打開vscode
2.vscode使用過程的遇到的坑
??安裝完vscode后,用vscode打開代碼工程目錄,并根據(jù)提示安裝c/c++插件后,發(fā)現(xiàn)鼠標(biāo)無法跟蹤函數(shù)和成員變量的定義,即control+鼠標(biāo)單擊(或鼠標(biāo)右鍵)->Go to Definition時(shí),提示no definition found for *。被這個(gè)莫名其妙的問題搞得一頭霧水,百思不得其解。之前ubuntu16.04.4一直用的好好的,為什么到了18.04.1就找不到函數(shù)定義了。
??后來仔細(xì)看提示才發(fā)現(xiàn),代碼路徑里面的文件夾名稱桌面是中文名(代碼放在桌面目錄下),會(huì)不會(huì)是因?yàn)檫@個(gè)問題才導(dǎo)致vscode無法跟蹤函數(shù)定義呢?于是將ubuntu系統(tǒng)切成英文系統(tǒng),切換方法如下:
??1.打開系統(tǒng)菜單中的設(shè)置-》Region & Language
??將language/語(yǔ)言 從中文改為English(United States)
??將Formats/格式 從中國(guó)改為United States
??然后重啟系統(tǒng)
??2.重啟之后發(fā)現(xiàn)home目錄下除了中文的桌面目錄之外,還多了一個(gè)Desktop目錄,于是將中文桌面目錄下的所有文件夾剪切到Desktop目錄下,并檢查工程代碼目錄下是否還有其他中文字符,有的話繼續(xù)改成英文。
??3.使用vscode打開工程文件夾目錄,然后再control+鼠標(biāo)單擊-》Go to Definition跟蹤函數(shù)定義,函數(shù)已經(jīng)自動(dòng)跳轉(zhuǎn)到函數(shù)的定義頁(yè)面。問題成功解決。
3.vscode調(diào)試linux下的c/c++工程
3.1準(zhǔn)備源碼
??準(zhǔn)備源碼main.cpp,代碼如下:
#include <stdio.h>int main() {printf("vscode test debug\n");int a = 3;int b = 2;int c = a*b;printf("a+b=%d\n",c);getchar();return 0; }3.2 vscode調(diào)用makefile編譯源碼
??為3.1的測(cè)試代碼準(zhǔn)備一個(gè)makefile文件,內(nèi)容如下:
TARGETNAME = build all:$(TARGETNAME) main.o:main.cppg++ -g -O0 -Wall -fPIC -c $^$(TARGETNAME):main.og++ -o $@ $^.PHONY:clean clean:rm -f $(TARGETNAME) main.o$ g++ -g -c test.cpp $ g++ -o test test.o??在terminal中make會(huì)生成build可執(zhí)行文件
3.3 創(chuàng)建vscode調(diào)試配置文件
??使用vscode打開test.cpp所在的文件夾目錄,按F5,彈出選擇調(diào)試環(huán)境對(duì)話框(Select Environment),從對(duì)話框的下拉菜單中選擇C++(GDB/LLDB),如下圖所示:
??選擇后C++(GDB/LLDB)程序自動(dòng)生成launch.json文件,如下所示:
1)、將
"program": "enter program name, for example ${workspaceFolder}/a.out",改為:
"program": "${workspaceFolder}/test",2)、將
"externalConsole": true,改為:
"externalConsole": false,3)、如果存在程序啟動(dòng)參數(shù),則將
"args": [],改為:
"args": ["arg1","arg2", "arg3"],3.4 使用vscode編譯makefile工程
??進(jìn)入.vscode目錄(隱藏文件),創(chuàng)建tasks.json文件。
內(nèi)容如下所示:
??保存后按ctrl+shift+B進(jìn)行編譯。編譯成功后會(huì)在當(dāng)前目錄下生成名為build的可執(zhí)行文件。然后在代碼中設(shè)置斷點(diǎn),按F5即可進(jìn)行調(diào)試代碼。
3.5 使用vscode編譯源碼
??進(jìn)入.vscode目錄(隱藏文件),創(chuàng)建tasks.json文件。
內(nèi)容如下所示:
??保存后按ctrl+shift+B進(jìn)行編譯,編譯成功后即可進(jìn)行調(diào)試。
3.6 調(diào)試
??用vscode打開源碼,使用F9在需要調(diào)試的地方設(shè)置斷點(diǎn),按F5運(yùn)行程序,便可以開始linux下程序的調(diào)試,調(diào)試方法與windows的vs開發(fā)環(huán)境幾乎完全一樣。
4.總結(jié)一下踩坑的經(jīng)驗(yàn)教訓(xùn)
1、vscode的代碼路徑不能有中文,否則會(huì)出現(xiàn)無法跟蹤代碼定義的問題;
2、"externalConsole": 應(yīng)該為false,否則無法進(jìn)入調(diào)試;fu
3、args為一個(gè)數(shù)組,而不是一個(gè)字符串
4、tasks.json的label為編譯目標(biāo)程序名稱,必須與launch.json的"program": " ${workspaceFolder}/$(programname)",中的$(programname)相同,否則調(diào)試將出問題。
5、"command": "g++"為使用g++編譯,對(duì)于c++源碼,"gcc"為使用gcc編譯,對(duì)應(yīng)c源碼,"make"對(duì)應(yīng)makefile文件編譯,源碼工程目錄下必須有對(duì)應(yīng)makefile工程
總結(jié)
以上是生活随笔為你收集整理的ubuntu下vscode调试开发踩过的坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue打包关闭console.log
- 下一篇: Ubuntu开机黑屏解决办法