【嵌入式Linux】<知識點> GDB調試(更新中)

文章目錄

前言

一、GDB調試預備工作

二、GDB的啟動與退出

三、GDB中查看源代碼

四、GDB斷點操作

五、GDB調試指令


前言

在專欄【嵌入式Linux】應用開發篇_Linux打工仔的博客中,我們已經寫了大量的源程序。但是在調試這些程序時我們都是通過printf大法和肉眼除錯法。對于較大工程項目來說,這樣的調試效率低。因此,有必要學習GDB調試技巧,提升瞄準bug的能力和開發效率。若涉及版權問題,請聯系本人刪除!


一、GDB調試預備工作

【1】源程序:包含.c源文件和.h頭文件等。若工程較大,可以編寫Makefile文件來管理,并在Makefile文件中添加gcc指令的選項-g。

【2】調試選項:在采用gcc指令來編譯源程序時,加上-g選項來生成帶有源程序信息的可執行文件,用于調試。(因此,該可執行文件會比平常的文件大)

【3】其它選項:-Wall打開所有警告;-O0關閉編譯器優化。

【4】使用舉例:當前源文件為hello.c,那么執行以下指令就能生成用于gdb調試的可執行文件hello。

gcc hello.c -g -Wall -O0 -o hello

二、GDB的啟動與退出

【1】介紹:gdb是一個應用程序,但我們使用gdb? 可執行文件的指令就能創建gdb進程。打開gdb后,目標程序并未開始執行,需要我們輸入相關指令,如下所示:

【2】設置命令行參數:set? args? 參數1? 參數2 ...? ?注意:這里的參數是從argv[1]開始的。

【3】查看命令行參數:show args

【4】運行目標程序:run(簡寫為r)從main函數開始順序執行,若遇到斷點則停留。

【5】運行目標程序:start? ?停留在main函數的第一行代碼,往后執行需要輸入continue(簡寫為c)。

【6】退出gdb:quit? 簡寫為q


三、GDB中查看源代碼

【1】查看當前文件代碼:list(簡寫為l)默認的當前文件為main函數文件,默認顯示10行

  • 查看指定行號:list? 行號
  • 查看指定函數:list? 函數名

【2】切換文件查看:切換到哪個文件,哪個文件就變成了當前文件

  • 查看指定行號:list? 文件名:行號
  • 查看指定函數:list? 文件名:函數名

【3】設置顯示行數:set? listsize? 行數

【4】查看顯示行數:show? listsize


四、GDB斷點操作

【1】設置普通斷點(當前文件):break? 行號;②break? 函數名。break可以簡寫為b。

【2】設置普通斷點(其它文件):b? 文件名:行號;②b? 文件名:函數名

【3】設置條件斷點:b? 行號? if? 變量名=某個值

【4】查看斷點信息:i? b? ?全稱是info break。

【5】刪除斷點:delete指令,簡寫為d

  • 刪除指定編號斷點:d? 斷點編號1? ...? 例如:d? 4 5 8? 就是刪除了編號為4、5、8的斷點。
  • 刪除連續編號斷點:d? 斷點編號i-斷點編號j? 例如:d? 1-5? 就是刪除了編號為1、2、3、4、5的斷點。

【6】設置斷點無效:disable指令,簡寫為dis

  • 無效指定編號斷點:dis? 斷點編號1 ...
  • 無效連續編號斷點:dis? 斷點編號i-斷點編號j

【6】設置斷點有效:enable指令,簡寫為ena

  • 有效指定編號斷點:ena? 斷點編號1 ...
  • 有效連續編號斷點:ena? 斷點編號i-斷點編號j

五、GDB調試指令

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/45065.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/45065.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/45065.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

評估指標:精確率(Precision)、召回率(Recall)、F1分數(F1 Score)

