国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[Linux] Linux代碼調(diào)試器 -- gdb

這篇具有很好參考價(jià)值的文章主要介紹了[Linux] Linux代碼調(diào)試器 -- gdb。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

1、背景

1、程序的發(fā)布方式有兩種,debug模式和release模式
2、Linux gcc/g++出來(lái)的二進(jìn)制程序,默認(rèn)是release模式
3、要使用gdb調(diào)試,必須在源代碼生成二進(jìn)制程序的時(shí)候, 加上 -g 選項(xiàng)

2、使用gdb

2.1 生成debug版本

我們先來(lái)寫一段C語(yǔ)言代碼:

#include <stdio.h>

int main()
{
    int i = 0;
    for(i = 0; i < 5; i++)
	{
    	printf("hello linux!\n");
    }                                                                                                                                   
    return 0;
}

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

這里我們正常再編寫一個(gè)Makefile文件,用于自動(dòng)化構(gòu)建,我們要還是正常的編寫生成的可執(zhí)行文件就是release版本,但是在gcc編譯代碼的時(shí)候加上 -g 選項(xiàng),這樣生成的就是debug版本的可執(zhí)行程序了。
[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維
[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維
此時(shí)我們生成的就是debug版本的可執(zhí)行文件。

2.2 進(jìn)入gdb

gdb test_debug //gdb 可執(zhí)行程序名

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.3 顯示源代碼

list / l 行號(hào):顯示 binFile 源代碼,接著上次的位置往下列,每次列 10 行。 list / l
函數(shù)名:列出某個(gè)函數(shù)的源代碼。

list n // 將第n行放在輸出的十行中間輸出出來(lái)
list 函數(shù)名 // 從函數(shù)名開始打印10行出來(lái)

這里 list 可以簡(jiǎn)寫為 l 使用。
[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.4 運(yùn)行程序/開始調(diào)試

r或run:運(yùn)行程序。

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

如果存在斷點(diǎn),就會(huì)跳轉(zhuǎn)到斷點(diǎn)行,這就是調(diào)試。

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.5 打斷點(diǎn),查看斷點(diǎn)信息

break(b) 行號(hào):在某一行設(shè)置斷點(diǎn)
break 函數(shù)名:在某個(gè)函數(shù)開頭設(shè)置斷點(diǎn)

b 行號(hào) // 在某一行打斷點(diǎn)

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

info break :查看斷點(diǎn)信息

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.6 刪除斷點(diǎn)

delete breakpoints:刪除所有斷點(diǎn)
delete breakpoints n:刪除序號(hào)為n的斷點(diǎn)

d // delete簡(jiǎn)寫,直接d是刪除所有斷點(diǎn)

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

d Num // 刪除編號(hào)為Num的斷點(diǎn)

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

這里我們可以發(fā)現(xiàn),在一次調(diào)試的周期中,斷點(diǎn)被創(chuàng)建出來(lái)再被刪除,然后再去創(chuàng)建斷點(diǎn),斷點(diǎn)序號(hào)是線性遞增的的,不是刪掉后重新按連續(xù)的升序去排。

2.7 斷電的禁用、啟用

disable breakpoints:禁用斷點(diǎn)

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

enable breakpoints:?jiǎn)⒂脭帱c(diǎn)

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.8 逐語(yǔ)句執(zhí)行

s或step:進(jìn)入函數(shù)調(diào)用

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.9 逐過(guò)程執(zhí)行

n 或 next:?jiǎn)螚l執(zhí)行(不進(jìn)入函數(shù)調(diào)用)

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.10 跟蹤變量

display 變量名:跟蹤查看一個(gè)變量,每次停下來(lái)都顯示它的值

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

undisplay:取消對(duì)先前設(shè)置的所有變量的跟蹤

undisplay n:取消對(duì)先前設(shè)置的編號(hào)為n的變量的跟蹤

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維
[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.11 跳轉(zhuǎn)到X行

until X行號(hào):跳至X行

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.12 跳轉(zhuǎn)到下一個(gè)斷點(diǎn)

continue(或c):從當(dāng)前位置開始連續(xù)而非單步執(zhí)行程序

[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.13 運(yùn)行完整個(gè)指定函數(shù)

finish:執(zhí)行到當(dāng)前函數(shù)返回,然后挺下來(lái)等待命令

2.14 查看調(diào)用堆棧

breaktrace(或bt):查看各級(jí)函數(shù)調(diào)用及參數(shù)

當(dāng)我們主函數(shù)中調(diào)用了其他函數(shù),我們使用bt命令就能看到所調(diào)用的堆棧:
我們這次又寫了一個(gè)func函數(shù),并且進(jìn)入到func函數(shù)中,查看調(diào)用的堆棧,然后再跑完func函數(shù),再次查看調(diào)回用的堆棧,bt命令可以完整的看到堆棧調(diào)用的情況。
[Linux] Linux代碼調(diào)試器 -- gdb,Linux,linux,運(yùn)維

2.15 設(shè)置變量的值

set var 變量名 = val // 將某變量的值設(shè)置為val

用處:在處理判斷邏輯出問(wèn)題的時(shí)候使用。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-742596.html

到了這里,關(guān)于[Linux] Linux代碼調(diào)試器 -- gdb的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux調(diào)試器之gdb

    Linux調(diào)試器之gdb

    我們前面介紹了幾個(gè)基本的環(huán)境開發(fā)工具。例如通過(guò)yum我們可以安裝和卸載軟件、通過(guò)vim我們可以寫代碼、通過(guò)gcc和g++我們可以編譯代碼成可執(zhí)行程序。但是如何在Linux下調(diào)試代碼呢?我們并未介紹,本期我們將來(lái)介紹最后一個(gè)工具 --- 調(diào)試器gdb。 程序的發(fā)布方式 gdb基本的調(diào)

    2024年04月16日
    瀏覽(37)
  • Linux - 還不懂 gdb 調(diào)試器?(調(diào)試軟件)

    Linux - 還不懂 gdb 調(diào)試器?(調(diào)試軟件)

    當(dāng)前,我們可以使用 make/makefile 來(lái)程序化執(zhí)行代碼文件;可以使用 gcc/g++ 等編譯器來(lái)編譯代碼;可以使用 vim 編輯器來(lái)編寫代碼;其實(shí)在 Linux 當(dāng)中還有一個(gè)工具,可以實(shí)現(xiàn)調(diào)試工作,這個(gè)工具就是 -- gdb。 在了解調(diào)試器之前,你應(yīng)該對(duì)代碼的發(fā)布版本做一些了解: 我們?cè)?VS

    2024年02月07日
    瀏覽(21)
  • 【Linux】gdb調(diào)試器的使用

    【Linux】gdb調(diào)試器的使用

    文章目錄 一、gdb簡(jiǎn)介 二、調(diào)試前的準(zhǔn)備 1、生成調(diào)試文件 2、啟動(dòng) gdb? 三、gdb 使用方法? 1、查看源代碼 2、設(shè)置 / 查看斷點(diǎn)(多種方式設(shè)置斷點(diǎn)) 方法一 方法二 方法三 3、run? 4、刪除斷點(diǎn)、斷點(diǎn)無(wú)效 5、逐過(guò)程調(diào)試(以函數(shù)為單位) 6、逐語(yǔ)句調(diào)試 7、查看調(diào)用鏈 8、查看變

    2024年02月02日
    瀏覽(35)
  • 【Linux】——調(diào)試器-gdb的使用

    【Linux】——調(diào)試器-gdb的使用

    序言: 本期,我將帶領(lǐng)大家學(xué)習(xí)的關(guān)于linux下的 調(diào)試器gdb 的使用,廢話不多說(shuō)跟著我一起去看看吧??! 目錄 前言 (一)背景介紹 1、debug模式和release模式 2、為什么Release不能調(diào)試但DeBug可以調(diào)試 3、初步見識(shí) 1??readelf (二)調(diào)試代碼 1、命名大全 2、具體演示 0??行號(hào)顯

    2024年02月07日
    瀏覽(23)
  • 【Linux】Linux下調(diào)試器gdb的使用

    【Linux】Linux下調(diào)試器gdb的使用

    ??作者主頁(yè):@安 度 因 ??學(xué)習(xí)社區(qū):StackFrame ??專欄鏈接:Linux 如果無(wú)聊的話,就來(lái)逛逛 我的博客棧

    2024年02月19日
    瀏覽(29)
  • 【Linux】調(diào)試器:gdb 的基本使用

    gdb 全稱 GNU symbolic debugger,是 Linux 下常用的程序調(diào)試器。 調(diào)試器的核心工作,主要是為了定位問(wèn)題。廢話不多說(shuō)。 gdb 的安裝 另外: gcc、g++ 默認(rèn)形成的版本是 release,不是 debug 版本!所以想要在 Linux 下調(diào)試程序,需要在 Makefile 文件 中,添加 -g 選項(xiàng) 指定以 dubug 方式編譯程

    2024年02月16日
    瀏覽(23)
  • Linux | 調(diào)試器GDB的詳細(xì)教程【純命令行調(diào)試】

    Linux | 調(diào)試器GDB的詳細(xì)教程【純命令行調(diào)試】

    學(xué)習(xí)了【vim】知道了如何 編輯 一個(gè)代碼文本 學(xué)習(xí)了【gcc】知道了如何 編譯 一個(gè)代碼文本 學(xué)習(xí)了【make/Makefile】知道了如何 自動(dòng)化構(gòu)建 一個(gè)代碼文本 但是如何對(duì)一段代碼去進(jìn)行調(diào)試呢,此時(shí)就要使用到 Linux下的調(diào)試器gdb 了。對(duì)于這個(gè)調(diào)試器來(lái)說(shuō),不像是VS中那樣的圖形化界

    2024年02月02日
    瀏覽(28)
  • Linux開發(fā)工具之調(diào)試器gdb

    程序的發(fā)布方式有兩種,debug模式和release模式 Linux gcc/g++出來(lái)的二進(jìn)制程序,默認(rèn)是release模式 要使用gdb調(diào)試,必須在源代碼生成二進(jìn)制程序的時(shí)候, 加上 -g 選項(xiàng) ? 所以一份代碼若要被調(diào)試必須是debug模式,但是在linux下我們編譯代碼的時(shí)候默認(rèn)為release模式,要想讓我們的代碼

    2024年02月07日
    瀏覽(22)
  • Linux:gdb調(diào)試器的解析+使用(超詳細(xì)版)

    Linux:gdb調(diào)試器的解析+使用(超詳細(xì)版)

    程序的發(fā)布方式有兩種,debug模式和release模式 debug模式:可以被調(diào)試; release模式:不可以被調(diào)試。 為什么需要debuy和release這兩個(gè)模式呢? 答:程序員在開發(fā)的時(shí)候需要去調(diào)試代碼,所以需要debuy模式,而用戶一般不懂這些代碼的調(diào)試不需要debuy模式,只需要快速的下載和安

    2024年02月05日
    瀏覽(30)
  • [linux開發(fā)工具]小程序--進(jìn)度條、調(diào)試器 - gdb

    [linux開發(fā)工具]小程序--進(jìn)度條、調(diào)試器 - gdb

    ?? 作者簡(jiǎn)介 :RO-BERRY ?? 學(xué)習(xí)方向:致力于C、C++、數(shù)據(jù)結(jié)構(gòu)、TCP/IP、數(shù)據(jù)庫(kù)等等一系列知識(shí) ?? 日后方向 : 偏向于CPP開發(fā)以及大數(shù)據(jù)方向,歡迎各位關(guān)注,謝謝各位的支持 第一種情況 執(zhí)行結(jié)果如下: 可以看到程序先執(zhí)行printf再執(zhí)行sleep 第二種情況 執(zhí)行結(jié)果如下: 在這里

    2024年02月22日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包