校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 在Linux系統中使用GDB來調試C/C++程序的方法

在Linux系統中使用GDB來調試C/C++程序的方法

熱門標簽:貴陽語音電銷機器人招商 百度地圖標注陰影動態 北京市地圖標注 焦作人工智能電話機器人軟件 鹽城客服外呼系統軟件 淘寶系統退貨外呼項目考試答案 2020電銷機器人排行 鄭州營銷外呼系統運營商 廳外呼梯系統布線

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

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

Debian 或 Ubuntu

   

復制代碼
代碼如下:
$ sudo apt-get install gdb

Arch Linux

   

復制代碼
代碼如下:
$ sudo pacman -S gdb

Fedora,CentOS 或 RHEL:

   

復制代碼
代碼如下:
$sudo yum install gdb

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

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

   

復制代碼
代碼如下:
#include stdio.h>
#include stdlib.h>

int main(int argc, char **argv)
{
int i;
int a=0, b=0, c=0;
double d;
for (i=0; i100; i++)
{
a++;
if (i>97)
d = i / 2.0;
b++;
}
return 0;
}

GDB的使用

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

   

復制代碼
代碼如下:
$ gdb -tui [可執行程序名]

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

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

   

復制代碼
代碼如下:
break [行號]

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

   

復制代碼
代碼如下:
break [函數名]

甚至可以設置條件斷點

   

復制代碼
代碼如下:
break [行號] if [條件]

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

   

復制代碼
代碼如下:
break 11 if i > 97

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

最后但也是很重要的是,我們可以設置一個“觀察斷點”,當這個被觀察的變量發生變化時,程序會被停止。

   

復制代碼
代碼如下:
watch [變量]

這里我們可以設置如下:

   

復制代碼
代碼如下:
watch d

當d的值發生變化時程序會停止運行(例如,當i>97為真時)。

當設置斷點后,使用"run"命令開始運行程序,或按如下所示:

  

復制代碼
代碼如下:
r [程序的輸入參數(如果有的話)]

gdb中,大多數的命令單詞都可以簡寫為一個字母。

不出意外,程序會停留在11行。這里,我們可以做些有趣的事情。下列命令:

   

復制代碼
代碼如下:
bt

回溯功能(backtrace)可以讓我們知道程序如何到達這條語句的。

    info locals

這條語句會顯示所有的局部變量以及它們的值(你可以看到,我沒有為d設置初始值,所以它現在的值是任意值)。

當然:

   

復制代碼
代碼如下:
p [變量]

這個命令可以顯示特定變量的值,而更進一步:

   

復制代碼
代碼如下:
ptype [變量]

可以顯示變量的類型。所以這里可以確定d是double型

既然已經到這一步了,我么不妨這么做:

   

復制代碼
代碼如下:
set var [變量] = [新的值]

這樣會覆蓋變量的值。不過需要注意,你不能創建一個新的變量或改變變量的類型。我們可以這樣做:

   

復制代碼
代碼如下:
set var a = 0

如其他優秀的調試器一樣,我們可以單步調試:

   

復制代碼
代碼如下:
step

使用如上命令,運行到下一條語句,有可能進入到一個函數里面。或者使用:

   

復制代碼
代碼如下:
next

這可以直接運行下一條語句,而不進入子函數內部。

結束測試后,刪除斷點:

   

復制代碼
代碼如下:
delete [行號]

從當前斷點繼續運行程序:

   

復制代碼
代碼如下:
continue

退出GDB:

   

復制代碼
代碼如下:
quit

總之,有了GDB,編譯時不用祈禱上帝了,運行時不用血祭了,再也不用printf(“test“)了。當然,這里所講的并不完整,而且GDB的功能遠遠不止于此。所以我強烈建議你自己更加深入的學習它。我現在感興趣的是將GDB整合到Vim中。同時,這里有一個備忘錄記錄了GDB所有的命令行,以供查閱。

你對GDB有什么看法?你會將它與圖形調試器對比嗎,它有什么優勢呢?對于將GDB集成到Vim有什么看法呢?將你的想法寫到評論里。

標簽:青島 遼寧 六安 周口 大興安嶺 大理 大慶 樂山

