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

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

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

如何使用GDB調(diào)試工具

麥辣雞腿堡 ? 來(lái)源:CSDN博客 ? 作者:失了志的咸魚(yú) ? 2023-11-09 17:17 ? 次閱讀

2.1 啟動(dòng)調(diào)試

在程序開(kāi)始調(diào)試之前,要確保程序在gcc、g++編譯時(shí),有如下-g的添加調(diào)試信息的選項(xiàng)

gcc -g test.c -o test

1、啟動(dòng)未運(yùn)行的程序

啟動(dòng)未運(yùn)行的程序,只需要在對(duì)應(yīng)程序目錄中使用下面的命令

gdb test

2、調(diào)試已經(jīng)開(kāi)始運(yùn)行的程序進(jìn)程

調(diào)試已經(jīng)開(kāi)始運(yùn)行的程序進(jìn)程,首先先用top命令查看運(yùn)行的程序進(jìn)程的pid如下:

圖片

比如我要加載的程序qemu-system-x86的pid為269427,則用下面的命令將進(jìn)程附加到GDB調(diào)試

gdb attach 269427#gdb attach [進(jìn)程號(hào)]

或者先打開(kāi)gdb,在gdb中輸入attach 269427也可以。效果如下

圖片

此時(shí)程序是處于暫停狀態(tài)的,用下面的命令讓程序繼續(xù)運(yùn)行

#前面是縮寫(xiě),#后是全寫(xiě),兩者皆可
(gdb) c#continue

效果如下:

圖片

2.2 斷點(diǎn)管理

添加斷點(diǎn)

?方法一

#源程序只有一個(gè)文件
b [行號(hào)]#break [行號(hào)]

?方法二

#源程序多個(gè)個(gè)文件
b [文件名.c]:[行號(hào)]#break [文件名.c]:[行號(hào)]

添加斷點(diǎn)后如下所示:

圖片

查看所有斷點(diǎn)

info b#info break

效果如下:

圖片

我們可以看到所有的斷點(diǎn)還有斷點(diǎn)的編號(hào)

刪除斷點(diǎn)

delete#刪除所有斷點(diǎn)
delete [斷點(diǎn)編號(hào)]#刪除指定斷點(diǎn)

2.3 中斷調(diào)試執(zhí)行

s#step 單步執(zhí)行,進(jìn)入函數(shù)調(diào)用
n#next 逐行執(zhí)行當(dāng)前線程的代碼,不進(jìn)入函數(shù)調(diào)用
c#continue 執(zhí)行代碼到下一個(gè)斷點(diǎn)
f#finish 執(zhí)行完當(dāng)前函數(shù)并跳出
ignore [斷點(diǎn)號(hào)] [次數(shù)]#設(shè)置或修改運(yùn)行時(shí)斷點(diǎn)的忽略計(jì)數(shù)

2.4 運(yùn)行參數(shù)監(jiān)控

p [變量名]#print [變量名] 輸出該變量的值
display [變量名]#調(diào)試運(yùn)行的每一步自動(dòng)輸出該變量的值
bt#顯示當(dāng)前的函數(shù)調(diào)用堆棧情況
list [行數(shù)]#顯示當(dāng)前執(zhí)行的代碼,默認(rèn)10行
watch [變量名]#設(shè)置變量監(jiān)視點(diǎn),在變量值改變時(shí)暫停程序。


info breakpoints#顯示當(dāng)前已設(shè)置的斷點(diǎn)列表。
info watchpoints#顯示當(dāng)前已設(shè)置的監(jiān)視點(diǎn)(觀察點(diǎn))列表。
info functions#顯示程序中定義的所有函數(shù)列表。
info variables#顯示程序中定義的所有全局變量和靜態(tài)變量列表。
info locals#顯示當(dāng)前函數(shù)的局部變量信息。
info args#顯示當(dāng)前函數(shù)的參數(shù)信息。
info threads#顯示當(dāng)前正在運(yùn)行的所有線程信息。
info registers#顯示當(dāng)前線程的寄存器值。
info frame#顯示當(dāng)前的調(diào)用幀信息。
info sharedlibrary#顯示加載的共享庫(kù)信息。
info inferior#顯示當(dāng)前程序的執(zhí)行狀態(tài)信息。
info record#顯示反復(fù)執(zhí)行的命令數(shù)量。
info breakpoints location < address >#顯示指定地址上設(shè)置的斷點(diǎn)信息。
info break

