C/C++程序調試

在使用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後, 輸入命令focuslayout:

  • list默認參數可以用show listsize來查看
    list 5,10 顯示第5行到第10行的代碼;

  • shell clear清空屏幕

  • break 設置一個斷點

  • 使用clear命令和delete命令 刪除斷點
  • run 開始執行程序
  • continue 讓程序繼續運行,直到下個斷點或者結束
  • print R
  • next繼續執行下一條語句,只執行一條。
  • quit退出gdb調試
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章