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

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇

這篇具有很好參考價(jià)值的文章主要介紹了『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

??博客主頁(yè):小王又困了

??系列專欄:Linux

??人之為學(xué),不日近則日退

??感謝大家點(diǎn)贊??收藏?評(píng)論??

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

目錄

一、背景知識(shí)介紹

二、gdb指令介紹


一、背景知識(shí)介紹

? ? ?在軟件開發(fā)中,通常會(huì)有兩種主要的構(gòu)建配置:Debug(調(diào)試)和Release(發(fā)布)。這兩種配置的存在是為了在不同的開發(fā)和使用階段提供不同的優(yōu)化和調(diào)試支持。以下是它們存在的主要原因:

??調(diào)試配置:

  • 符號(hào)信息:?Debug 配置通常包含完整的符號(hào)信息,這使得在調(diào)試過程中能夠準(zhǔn)確地追蹤到源代碼的行號(hào)和調(diào)用堆棧信息。這對(duì)于開發(fā)人員在調(diào)試應(yīng)用程序時(shí)非常重要。
  • 優(yōu)化程度低:?Debug 配置一般不進(jìn)行代碼優(yōu)化,以確保生成的代碼更易于調(diào)試。變量和表達(dá)式的值通常保留在內(nèi)存中,而不進(jìn)行過多的優(yōu)化操作。

??發(fā)布配置:

  • 符號(hào)信息:?Release 配置通常會(huì)剔除符號(hào)信息,減小可執(zhí)行文件的大小,并防止未經(jīng)授權(quán)的人員通過符號(hào)信息獲取源代碼的詳細(xì)信息。
  • 優(yōu)化成程度高:?Release 配置通常會(huì)進(jìn)行更多的代碼優(yōu)化,以提高應(yīng)用程序的性能。這包括刪除不必要的代碼、內(nèi)聯(lián)函數(shù)、變量寄存器優(yōu)化等。

gcc/g++編譯器默認(rèn)是以release的模式編譯得到可執(zhí)行程序,我們使用gdb是無法進(jìn)行調(diào)試的。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

想進(jìn)行代碼調(diào)試,我們就要讓代碼以debug的模式發(fā)布,需要加-g選項(xiàng)。

gcc code.c -o mycode -g

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

我們可以通過readelf mycode-d -S | grep debug查看mydoe-d文件中的debug信息。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

二、gdb指令介紹

? ? ?我會(huì)通過下面這段代碼,來給大家演示gdb的使用。

#include <stdio.h>
int Add(int n)
{
    int ret=0;
    int i=0;
    for(i=0;i<n;i++)
    {
        ret+=i;
    }
    return ret;
}

int main()
{
    int num=50;
    int sum=Add(num);
    printf("%d\n",sum);
    return 0;
}

??進(jìn)入gdb環(huán)境

  • gdb binFile:進(jìn)入gdb環(huán)境,binFile是一個(gè)可執(zhí)行程序。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

??退出gdb環(huán)境:

  • ctrl + d quit :退出gdb環(huán)境

??顯示代碼:

  • ?list l :顯示binFile源代碼,接著上次的位置往下列,每次列10行。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

  • list numnum是行號(hào),將源代碼的第num行在中間位置顯示。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

gdb會(huì)自動(dòng)記錄上一次執(zhí)行的指令,我們執(zhí)行一次 list 后,可以直接回車,就可以看到完整的源代碼。

??查看函數(shù):

  • list Func?l FuncFunc是函數(shù)名,列出某個(gè)函數(shù)的源代碼。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

??運(yùn)行程序:

  • run r 運(yùn)行程序,不是單步執(zhí)行程序。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

??設(shè)置斷點(diǎn):

  • break numb num:num表示行號(hào),在某行設(shè)置斷點(diǎn)。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

??查看斷點(diǎn):

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

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

??刪除斷點(diǎn):

  • d numnum表示斷點(diǎn)的編號(hào),刪除斷點(diǎn)。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

我們?cè)趧h除斷點(diǎn)時(shí),這里的num表示的不是行號(hào),我們要輸入要?jiǎng)h除斷點(diǎn)的編號(hào)。

注意:如果在調(diào)試過程中退出,那么再次進(jìn)入調(diào)試環(huán)境,上一次的調(diào)試信息會(huì)丟失,即之前設(shè)置的斷點(diǎn)都沒了。