評估指標:精確率(Precision)、召回率(Recall)、F1分數(F1 Score) 前言相關介紹1. 準確率(Accuracy)2. 精確率(Precision)3. 召回率(Re…

Cadence23打開與關閉飛線,修改位號絲印大小

打開與關閉所有飛線: 顯示部分飛線: 單獨顯示網絡飛線尤為好用,點擊上圖中的網絡,之后鼠標點擊器件中你想高亮的網絡即可單獨打開部分飛線。 這里的關閉部分網絡的飛線也很好用,可以臨時關閉討厭的GND飛線&#xff1a…

掌握Postman的API請求模板:一鍵生成,效率倍增

📘 掌握Postman的API請求模板:一鍵生成,效率倍增 Postman是API開發和測試的瑞士軍刀,而其請求模板功能更是提升工作效率的利器。API請求模板允許用戶定義一組可重用的請求配置,從而快速生成和發送API請求。本文將深入…

virturalBox+K8S部署jaeger-all-in-one

pod的yaml如下:這里使用的是主機host模式 apiVersion: apps/v1 kind: Deployment metadata:name: jaegerlabels:app: jaeger spec:replicas: 1selector:matchLabels:app: jaegertemplate:metadata:labels:app: jaegerspec:hostNetwork: truecontainers:- name: jae…

TF卡病毒是什么?如何防范和應對?

在存儲芯片及存儲卡領域,TF卡病毒是一個備受關注的話題。在本文中,拓優星辰將詳細解釋TF卡病毒的含義、來源以及如何防范和應對這一問題,幫助客戶更好地了解和處理TF卡病毒的風險。 1. TF卡病毒的含義 TF卡病毒是指針對TF存儲卡(T…

05:定時器中斷

中斷 1、定時器T0中斷2、案例:通過定時器T0中斷來實現燈間隔1s亮滅 1、當中央處理機CPU正在處理某件事的時候外界發生了緊急事件請求,要求CPU暫停當前的工作,轉而去處理這個緊急事件,處理完以后,再回到原來被中斷的地方…

安裝lap和cython_bbox失敗了很多次!!!終于被我發現了!

先說 lap 試了很多種方式,pip install lap / conda install -c conda-forge lap … 全失敗了后面發現 lap 不支持 python > 3.9 的版本使用 pip install lapx 成功! cython_bbox 更難了 一直提示缺少MicroSoft C 14.0 … 大家有需要自行下載&#x…

[PaddlePaddle飛槳] PaddleDetection-通用目標檢測-小模型部署

PaddleDetection的GitHub項目地址 推薦環境: PaddlePaddle > 2.3.2 OS 64位操作系統 Python 3(3.5.1/3.6/3.7/3.8/3.9/3.10),64位版本 pip/pip3(9.0.1),64位版本 CUDA > 10.2 cuDNN > 7.6pip下載指令: python -m pip i…

面向本科生的智能品牌傳播策略優化

面向本科生的智能品牌傳播策略優化 一、引言 在數字化時代,品牌傳播已不再是簡單的信息傳遞,而是需要借助智能技術實現精準、高效、創新的傳播策略。作為本科畢業生,選擇“面向本科生的智能品牌傳播策略優化實踐”作為研究課題,不僅有助于深入理解品牌傳播的理論知識,還…

【數據結構】一文了解七大排序算法

文章目錄 前言一.直接插入排序插入排序思想插入排序代碼實現插入排序總結 二.希爾排序希爾排序思想希爾排序代碼實現希爾排序總結 三.選擇排序選擇排序思想選擇排序代碼實現選擇排序總結 四.堆排序堆排序思想堆排序代碼實現堆排序總結 五、冒泡排序冒泡排序思想冒泡排序代碼實現…

Dify 與 Xinference 最佳組合 GPU 環境部署全流程

背景介紹 在前一篇文章 RAG 項目對比 之后,確定 Dify 目前最合適的 RAG 框架。本次就嘗試在本地 GPU 設備上部署 Dify 服務。 Dify 是將模型的加載獨立出去的,因此需要選擇合適的模型加載框架。調研一番之后選擇了 Xinference,理由如下&…

易我分區大師18.8.0更新:兩大功能改進

近日,易我分區大師18.8.0更新上線。此次更新重點改進了系統克隆功能,支持從第二塊系統盤(從盤)克隆系統;同時,軟件支持將分區的文件系統格式從FAT轉換成exFAT。 01、系統克隆 系統克隆功能旨在幫助用戶在…

pinia學習

conuter.ts <template><div><!-- 顯示當前的計數 --><p>Count: {{ count }}</<!-- 顯示計算的雙倍計數 --><p>Double Count: {{ doubleCount }}</p><!-- 點擊按鈕以增加計數 --><button click"increment">…

基于紅黑樹對map和set的封裝

前言 前面我們已經對紅黑樹做了介紹和實現&#xff0c;本期我們來對紅黑樹進一步改造&#xff0c;然后基于改造后的紅黑樹封裝出map和set&#xff01; 本期內容介紹 ? 紅黑樹的改造 ? 紅黑樹的迭代器實現 ? map的封裝 ? set的封裝 ? 全部源碼 ● 紅黑樹的改造 我們目前…

未來互聯網的新篇章:深度解析Facebook的技術與戰略

隨著科技的飛速發展和社會的不斷變遷&#xff0c;互聯網作為全球信息交流的重要平臺&#xff0c;正經歷著前所未有的變革和演進。作為全球最大的社交媒體平臺之一&#xff0c;Facebook不僅是人們溝通、分享和互動的重要場所&#xff0c;更是科技創新和數字化進程的推動者。本文…

音視頻開發—FFmpeg 從MP4文件中抽取視頻H264數據

文章目錄 MP4文件存放H264數據方式MP4 文件結構概述H.264 數據在 MP4 中的存儲1. ftyp 盒子2. moov 盒子3. mdat 盒子 H.264 數據在 stsd 盒子中的存儲&#xff08;AVC1&#xff09;AVC1與Annex-B 格式&#xff08;裸 H.264 流&#xff09;的區別 從MP4文件中提取H264裸流步驟&…

java使用easypoi模版導出word詳細步驟

文章目錄 第一步、引入pom依賴第二步、新建導出工具類WordUtil第三步、創建模版word4.編寫接口代碼5.導出結果示例 第一步、引入pom依賴 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><…

怎么壓縮視頻?推薦7款必備視頻壓縮軟件免費版(強烈建議收藏)

如今&#xff0c;視頻內容日益豐富&#xff0c;并占據了許多人的日常娛樂和工作生活。然而&#xff0c;隨著高清和超高清視頻的普及&#xff0c;視頻文件的體積也越來越大&#xff0c;給存儲和傳輸帶來了挑戰。因此&#xff0c;學會如何壓縮視頻文件成為了許多人的需求之一。本…

小米官網的數據是怎么優化的?

小米PC端官網首頁的“全部商品分類”功能是用戶瀏覽和選擇商品的重要入口。為了優化這一功能的數據展示和用戶體驗&#xff0c;可以采取以下幾個步驟&#xff1a; 數據加載優化&#xff1a; 懶加載&#xff08;Lazy Loading&#xff09;&#xff1a;當鼠標劃過“全部商品分類”…

實現前端登錄注冊功能(有源碼)

引言 用戶登錄和注冊是任何現代Web應用程序的基本功能。在前端開發中&#xff0c;實現一個安全且用戶友好的登錄注冊系統至關重要。本文將介紹如何使用HTML、CSS和JavaScript&#xff08;包括Vue.js&#xff09;來實現前端的登錄和注冊功能。 1. 項目結構 首先&#xff0c;我們…