0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

linux編程GDB調(diào)試功能

汽車玩家 ? 來源:Hu先生Linux后臺(tái)開發(fā) ? 作者:Hu先生Linux后臺(tái)開發(fā) ? 2020-05-05 23:49 ? 次閱讀

GDB是一套字符界面的程序集,可以用它在linux上調(diào)試C和C++程序,它提供了以下的功能:

1 在程序中設(shè)置斷點(diǎn),當(dāng)程序運(yùn)行到斷點(diǎn)處暫停

2 顯示變量的值,可以打印或者監(jiān)視某個(gè)變量,將某個(gè)變量的值顯示出來

3 單步執(zhí)行

4 運(yùn)行時(shí)修改變量的值

5 跟蹤路徑

6 線程切換

等等

下面以以下程序?yàn)槔?/p>

linux編程GDB調(diào)試功能

linux編程GDB調(diào)試功能

當(dāng)我們要使用GDB進(jìn)行程序的調(diào)試時(shí),在用GCC編譯時(shí)需要加上-g,如下:

GDB之所以能夠進(jìn)行程序的調(diào)試也是在于進(jìn)行編譯時(shí)的-g選項(xiàng),當(dāng)設(shè)置了這個(gè)選項(xiàng)的時(shí)候,GCC會(huì)向程序中塞入一下信息,作為GDB調(diào)試時(shí)的鋪墊

,然后GDB才能夠利用這些鋪墊和信息與程序交互。

有兩種方式可以進(jìn)入GDB,一種就是直接在命令行上輸入gdb,然后再在gdb中用file命令加載要調(diào)試的程序:

linux編程GDB調(diào)試功能

另一種就是,直接在命令行上使用:gdb 程序名

linux編程GDB調(diào)試功能

這兩種方法都是要在GDB中加載已經(jīng)做了鋪墊的將被調(diào)試的程序。

進(jìn)行GDB并且加載了程序后,我們就可以進(jìn)行一系列的調(diào)試操作了:

1 用 "set args 參數(shù)值1 參數(shù)值2...."來設(shè)置輸入?yún)?shù)

2用“l(fā)ist 開始的行號(hào)"來打印內(nèi)容

linux編程GDB調(diào)試功能

list 還可以選取區(qū)間來打印代碼:

linux編程GDB調(diào)試功能

3.用 ”b 位置"設(shè)置斷點(diǎn)

4.用 “run 參數(shù)”來運(yùn)行程序

linux編程GDB調(diào)試功能

5.用"display 變量名“來顯示變量

6.用”c"來繼續(xù)運(yùn)行程序

linux編程GDB調(diào)試功能

7.用set命令來改變變量的值

8用q命令來退出GDB

linux編程GDB調(diào)試功能

9 用p命令來打印變量的值

10 設(shè)置條件斷點(diǎn)

11 用delete刪除斷點(diǎn)

linux編程GDB調(diào)試功能

12 用info break 來顯示斷點(diǎn)信息

linux編程GDB調(diào)試功能

13.用bt來顯示函數(shù)調(diào)用路徑

linux編程GDB調(diào)試功能

14用whatis或者ptype來顯示變量的類型