2.5 多線程調(diào)試

info thread#命令查看當(dāng)前線程的信息
info threads#命令查看當(dāng)前所有線程
frame [棧幀號(hào)] #命令切換到指定的棧幀
thread [線程號(hào)]#切換到指定線程
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3787

    瀏覽量

    81043
  • 調(diào)試工具
    +關(guān)注

    關(guān)注

    1

    文章

    49

    瀏覽量

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

    關(guān)注

    0

    文章

    60

    瀏覽量

    13303
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)如何建立開(kāi)發(fā)環(huán)境

    如版主所寫(xiě),Linux的開(kāi)發(fā)環(huán)境建立(1)編譯器arm-linux-gcc-3.4.1(2)Jflash-s3c2410:S3C2410芯片的JTAG工具(3)安裝gdb調(diào)試工具在裝載這些工具
    發(fā)表于 05-20 05:45

    VIM編輯器怎么實(shí)現(xiàn)對(duì)嵌入式軟件的調(diào)試功能?

    GNU免費(fèi)提供了一整套工具鏈,為嵌入式Linux程序的開(kāi)發(fā)和調(diào)試提供了完整的支持。其強(qiáng)大的gdb調(diào)試工具可以方便地對(duì)嵌入式平臺(tái)上的程序進(jìn)行跟蹤調(diào)試
    發(fā)表于 08-30 07:18

    VIM中怎么實(shí)現(xiàn)嵌入式軟件調(diào)試

    GNU免費(fèi)提供了一整套工具鏈,為嵌入式Linux程序的開(kāi)發(fā)和調(diào)試提供了完整的支持。其強(qiáng)大的gdb調(diào)試工具可以方便地對(duì)嵌入式平臺(tái)上的程序進(jìn)行跟蹤調(diào)試
    發(fā)表于 03-06 07:50

    如何搭建嵌入式Linux的GDB調(diào)試環(huán)境

    linux 領(lǐng)域我們最常用的就是GDB 調(diào)試工具,通過(guò)GDB 來(lái)調(diào)試嵌入式C 程序。本章我們首先學(xué)習(xí)如何搭建嵌入式Linux的GDB
    發(fā)表于 11-05 06:03

    基于Windows的ARM GCC開(kāi)發(fā)環(huán) 境

    本文以 N32G430 系列 MCU 為例,介紹了在 Windows 環(huán)境下基于 vscode 編輯器、GCC 編譯工具鏈和 GDB 調(diào)試工具進(jìn)行搭建開(kāi)發(fā)環(huán)境,進(jìn)行代碼編譯、固件下載和代碼調(diào)試
    發(fā)表于 11-02 06:27

    N32G031系列GCC開(kāi)發(fā)環(huán)境應(yīng)用筆記分享

    本文以 N32N031 系列 MCU 為例,介紹了在 Windows 環(huán)境下基于 vscode 編輯器、GCC 編譯工具鏈和 GDB 調(diào)試工具進(jìn)行搭建開(kāi)發(fā)環(huán)境,進(jìn)行代碼編譯、固件下載和代碼調(diào)試
    發(fā)表于 11-02 07:20

    嵌入式Linux和嵌入式Linux開(kāi)發(fā)環(huán)境

    嵌入式Linux開(kāi)發(fā) 圖1是一個(gè)典型的嵌入式Linux開(kāi)發(fā)環(huán)境它包括主機(jī)工作站或者PC 支持GDB調(diào)試工具BDI2000 目標(biāo)板和網(wǎng)絡(luò).除了硬件環(huán)境外還需要軟件開(kāi)發(fā)環(huán)境有兩
    發(fā)表于 09-10 10:22 ?119次下載
    嵌入式Linux和嵌入式Linux開(kāi)發(fā)環(huán)境

    gdb調(diào)試工具指南 (很詳細(xì)的說(shuō)明)

    gdb調(diào)試工具指南,很詳細(xì)的說(shuō)明。
    發(fā)表于 03-28 09:52 ?45次下載

    如何在VIM中對(duì)嵌入式軟件進(jìn)行調(diào)試

    GNU免費(fèi)提供了一整套工具鏈,為嵌入式Linux程序的開(kāi)發(fā)和調(diào)試提供了完整的支持。其強(qiáng)大的gdb調(diào)試工具可以方便地對(duì)嵌入式平臺(tái)上的程序進(jìn)行跟蹤調(diào)試
    發(fā)表于 06-30 10:39 ?1148次閱讀
    如何在VIM中對(duì)嵌入式軟件進(jìn)行<b class='flag-5'>調(diào)試</b>

    初學(xué)GDB調(diào)試工具需要注意的事項(xiàng)

    GDB是一個(gè)由GNU開(kāi)源組織發(fā)布的、UNIX/LINUX操作系統(tǒng)下的、基于命令行的、功能強(qiáng)大的程序調(diào)試工具。相比于VS里面的圖形化調(diào)試工具,其功能更加強(qiáng)大。
    發(fā)表于 05-16 17:45 ?1124次閱讀
    初學(xué)<b class='flag-5'>GDB</b><b class='flag-5'>調(diào)試工具</b>需要注意的事項(xiàng)

    STM32CubeIDE乃ST官方提供的免費(fèi)且功能強(qiáng)大的集成開(kāi)發(fā)工具

    STM32CubeIDE乃ST官方提供的免費(fèi)且功能強(qiáng)大的集成開(kāi)發(fā)工具,令STM32Cube生態(tài)系統(tǒng)更為豐富強(qiáng)勁。它基于Eclipse/CDT框架、GCC編譯工具鏈和GDB調(diào)試工具,并支
    的頭像 發(fā)表于 03-31 15:26 ?5803次閱讀
    STM32CubeIDE乃ST官方提供的免費(fèi)且功能強(qiáng)大的集成開(kāi)發(fā)<b class='flag-5'>工具</b>

    Linux嵌入式 gdb VSCode圖形化調(diào)試教程

    linux 領(lǐng)域我們最常用的就是GDB 調(diào)試工具,通過(guò)GDB 來(lái)調(diào)試嵌入式C 程序。本章我們首先學(xué)習(xí)如何搭建嵌入式Linux的GDB
    發(fā)表于 11-02 12:21 ?15次下載
    Linux嵌入式 <b class='flag-5'>gdb</b> VSCode圖形化<b class='flag-5'>調(diào)試</b>教程

    riscv-binutils-gdb RISC-V版gdb調(diào)試工具

    riscv-binutils-gdb.zip
    發(fā)表于 04-25 10:23 ?0次下載
    riscv-binutils-<b class='flag-5'>gdb</b> RISC-V版<b class='flag-5'>gdb</b><b class='flag-5'>調(diào)試工具</b>

    嵌入式Linux GDB是什么

    GDB 調(diào)試工具,通過(guò) GDB 來(lái)調(diào)試嵌入式 C 程序。 GDB 簡(jiǎn)介 gdb
    的頭像 發(fā)表于 07-27 16:29 ?758次閱讀
    嵌入式Linux <b class='flag-5'>GDB</b>是什么

    GDB調(diào)試工具的原理

    一、GDB調(diào)試工具的原理 1.1 未執(zhí)行進(jìn)程調(diào)試 啟用gdb調(diào)試運(yùn)行gdb ./test的時(shí)候,
    的頭像 發(fā)表于 11-09 17:04 ?944次閱讀
    <b class='flag-5'>GDB</b><b class='flag-5'>調(diào)試工具</b>的原理