??單步執(zhí)行:

  • ?n next:逐過程,單條執(zhí)行,當(dāng)有函數(shù)調(diào)用時(shí),不會(huì)進(jìn)入函數(shù)內(nèi)部。
  • ?s step:逐語句,進(jìn)入函數(shù)調(diào)用。
  • finish:跳出當(dāng)前函數(shù),執(zhí)行完當(dāng)前函數(shù)返回,然后停下來等待命令。

flish指令可以快速的幫我們查看問題是不是出在當(dāng)前函數(shù)中。?

??查看變量的值:

  • ?p 變量:打印變量的值。
  • display 變量:跟蹤查看一個(gè)變量,每次停下來都顯示它的值。

『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器

  • undisplay num:取消對(duì)先前設(shè)置的那些變量的追蹤,其中num是先前設(shè)置的跟蹤變量所對(duì)應(yīng)的編號(hào)。?
  • info locals:查看當(dāng)前函數(shù)棧幀中所有局部變量的值。

??其他指令:

  • until x:跳至x行,可以讓我們快速的運(yùn)行代碼塊。
  • ?c continue:繼續(xù)執(zhí)行直到下一個(gè)斷點(diǎn)。
  • disable?breakpoints:禁用斷點(diǎn)。『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇,Linux,linux,運(yùn)維,服務(wù)器
  • enable?breakpoints:?jiǎn)⒂脭帱c(diǎn)
  • break 函數(shù)名:在函數(shù)開頭設(shè)置斷點(diǎn)。
  • backtrace:查看堆棧。
  • set var:修改變量的值。
  • break filename:line_number:在文件的特定行設(shè)置斷點(diǎn)。示例:
b code.c:15

code.c這個(gè)源文件的第15行設(shè)置斷點(diǎn)。


??結(jié)語:?

? ? ?本次的內(nèi)容到這里就結(jié)束啦。希望大家閱讀完可以有所收獲,同時(shí)也感謝各位讀者三連支持。文章有問題可以在評(píng)論區(qū)留言,博主一定認(rèn)真認(rèn)真修改,以后寫出更好的文章。你們的支持就是博主最大的動(dòng)力。文章來源地址http://www.zghlxwxcb.cn/news/detail-761028.html

