在使用IDE(Qtcreator/VS)進行開發中,GDB/CDB都已經集成到開發環境中!
qtcreator只支持gdb和cdb兩種調試器。
CDB
windows系統下主要的調試器CDB(Console Debugger)的簡稱,只能調試用戶程序,只有控制檯界面,以命令行形式工作。
平臺/Platform | 編譯器/Compiler | 調試器/Native Debugger |
---|---|---|
Linux | GCC/ICC | GDB, LLDB (experimental) |
Unix | GCC/ICC | GDB |
macOS | GCC/Clang | LLDB,FSF GDB(experimental) |
Windows/MinGW | GCC | GDB |
Windows/MSVC | Microsoft Visual C++ Compiler | Debugging Tools for Windows/CDB |
如windows平臺上面MinGW版本的qtcreator就支持GDB調試器。而MSVC版本的qtcreator默認是沒有調試器的,需要自己去安裝並設置好調試器(CDB)。
GDB
GDB的全稱是GNU project debugger,雖然它是命令行模式的調試工具,但是它的功能強大到你無法想象.
- 介紹: gdb是Linux環境下的代碼調試工具
- 使用:需要在源代碼生成的時候加上 -g 選項
- 開始使用: gdb binFile
- 退出:ctrl + d 或 quit
- 提供了以下的功能:
1.在程序中設置斷點,當程序運行到斷點處暫停
2.顯示變量的值,可以打印或者監視某個變量,將某個變量的值顯示出來
3.單步執行
4.運行時修改變量的值.5跟蹤路徑.6.線程切換,等等。
GCC
gcc命令使用GNU推出的基於C/C++的編譯器,是開放源代碼領域應用最廣泛的編譯器。
語法
gcc(選項)(參數)
選項
-o:指定生成的輸出文件;
-E:僅執行編譯預處理;
-S:將C代碼轉換爲彙編代碼;
-wall:顯示警告信息;
-c:僅執行編譯操作,不進行連接操作。
-g:只是編譯器,在編譯的時候,產生調試信息。
參數
C源文件:指定C語言源代碼文件。
例如
`gcc -g -o LearnGDB LearnGDB.c
指定只是編譯,生成的輸出文件是LearnGDB
使用GDB調試程序
LearnGDB.c 源代碼
#include<stdio.h>
#include<math.h>
int main(void)
{
float pi=3.1415926;
float R;
float S=0;
printf("Please input your Raius\n");
scanf("%f",&R);
if (R>=0)
{
S=pi*R*R;
printf("The value of S is:%f\n",S);
}
else
printf("Sorry, Wrong input!!\n");
return 0;
}
- 要使用GDB調試程序,在編譯程序的時候需要加入 “-g”選項
`gcc -g -o LearnGDB LearnGDB.c
- gdb加載程序 命令格式:”gdb 要調試的文件全名”
$ gdb LearnGDB
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /home/osean/Coder/LearnGDB...done.
(gdb)
此時已經進入到GDB模式
使用如下命令啓動gdb: gdb -tui LearnGDB
或者在啓動gdb後, 輸入命令focus
或layout
:
list默認參數可以用show listsize來查看
list 5,10 顯示第5行到第10行的代碼;
shell clear
清空屏幕break 設置一個斷點
- 使用clear命令和delete命令 刪除斷點
run
開始執行程序continue
讓程序繼續運行,直到下個斷點或者結束print R
next
繼續執行下一條語句,只執行一條。quit
退出gdb調試