MinGW與gdb調試,MinGW中沒有gdb.exe解決辦法


 

MinGW(Minamalist GNU For Windows)是個精簡的C/C++編譯器,它實際上是將經典的開源C語言編譯器GCC移植到了Windows下,並且包含了Win32API,因此可以將源代碼編譯生成Windows下的可執行程序。

一句話來概括,MinGW是GCC的Windows版本

 

MinGW是開源軟件,可以免費使用

MinGW由一個活躍的開源社區在持續維護,不會過時

MinGW使用Windows的C語言運行庫,編譯出的程序不需要第三方DLL,可以直接在Windows下運行。

對於初學C語言的人來說,MinGW是正合適的編譯器,至少黑色的命令提示符界面很有編程的氣氛,感覺很酷。

雖然VC6等編譯器,只要點擊鼠標就可以完成編譯,但它會自動生成一大堆工程文件,讓初學者摸不着頭腦,而MinGW則只會生成一個可執行文件。

總而言之,對於一般人來說,MinGW適合學習C語言時使用,真正工作還是VC6好用。

 

MinGW安裝

標准的MinGW需要連接網絡在線安裝,

MinGW默認的安裝位置是“c:\MinGW”,如果沒有特殊需求,默認即可

安裝過程中,會彈出“MinGW Installation Manager”安裝管理界面,選擇需要安裝的組件。

 

右鍵選擇套件,勾選Mark For Installation

左上角菜單Installation選擇Apply change就開始安裝。

 

修改環境變量:

選擇計算機—屬性—高級系統設置—環境變量,在系統變量中找到Path變量,編輯Path變量,在變量值的最前面添加“C:\MinGW\bin;”,這是為了防止和VC/.NET之類的makefile命令沖突。

 

在開始菜單中點擊“運行”,輸入cmd,打開命令行,

輸入mingw-get,如果彈出Mingw Installation Manager窗口,說明安裝正常。

然后關閉Mingw Installation Manager窗口,否則接下來的步驟會報錯

 

在cmd中輸入命令mingw-get install gcc,等待一會,gcc就安裝成功了,

如果想安裝g++,gdb,只要輸入命令mingw-get install g++和mingw-get install gdb

 

使用gdb調試程序:

在cmd當前工作目錄寫c程序1.cpp,在cmd中輸入命令,gcc 1.cpp -g,編譯選項-g告訴編譯器生成調試信息;

如果要用gdb調試,編譯時要加上-g選項,生成調試用的符號表;

第一步:編譯程序  

gcc 1.cpp -g

生成可執行文件a.exe

第二步:運行gdb 

gdb a.exe

這樣,gdb在運行時會自動裝入剛才生成的可執行程序。

第三步:查看源碼

<gdb>l

#include <stdio.h>
void swap(int a,int b)
{
    int t=a;a=b;b=t;
}
 
int main()
{
    int a=3,b=4;
    swap(3,4);
    printf("%d %d\n",a,b);
    return 0;
}

這里<gdb>是gdb的提示符,字母l是輸入的命令,它是list(列出程序清單)的縮寫。

如果用l 15,將會顯示第15行(以及它前后的若干行)。所有這些操作,都可以用help list命令來查看;

第四步:加斷點並運行

<gdb> b 5

Breakpoint 1 at 0x4016b6:file 1.cpp,line 5.

<gdb> r

Starting Program:D:\\\\4-4\4-4/a.exe

breakpoint 1,swap(a=3,b=4) at 1.cpp;5

其中b命令把斷點設在了第5行,r命令運行程序,之后碰到斷點並停止。

運行程序的命令是r(run),但會一直執行到程序結束

可以用b(break)命令設置斷點讓它停下來

第五步:查看調用棧

<gdb> bt

這一步是關鍵。根據bt命令,調用棧中包含兩個棧幀:#0和#1,其中0號是當前棧幀--swap函數,1號是它的“上一個”棧幀--main函數。在這里我們甚至能看到swap函數的返回地址

<gdb> p a

使用p命令可以打印變量值

up命令選擇上一棧幀

q命令退出gdb

bt相關命令可以通過help stack來學習

 

 

 

 

 

 

MinGW中沒有gdb.exe解決辦法

配置好MinGW路徑后,打開命令提示符,輸入 mingw-get install gdb

 

 https://code.visualstudio.com/docs/cpp/config-mingw

 https://www.zhihu.com/question/333233461

 

轉: https://fengliurenwu.blog.csdn.net/article/details/110085502

https://blog.csdn.net/qq_37804582/article/details/104832999

https://blog.csdn.net/bat67/article/details/76095813

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM