日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

ubuntu下vscode调试开发踩过的坑

發布時間:2025/3/8 Ubuntu 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ubuntu下vscode调试开发踩过的坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近剛過安裝了中文版的ubuntu18.04.1,安裝完之后想在ubuntu上安裝vscode做c/c++的開發調試,踩了不少坑,在此記錄一下,希望大家在這條路上不要再踩同樣的坑。

1.安裝vscode

??安裝vscode很簡單,只需要一個命令即可搞定:
$ sudo apt-get install visual-studio-code
??注:如果需要卸載,可使用 $ sudo apt-get remove code

安裝成功后,會在菜單欄上出現vscode的標簽,如果沒有,則可以在terminal中使用命令./code打開vscode

2.vscode使用過程的遇到的坑

??安裝完vscode后,用vscode打開代碼工程目錄,并根據提示安裝c/c++插件后,發現鼠標無法跟蹤函數和成員變量的定義,即control+鼠標單擊(或鼠標右鍵)->Go to Definition時,提示no definition found for *。被這個莫名其妙的問題搞得一頭霧水,百思不得其解。之前ubuntu16.04.4一直用的好好的,為什么到了18.04.1就找不到函數定義了。
??后來仔細看提示才發現,代碼路徑里面的文件夾名稱桌面是中文名(代碼放在桌面目錄下),會不會是因為這個問題才導致vscode無法跟蹤函數定義呢?于是將ubuntu系統切成英文系統,切換方法如下:
??1.打開系統菜單中的設置-》Region & Language
??將language/語言 從中文改為English(United States)
??將Formats/格式 從中國改為United States
??然后重啟系統
??2.重啟之后發現home目錄下除了中文的桌面目錄之外,還多了一個Desktop目錄,于是將中文桌面目錄下的所有文件夾剪切到Desktop目錄下,并檢查工程代碼目錄下是否還有其他中文字符,有的話繼續改成英文。
??3.使用vscode打開工程文件夾目錄,然后再control+鼠標單擊-》Go to Definition跟蹤函數定義,函數已經自動跳轉到函數的定義頁面。問題成功解決。

3.vscode調試linux下的c/c++工程

3.1準備源碼

??準備源碼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調用makefile編譯源碼

??為3.1的測試代碼準備一個makefile文件,內容如下:

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會生成build可執行文件

3.3 創建vscode調試配置文件

??使用vscode打開test.cpp所在的文件夾目錄,按F5,彈出選擇調試環境對話框(Select Environment),從對話框的下拉菜單中選擇C++(GDB/LLDB),如下圖所示:

??選擇后C++(GDB/LLDB)程序自動生成launch.json文件,如下所示:

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "enter program name, for example ${workspaceFolder}/a.out","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}] }

1)、將

"program": "enter program name, for example ${workspaceFolder}/a.out",

改為:

"program": "${workspaceFolder}/test",

2)、將

"externalConsole": true,

改為:

"externalConsole": false,

3)、如果存在程序啟動參數,則將

"args": [],

改為:

"args": ["arg1","arg2", "arg3"],

3.4 使用vscode編譯makefile工程

??進入.vscode目錄(隱藏文件),創建tasks.json文件。
內容如下所示:

{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "make",//"args":["-g", "${workspaceRoot}/main.cpp","-o","build"],"problemMatcher": ["$gcc"]}] }

??保存后按ctrl+shift+B進行編譯。編譯成功后會在當前目錄下生成名為build的可執行文件。然后在代碼中設置斷點,按F5即可進行調試代碼。

3.5 使用vscode編譯源碼

??進入.vscode目錄(隱藏文件),創建tasks.json文件。
內容如下所示:

{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "g++","args":["-g", "${workspaceRoot}/main.cpp","-o","build"],"problemMatcher": ["$gcc"]}] }

??保存后按ctrl+shift+B進行編譯,編譯成功后即可進行調試。

3.6 調試

??用vscode打開源碼,使用F9在需要調試的地方設置斷點,按F5運行程序,便可以開始linux下程序的調試,調試方法與windows的vs開發環境幾乎完全一樣。

4.總結一下踩坑的經驗教訓

1、vscode的代碼路徑不能有中文,否則會出現無法跟蹤代碼定義的問題;
2、"externalConsole": 應該為false,否則無法進入調試;fu
3、args為一個數組,而不是一個字符串
4、tasks.json的label為編譯目標程序名稱,必須與launch.json的"program": " ${workspaceFolder}/$(programname)",中的$(programname)相同,否則調試將出問題。
5、"command": "g++"為使用g++編譯,對于c++源碼,"gcc"為使用gcc編譯,對應c源碼,"make"對應makefile文件編譯,源碼工程目錄下必須有對應makefile工程

總結

以上是生活随笔為你收集整理的ubuntu下vscode调试开发踩过的坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。