巨人網絡通訊聲明:本文標題《在Linux系統中使用GDB來調試C/C++程序的方法》,本文關鍵詞  在,Linux,系統,中,使用,GDB,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在Linux系統中使用GDB來調試C/C++程序的方法》相關的同類信息!
  • 本頁收集關于在Linux系統中使用GDB來調試C/C++程序的方法的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    色综合一个色综合亚洲| 欧美日本高清视频在线观看| 欧美中文字幕一二三区视频| 亚洲视频小说图片| 日本道精品一区二区三区| 亚洲午夜免费福利视频| 3d成人h动漫网站入口| 日本午夜一本久久久综合| 欧美一区二区啪啪| 国产福利一区在线| 亚洲日本乱码在线观看| 欧美女孩性生活视频| 免费成人性网站| 国产精品久久久久久久久快鸭 | 欧美日韩在线播放| 久久福利资源站| 亚洲欧美日韩久久精品| 欧美一级久久久久久久大片| 成人av在线播放网站| 日韩av在线播放中文字幕| 国产精品无码永久免费888| 这里只有精品免费| 91国产成人在线| 高清国产一区二区三区| 另类小说欧美激情| 1024精品合集| 午夜视频在线观看一区二区| 91精品综合久久久久久| 欧美麻豆精品久久久久久| 亚洲国产精品一区二区尤物区| 日韩一区二区三区观看| av在线免费不卡| 另类小说综合欧美亚洲| 亚洲欧美成人一区二区三区| www久久精品| 7777精品伊人久久久大香线蕉完整版| 亚洲欧洲色图综合| 精品日韩在线观看| 欧美老女人第四色| 色94色欧美sute亚洲13| 国产91精品免费| 精品午夜一区二区三区在线观看| 亚洲妇女屁股眼交7| 中文字幕一区二| 国产校园另类小说区| 欧美日韩综合一区| 日韩视频国产视频| 亚洲电影中文字幕在线观看| 欧美影片第一页| 91国产免费观看| 国产美女精品一区二区三区| 日韩中文字幕91| 日韩精品一区二区三区四区视频 | 韩国v欧美v日本v亚洲v| 日韩精品免费专区| 亚洲va欧美va人人爽| 尤物视频一区二区| 亚洲国产成人tv| 亚洲不卡在线观看| 午夜日韩在线观看| 日韩国产精品大片| 久久福利资源站| 成人综合激情网| 色先锋久久av资源部| 欧美自拍偷拍一区| 欧美一卡二卡三卡四卡| 精品国产乱码91久久久久久网站| 精品少妇一区二区三区日产乱码| 精品国产成人系列| 久久久久88色偷偷免费| 国产女同互慰高潮91漫画| 亚洲视频在线一区二区| 亚洲综合免费观看高清完整版在线 | 久久黄色级2电影| 精品一区二区三区视频| 丁香婷婷综合色啪| 欧美性受xxxx黑人xyx| 91精品国产欧美一区二区成人| 欧美tickling网站挠脚心| 久久久精品tv| 亚洲美女视频一区| 日韩制服丝袜av| 国内精品视频一区二区三区八戒| 国产精品 欧美精品| 在线日韩一区二区| 精品日产卡一卡二卡麻豆| 欧美国产一区在线| 亚洲bt欧美bt精品| 国产成a人无v码亚洲福利| 91国产丝袜在线播放| 日韩片之四级片| 亚洲欧洲三级电影| 久久精品久久99精品久久| 成人av先锋影音| 91精品国产手机| 亚洲视频在线一区| 狠狠久久亚洲欧美| 欧美精品免费视频| 国产精品国产三级国产| 日韩国产精品久久| 欧美综合欧美视频| 国产精品国产馆在线真实露脸| 丝袜诱惑制服诱惑色一区在线观看| 国产一区二区三区| 欧美日本国产视频| 亚洲欧美日韩一区二区三区在线观看| 免费成人深夜小野草| 在线观看视频91| 中文字幕亚洲在| 成人黄页毛片网站| 久久先锋资源网| 久久精品理论片| 日韩午夜电影在线观看| 亚洲成人动漫在线免费观看| 91最新地址在线播放| 久久精品欧美一区二区三区麻豆| 丝袜脚交一区二区| 91国内精品野花午夜精品 | 91色视频在线| 中文字幕成人av| 国产一区二区三区高清播放| av一本久道久久综合久久鬼色| 亚洲精品一区二区三区福利 | 99精品国产一区二区三区不卡 | 国产丝袜欧美中文另类| 国产原创一区二区| 精品久久免费看| 国模少妇一区二区三区| 精品理论电影在线观看| 久久激情综合网| 久久久久久久久久久久久夜| 裸体健美xxxx欧美裸体表演| 欧美三级中文字幕| 亚洲最大成人综合| 日本伦理一区二区| 亚洲免费视频成人| 懂色一区二区三区免费观看| 欧美精品一区二区三区蜜臀| 国产在线视频精品一区| 精品国产一二三| 国产一区日韩二区欧美三区| 精品国产亚洲在线| 久久精品视频免费| 粉嫩av亚洲一区二区图片| 国产精品乱人伦中文| 一本色道a无线码一区v| 一区二区三区欧美| 51午夜精品国产| 国产一区福利在线| 国产精品理论片在线观看| 91在线云播放| 一区二区三区产品免费精品久久75| 亚洲国产精品自拍| 亚洲国产一二三| 丝袜亚洲另类丝袜在线| 国产欧美一区二区精品秋霞影院 | 日本一道高清亚洲日美韩| 国产综合色产在线精品| 国产日韩欧美综合一区| 成人av在线资源网| 亚洲一区日韩精品中文字幕| 欧美日韩国产不卡| 久久99精品久久久久| 国产精品色一区二区三区| 在线观看日韩av先锋影音电影院| 日韩精品欧美成人高清一区二区| 久久久久久97三级| 色偷偷88欧美精品久久久| 蜜臀精品一区二区三区在线观看 | 日韩一区二区三区av| www.亚洲人| 久久国产麻豆精品| 亚洲色大成网站www久久九九| 欧美美女喷水视频| 成人99免费视频| 蜜臀久久99精品久久久久宅男| 国产精品嫩草99a| 精品伦理精品一区| 欧美日韩国产高清一区二区三区 | 欧美国产欧美综合| 国产91丝袜在线播放九色| 亚洲福利国产精品| 国产日本亚洲高清| 91精品国产aⅴ一区二区| 色综合激情五月| 国产精品一区二区三区四区| 日日夜夜免费精品| 亚洲一区二区三区四区在线免费观看| 久久精品一区二区| 26uuu国产一区二区三区| 欧美一级在线观看| 欧美乱妇20p| 在线观看日韩高清av| 91片在线免费观看| 亚洲精品一区二区三区福利| 91超碰这里只有精品国产| 欧美午夜精品一区二区蜜桃| 99麻豆久久久国产精品免费 | 久久www免费人成看片高清| 午夜日韩在线电影|