linux編程GDB調(diào)試功能

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11469

    瀏覽量

    212911
  • gdb
    gdb
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    13551
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    遠(yuǎn)程日志errDump調(diào)試功能實(shí)戰(zhàn)教程:案例驅(qū)動(dòng)的故障排查!

    通過真實(shí)案例場(chǎng)景,本教程將展示如何利用遠(yuǎn)程日志errDump調(diào)試功能定位系統(tǒng)崩潰、性能瓶頸等問題,從日志捕獲到原因分析,手把手帶您體驗(yàn)實(shí)戰(zhàn)中的調(diào)試流程。 本文特別分享errDump功能
    的頭像 發(fā)表于 06-09 16:51 ?103次閱讀
    遠(yuǎn)程日志errDump<b class='flag-5'>調(diào)試</b><b class='flag-5'>功能</b>實(shí)戰(zhàn)教程:案例驅(qū)動(dòng)的故障排查!

    為什么會(huì)報(bào)錯(cuò)Could not determine GDB version using command: arm-none-eabi-gdb --version?

    我已經(jīng)重啟電腦了,沒用; 重裝軟件沒有,沒有; 將ST_link_server卸載重裝也沒有; 將arm-none-eabi-gdb加入windows 11系統(tǒng)環(huán)境變量,也沒用; 將軟件的GDB
    發(fā)表于 03-12 08:08

    Microchip多功能MPLAB? PICkit? Basic調(diào)試器主要特性分析

    Microchip推出多功能MPLAB PICkitBasic調(diào)試器? ? ? ? 為使更多工程師能夠享受更強(qiáng)大的編程調(diào)試功能,Micro
    的頭像 發(fā)表于 03-10 18:42 ?727次閱讀

    嵌入式工程師都在找的【Linux內(nèi)核調(diào)試技術(shù)】建議收藏!

    處理器寄存器和全局?jǐn)?shù)據(jù)結(jié)構(gòu)等調(diào)試信息,而無需頻繁編譯和啟動(dòng)Linux內(nèi)核。這使得Kprobes成為了一種高效且靈活的內(nèi)核調(diào)試工具。 KGDB KGDB提供了一種使用GDB
    發(fā)表于 11-28 15:37

    Linux微信4.0.0版發(fā)布,功能再升級(jí)

    近日,備受矚目的Linux微信4.0.0版本終于迎來了正式發(fā)布。此次版本更新不僅帶來了多項(xiàng)實(shí)用功能,還實(shí)現(xiàn)了與Windows、macOS公測(cè)版本的功能一致和更新同步,為用戶帶來了更加便捷
    的頭像 發(fā)表于 11-06 10:59 ?707次閱讀

    Linux應(yīng)用編程的基本概念

    Linux應(yīng)用編程涉及到在Linux環(huán)境下開發(fā)和運(yùn)行應(yīng)用程序的一系列概念。以下是一些涵蓋Linux應(yīng)用編程的基本概念。
    的頭像 發(fā)表于 10-24 17:19 ?587次閱讀

    PLC遠(yuǎn)程編程調(diào)試平臺(tái)是什么

    在快速發(fā)展的工業(yè)自動(dòng)化領(lǐng)域,可編程邏輯控制器(PLC)作為核心控制設(shè)備,其穩(wěn)定運(yùn)行對(duì)于生產(chǎn)效率和安全性至關(guān)重要。然而,隨著生產(chǎn)規(guī)模的不斷擴(kuò)大和遠(yuǎn)程管理的需求增加,傳統(tǒng)的現(xiàn)場(chǎng)編程調(diào)試模式已難以滿足高效
    的頭像 發(fā)表于 10-08 14:26 ?506次閱讀
    PLC遠(yuǎn)程<b class='flag-5'>編程</b><b class='flag-5'>調(diào)試</b>平臺(tái)是什么

    掃描模塊的編程示例和調(diào)試策略

    電子發(fā)燒友網(wǎng)站提供《掃描模塊的編程示例和調(diào)試策略.pdf》資料免費(fèi)下載
    發(fā)表于 09-27 09:38 ?0次下載
    掃描模塊的<b class='flag-5'>編程</b>示例和<b class='flag-5'>調(diào)試</b>策略

    Linux 驅(qū)動(dòng)開發(fā)與應(yīng)用開發(fā),你知道多少?

    一、Linux驅(qū)動(dòng)開發(fā)與應(yīng)用開發(fā)的區(qū)別開發(fā)層次不同:Linux驅(qū)動(dòng)開發(fā)主要是針對(duì)硬件設(shè)備進(jìn)行編程,處于操作系統(tǒng)內(nèi)核層,直接與硬件交互,為上層應(yīng)用提供設(shè)備訪問的接口。Linux應(yīng)用開發(fā)則
    的頭像 發(fā)表于 08-30 12:16 ?1478次閱讀
    <b class='flag-5'>Linux</b> 驅(qū)動(dòng)開發(fā)與應(yīng)用開發(fā),你知道多少?

    新思科技Verdi調(diào)試平臺(tái)的功能

    ,以及確保不同功能場(chǎng)景和測(cè)試模式的正確性等。每個(gè)階段都可能耗費(fèi)大量時(shí)間,有時(shí)需要多次迭代,導(dǎo)致整個(gè)調(diào)試過程不斷延長(zhǎng)。
    的頭像 發(fā)表于 08-12 10:03 ?699次閱讀
    新思科技Verdi<b class='flag-5'>調(diào)試</b>平臺(tái)的<b class='flag-5'>功能</b>

    ESP32-C3使用命令行GDB調(diào)試出現(xiàn)報(bào)錯(cuò)的原因?

    (); while (1) {led_blink();vTaskDelay(1000 / portTICK_PERIOD_MS);}} 通過 idf.py 設(shè)置型號(hào)/編譯/燒錄/復(fù)位/調(diào)試 每次
    發(fā)表于 08-01 07:47

    PLC遠(yuǎn)程編程調(diào)試和遠(yuǎn)程上下載程序平臺(tái)有什么功能

    ,進(jìn)而影響整個(gè)工廠的生產(chǎn)節(jié)奏,因此就需要對(duì)PLC進(jìn)行合理的調(diào)試維護(hù)工作,以確保安全穩(wěn)定運(yùn)行。 傳統(tǒng)的PLC編程調(diào)試方法通常需要工程師親臨現(xiàn)場(chǎng)進(jìn)行操作,這不僅耗費(fèi)大量時(shí)間和人力成本,還可能因環(huán)境復(fù)雜、交通不便、工作狀態(tài)等因素導(dǎo)致工
    的頭像 發(fā)表于 07-22 17:24 ?396次閱讀

    RISC-V 匯編語言程序的調(diào)試

    ,通過jr t0跳入。 模擬器執(zhí)行與調(diào)試 下面通過編譯為32位的代碼來看一下程序的執(zhí)行過程(由于程序不需要任何操作系統(tǒng)的支持,會(huì)容易跑偏,所以要用遠(yuǎn)程gdb進(jìn)行單條指令執(zhí)行,觀察寄存器的執(zhí)行情況
    發(fā)表于 07-19 16:27

    ESP8266是否可以通過JTAG或SWD成功地使用J-Link進(jìn)行編程調(diào)試?

    是否有可能,如果是的話,是否有人通過JTAG或SWD成功地使用J-Link進(jìn)行編程調(diào)試ESP8266? 我正在使用 Sparkfun Thing 板 (https
    發(fā)表于 07-08 08:19

    是否有可能在支持gdb的第三方集成開發(fā)環(huán)境中使用DAS配置調(diào)試

    是否有可能在支持 gdb 的第三方集成開發(fā)環(huán)境中使用 DAS 配置調(diào)試?
    發(fā)表于 07-02 07:29