到了這里,關(guān)于『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gdb篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(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升級(jí)路』基礎(chǔ)開發(fā)工具——yum篇

    『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——yum篇

    ? ?? 博客主頁(yè): 小王又困了 ?? 系列專欄: Linux ?? 人之為學(xué),不日近則日退 ?? 感謝大家點(diǎn)贊??收藏?評(píng)論?? ? 目錄 一、Linux下安裝軟件的方案? ??1.1源代碼安裝 ??1.2rpm安裝 ??1.3yum安裝 二、Linux 軟件包管理器 yum ??2.1什么是軟件包 ??2.2關(guān)于 rzsz ??2.3查看軟件包

    2024年02月06日
    瀏覽(19)
  • 『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——vim篇

    『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——vim篇

    ?? 博客主頁(yè): 小王又困了 ?? 系列專欄: Linux ?? 人之為學(xué),不日近則日退? ?? 感謝大家點(diǎn)贊??收藏?評(píng)論?? 目錄 一、vim的基本概念? ??1.1命令模式 ??1.2插入模式 ??1.3底行模式 二、vim的基本操作 ??2.1進(jìn)入vim ??2.2模式轉(zhuǎn)換 ??2.3退出vim 三、命令模式命令集 ??

    2024年02月05日
    瀏覽(21)
  • 『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gcc/g++篇

    『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——gcc/g++篇

    ?? 博客主頁(yè): 小王又困了 ?? 系列專欄: Linux ?? 人之為學(xué),不日近則日退? ?? 感謝大家點(diǎn)贊??收藏?評(píng)論?? 目錄 一、快速認(rèn)識(shí)gcc/g++ ?二、預(yù)處理 ??1.1頭文件展開? ??1.2條件編譯 二、編譯 三、匯編 四、鏈接 ??4.1庫(kù)的概念 ??4.2庫(kù)的特點(diǎn) ??4.3庫(kù)的分類 ??4.4動(dòng)態(tài)

    2024年02月05日
    瀏覽(23)
  • 『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——make/Makefile篇

    『Linux升級(jí)路』基礎(chǔ)開發(fā)工具——make/Makefile篇

    ?? 博客主頁(yè): 小王又困了 ?? 系列專欄: Linux ?? 人之為學(xué),不日近則日退? ?? 感謝大家點(diǎn)贊??收藏?評(píng)論?? 目錄 一、認(rèn)識(shí)make/Makefile ??1.1make/Makefile的優(yōu)點(diǎn) ??1.2make/Makefile的使用 二、依賴關(guān)系和依賴方法 ??2.1依賴關(guān)系 ??2.2依賴方法 三、make工作原理 ??? 前言:

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

    程序的發(fā)布方式有兩種,debug模式和release模式 Linux gcc/g++出來的二進(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日
    瀏覽(23)
  • [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)
  • Linux開發(fā)工具-vim-gcc-gdb指令及使用

    Linux開發(fā)工具-vim-gcc-gdb指令及使用

    目錄 linux軟件包管理器yum(apt) linux開發(fā)工具 linux編輯器-vim使用 linux編譯器-gcc/g++使用 linux調(diào)試器-gdb使用 linux項(xiàng)目自動(dòng)化構(gòu)建工具-make/makefile linux第一個(gè)小程序-進(jìn)度條 使用github創(chuàng)建項(xiàng)目 使用git命令 我們前面學(xué)了關(guān)于linux的基本指令和基本權(quán)限的一些相關(guān)知識(shí),那么我們今天

    2024年03月10日
    瀏覽(28)
  • Linux中的開發(fā)工具(yum,vim,gcc/g++,gdb,Makefile,git)

    Linux中的開發(fā)工具(yum,vim,gcc/g++,gdb,Makefile,git)

    yum(Yellow dog Updater,Modified)是Linux下非常常用的一種 包管理器 。主要應(yīng)用在Fedora,RedHat,Centos等發(fā)行版上。 和手機(jī)上的軟件商店類似,我們可以使用 yum 來下載各種我們想要的軟件包。使用 yum 時(shí)必須聯(lián)網(wǎng)。 yum 基于 RPM 包管理,能夠從指定的服務(wù)器自動(dòng)下載 RPM 包并且安裝

    2024年02月08日
    瀏覽(25)
  • Linux開發(fā)工具大全 - 軟件包管理器yum | vim編輯器 | gcc/g++編譯器 | 自動(dòng)化構(gòu)建工具M(jìn)ake/Makefile | gdb調(diào)試工具

    Linux開發(fā)工具大全 - 軟件包管理器yum | vim編輯器 | gcc/g++編譯器 | 自動(dòng)化構(gòu)建工具M(jìn)ake/Makefile | gdb調(diào)試工具

    目錄 Ⅰ.? Linux 軟件包管理器 yum 一、yum 背景知識(shí) 二、yum 的基本使用 1、查看軟件包 2、軟件包名稱構(gòu)成 3、安裝軟件 4、卸載軟件 Ⅱ.vim編輯器 ?一、認(rèn)識(shí)vim 1、vim概念? 2、模式及其切換 ?二、vim使用 1、vim的指令(重要)? 命令模式 插入模式 底行模式 2、vim配置 Ⅲ.gcc/g++編

    2024年02月05日
    瀏覽(73)
  • Linux基礎(chǔ)開發(fā)工具之Linux自動(dòng)項(xiàng)目構(gòu)建工具的使用

    Linux基礎(chǔ)開發(fā)工具之Linux自動(dòng)項(xiàng)目構(gòu)建工具的使用

    目錄 前言 1.make/makefile 1.1?依賴關(guān)系/依賴方法 2.原理 3.項(xiàng)目清理 ?4.make的執(zhí)行問題 ?5.相關(guān)簡(jiǎn)單的符號(hào)介紹 總結(jié) ? 之前給大家介紹了我們?cè)陂_發(fā)過程中所需要使用到的編輯器vim,以及編譯器gcc/g++的使用,但是我相信大家在使用過程會(huì)發(fā)現(xiàn)我們?cè)诿看尉帉懞靡环荽a時(shí)總是需

    2024年02月13日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包