歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用GDB命令行調試器調試C/C++程序

沒有調試器的情況下編寫程序時最糟糕的狀況是什麼?編譯時跪著祈禱不要出錯?用血祭召喚惡魔幫你運行程序?或者在每一行代碼間添加printf("test")語句來定位錯誤點?如你所知,編寫程序時不使用調試器的話是不方便的。幸好,linux下調試還是很方便的。大多數人使用的IDE都集成了調試器,但 linux 最著名的調試器是命令行形式的C/C++調試器GDB。然而,與其他命令行工具一致,DGB需要一定的練習才能完全掌握。這裡,我會告訴你GDB的基本情況及使用方法。

GDB調試程序用法 http://www.linuxidc.com/Linux/2013-06/86044.htm

GDB+GDBserver無源碼調試Android 動態鏈接庫的技巧 http://www.linuxidc.com/Linux/2013-06/85936.htm

使用hello-gl2建立ndk-GDB環境(有源碼和無源碼調試環境) http://www.linuxidc.com/Linux/2013-06/85935.htm

在Ubuntu上用GDB調試printf源碼 http://www.linuxidc.com/Linux/2013-03/80346.htm

Linux下用GDB調試可加載模塊 http://www.linuxidc.com/Linux/2013-01/77969.htm

Ubuntu下使用GDB斷點Go程序 http://www.linuxidc.com/Linux/2012-06/62941.htm

安裝GDB

大多數的發行版倉庫中都有GDB

Debian 或 Ubuntu

  1. $ sudo apt-get install gdb

Arch Linux

  1. $ sudo pacman -S gdb

Fedora,CentOS 或 RHEL:

  1. $sudo yum install gdb

如果在倉庫中找不到的話,可以從官網中下載。

示例代碼

當學習GDB時,最好有一份代碼,動手試驗。下列代碼是我編寫的簡單例子,它可以很好的體現GDB的特性。將它拷貝下來並且進行實驗——這是最好的方法。

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main(int argc,char**argv)
  5. {
  6. int i;
  7. int a=0, b=0, c=0;
  8. double d;
  9. for(i=0; i<100; i++)
  10. {
  11. a++;
  12. if(i>97)
  13. d = i /2.0;
  14. b++;
  15. }
  16. return0;
  17. }

GDB的使用

首先最重要的,你需要使用編譯器的 “-g“選項來編譯程序,這樣可執行程序才能通過GDB來運行。通過下列語句開始調試:

  1. $ gdb -tui [可執行程序名]

使用”-tui“選項可以將代碼顯示在一個漂亮的交互式窗口內(所以被稱為“文本用戶界面 TUI”),在這個窗口內可以使用光標來操控,同時在下面的GDB shell中輸入命令。

現在我們可以在程序的任何地方設置斷點。你可以通過下列命令來為當前源文件的某一行設置斷點。

  1. break[行號]

或者為一個特定的函數設置斷點:

  1. break[函數名]

甚至可以設置條件斷點

  1. break[行號]if[條件]

例如,在我們的示例代碼中,可以設置如下:

  1. break11if i >97

這樣,程序循環97次之後停留在“a++”語句上。這樣是非常方便的,避免了我們需要手動循環97次。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-11/109845p2.htm

Copyright © Linux教程網 All Rights Reserved