windows下使用vscode+makefile+mingw32調(diào)試

gcc -g 是一個常用的編譯器命令伯顶,用于在編譯過程中生成調(diào)試信息李滴。選項 "-g" 會告訴編譯器在生成的可執(zhí)行文件中包含調(diào)試符號觉义,以便進行調(diào)試设拟。

通過在終端中運行 "gcc -g <source_file.c> -o <output_file>" 命令慨仿,你可以編譯一個 C 源文件,并生成一個帶有調(diào)試信息的可執(zhí)行文件纳胧。請將 "<source_file.c>" 替換為你的源文件名镰吆,將 "<output_file>" 替換為你想要生成的可執(zhí)行文件名。

例如跑慕,如果你有一個名為 "main.c" 的源文件万皿,想要生成一個名為 "my_program" 的可執(zhí)行文件,可以使用以下命令:

gcc -g main.c -o my_program

這將在當(dāng)前目錄下生成一個名為 "my_program" 的可執(zhí)行文件核行,并包含調(diào)試信息牢硅,以便你可以使用調(diào)試器進行調(diào)試。

坑:
1钮科、無法調(diào)試是因為這個-g參數(shù)沒有添加
2唤衫、"targetArchitecture": "x86_64"可能不同平臺需要設(shè)置

tasks.json配置

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "test",
            "command": "mingw32-make",
            "args": [],
            "type": "shell",
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": false
            }
        },
    ]
}

launch.json配置

{
    "version": "0.2.0",  
    "configurations": [  
        {  
            "name": "(gdb) Launch", // 配置名稱,將會在啟動配置的下拉菜單中顯示  
            "type": "cppdbg",       // 配置類型绵脯,這里只能為cppdbg  
            "request": "launch",    // 請求配置類型佳励,可以為launch(啟動)或attach(附加)  
            "targetArchitecture": "x86_64",
            "program": "${workspaceFolder}/testdebug",// 將要進行調(diào)試的程序的路徑  
            "args": [],             // 程序調(diào)試時傳遞給程序的命令行參數(shù),一般設(shè)為空即可  
            "stopAtEntry": false,   // 設(shè)為true時程序?qū)和T诔绦蛉肟谔幥欤话阍O(shè)置為false  
            "cwd": "${workspaceFolder}", // 調(diào)試程序時的工作目錄赃承,一般為${workspaceFolder}即代碼所在目錄  
            "environment": [],  
            "externalConsole": false, // 調(diào)試時是否顯示控制臺窗口,一般設(shè)置為true顯示控制臺  
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\tools\\x86_64-12.2.0-release-win32-seh-msvcrt-rt_v10-rev2\\mingw64\\bin\\gdb.exe", // miDebugger的路徑悴侵,注意這里要與MinGw的路徑對應(yīng)  
            "preLaunchTask": "test", // 調(diào)試會話開始前執(zhí)行的任務(wù)瞧剖,一般為編譯程序,c++為g++, c為gcc  
            "setupCommands": [  
                {
                    "description": "為 gdb 啟用整齊打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "將反匯編風(fēng)格設(shè)置為 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "logging": {
                "moduleLoad": true,
                "programOutput": true,
                "trace": true,
                "traceResponse": true,
                "engineLogging": true
            },
        }
    ]  
}

C文件

#include <stdio.h>
#include <stdint.h>
#include <string.h>

int main(int argc, char *const argv[]){
    printf("  -h, --help                     help\n");
}

makefile文件[去掉-g將無法調(diào)試]

CC=gcc

all: testdebug.exe

testdebug.exe:
    ${CC} -g testdebug.c -o testdebug.exe #-g去掉將無法調(diào)試可免,切記

clean:
    rm -f testdebug.exe

注意不同系統(tǒng)可能文件格式不一樣

  1. WIN系統(tǒng)和LINUX系統(tǒng)的CRLF\LF
  2. 對環(huán)境變量可以在launch.json中配置
{
    "configurations": [
        {
            ......
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [{
                "name": "PYTHONHOME",  
                "value": "Python路徑"  
            }],
    ......
}
  1. tasks.json中使用gitbash,例如: sh build_msys_release.sh
    "tasks": [
        {
            "type": "shell",
            "label": "test",
            "command": "C:\\Program Files\\Git\\usr\\bin\\bash.exe",  
            "args": [
                "-c",
                "\"/d/build_msys_release.sh\""
            ],
            "options": {
                "cwd": "${workspaceFolder}",
                "env": {
                    "PATH": "C:\\Program Files\\Git\\usr\\bin;${env:PATH}"
                }
            },
        }
    ],
    "version": "2.0.0"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抓于,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子浇借,更是在濱河造成了極大的恐慌捉撮,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妇垢,死亡現(xiàn)場離奇詭異巾遭,居然都是意外死亡肉康,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門灼舍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吼和,“玉大人,你說我怎么就攤上這事骑素§排遥” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵砂豌,是天一觀的道長厢岂。 經(jīng)常有香客問我,道長阳距,這世上最難降的妖魔是什么塔粒? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮筐摘,結(jié)果婚禮上卒茬,老公的妹妹穿的比我還像新娘。我一直安慰自己咖熟,他們只是感情好圃酵,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著馍管,像睡著了一般郭赐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上确沸,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天捌锭,我揣著相機與錄音,去河邊找鬼罗捎。 笑死观谦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桨菜。 我是一名探鬼主播豁状,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼倒得!你這毒婦竟也來了泻红?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤霞掺,失蹤者是張志新(化名)和其女友劉穎谊路,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體根悼,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡凶异,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挤巡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剩彬。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖矿卑,靈堂內(nèi)的尸體忽然破棺而出喉恋,到底是詐尸還是另有隱情,我是刑警寧澤母廷,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布轻黑,位于F島的核電站,受9級特大地震影響琴昆,放射性物質(zhì)發(fā)生泄漏氓鄙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一业舍、第九天 我趴在偏房一處隱蔽的房頂上張望抖拦。 院中可真熱鬧,春花似錦舷暮、人聲如沸态罪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽复颈。三九已至,卻和暖如春沥割,著一層夾襖步出監(jiān)牢的瞬間耗啦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工驯遇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芹彬,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓叉庐,卻偏偏與公主長得像舒帮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陡叠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容