【GDB】

GDB

  • 1. GDB調試器
    • 1.1 前言
    • 1.2 GDB編譯程序
    • 1.3 啟動GDB
    • 1.4 載入被調試程序
    • 1.5 查看源碼
    • 1.6 運行程序
    • 1.7 斷點設置
      • 1.7.1 通過行號設置斷點
      • 1.7.2 通過函數名設置斷點
      • 1.7.3 通過條件設置斷點
      • 1.7.4 查看斷點信息
      • 1.7.5 刪除斷點
    • 1.8 單步調試
    • 1.9
  • 2. GDB調試core文件
    • 2.1 設定core文件的最大值
    • 2.2 臨時修改core文件的生成路徑
      • 2.2.1 示例一:除數設為0
      • 2.2.2 示例二:這里scanf后的參數沒有加&
    • 2.3
    • 2.4

1. GDB調試器

1.1 前言

GDB是GNU調試器(GNU Debugger)的縮寫,是一種功能強大的調試工具,可以用于調試多種編程語言的程序,如C、C++、匯編等。GDB可以幫助程序員在程序運行時進行調試,包括查看變量的值、跟蹤程序執行流程、設置斷點等。
GDB支持多種操作系統,包括Linux、Unix、Windows等。

1.2 GDB編譯程序

  • 文件編譯
    g++ main.cpp -o main
  • 帶有GDB debug功能,編譯
    g++ -g main.cpp -o main
  • 查看可執行文件是否帶有debug功能
    readelf -S main | grep debug
    在這里插入圖片描述

1.3 啟動GDB

在這里插入圖片描述

1.4 載入被調試程序

在這里插入圖片描述

1.5 查看源碼

list / l [first, last](行號)
在這里插入圖片描述

1.6 運行程序

run / r
在這里插入圖片描述
若程序運行時需要參數,在run命令后加上參數即可.

1.7 斷點設置

break / b 行號/函數名/條件

1.7.1 通過行號設置斷點

在這里插入圖片描述

1.7.2 通過函數名設置斷點

在這里插入圖片描述

1.7.3 通過條件設置斷點

當n > 1時會在OddOrEven函數中停止執行
在這里插入圖片描述
在這里插入圖片描述

1.7.4 查看斷點信息

info breakpoints
在這里插入圖片描述

1.7.5 刪除斷點

delete breakpointNum
在這里插入圖片描述

1.8 單步調試

1.9


2. GDB調試core文件

2.1 設定core文件的最大值

ulimit -c [n]
有參數n為設置,沒有參數n為查看,若core文件最大值為0則不會生成coredump
在這里插入圖片描述

2.2 臨時修改core文件的生成路徑

echo /root/achen/project/coredump/core.%e.%p> /proc/sys/kernel/core_pattern
%e為程序名,%p為進程id

2.2.1 示例一:除數設為0

在這里插入圖片描述
編譯后運行,并將除數設為0
提示核心已轉儲(coredump),查看coredump目錄下,生成了core文件
在這里插入圖片描述
使用GDB對core進行調試
core-file core文件
在這里插入圖片描述
這里提示信號終止了程序,發成了arithmetic異常(由于除數為0)
查看函數的調用棧幀和層級關系
backtrace / bt
在這里插入圖片描述
這里和上面core-file都有一串問號,原因是沒加載符號表,解決方案為在core-file之前先載入被調試程序
在這里插入圖片描述
調用bt命令
在這里插入圖片描述
結果為函數調用的棧幀和層級關系,因為該程序中沒有函數調用,所以只有顯示main函數,且錯誤行數為第9行

2.2.2 示例二:這里scanf后的參數沒有加&

在這里插入圖片描述
這里scanf后的參數沒有加&
編譯后運行
在這里插入圖片描述
發生coredump,查看coredump目錄,生成了core文件
在這里插入圖片描述
使用GDB進行調試
在這里插入圖片描述
這里顯示信號終止了服務,發生了段錯誤
查看棧幀和層級關系發現函數調用關系為main->scanf->_IO_vfscanf,函數錯誤為第6行

2.3

2.4

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

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

相關文章

(五)五種最新算法(SWO、COA、LSO、GRO、LO)求解無人機路徑規劃MATLAB

一、五種算法(SWO、COA、LSO、GRO、LO)簡介 1、蜘蛛蜂優化算法SWO 蜘蛛蜂優化算法(Spider wasp optimizer,SWO)由Mohamed Abdel-Basset等人于2023年提出,該算法模型雌性蜘蛛蜂的狩獵、筑巢和交配行為&…

iOS(swiftui)——系統懸浮窗( 可在其他應用上顯示,可實時更新內容)

因為ios系統對權限的限制是比較嚴格的,ios系統本身是不支持全局懸浮窗(可在其他app上顯示)。在iphone14及之后的iPhone機型中提供了一個叫 靈動島的功能,可以在手機上方可以添加一個懸浮窗顯示內容并實時更新,但這個功能有很多局限性 如:需要iPhone14及之后的機型且系統…

Java面試遇到的一些常見題

目錄 1. Java語言有幾種基本類型,分別是什么? 整數類型(Integer Types): 浮點類型(Floating-Point Types): 字符類型(Character Type): 布爾類…

(六)五種最新算法(SWO、COA、LSO、GRO、LO)求解無人機路徑規劃MATLAB

一、五種算法(SWO、COA、LSO、GRO、LO)簡介 1、蜘蛛蜂優化算法SWO 蜘蛛蜂優化算法(Spider wasp optimizer,SWO)由Mohamed Abdel-Basset等人于2023年提出,該算法模型雌性蜘蛛蜂的狩獵、筑巢和交配行為&…

【完整項目】雙模式答題卡識別軟件中YOLO模式的訓練部分詳解,包括訓練填涂區域和手寫準考證號,手把手詳細教學,可延申拓展訓練其他圖像數據

目錄 前言1. 數據準備2. 數據標注3. 先跑起來Windows下用本地的CPU或GPU訓練本地Windows系統連接服務器訓練前言 前文:【完整項目】基于Python+Tkinter+OpenCV+Yolo+手寫OCR的雙模式答題卡識別軟件的設計與實現 如果你需要訓練自己的答題卡模型,那么請先看上面的文章鏈接。…

Flutter自定義下拉選擇框dropDownMenu

利用PopupMenuButton和PopupMenuItem寫了個下拉選擇框,之所以不采用系統的,是因為自定義的更能適配項目需求,話不多說,直接看效果 下面直接貼出代碼、代碼中注釋寫的都很清楚,使用起來應該很方便,如果有任何…

C : DS靜態查找之順序索引查找

Description 給出一個隊列和要查找的數值,找出數值在隊列中的位置,隊列位置從1開始 要求使用順序索引查找算法,其中索引表查找和塊內查找都采用不帶哨兵、從頭開始的順序查找方法。 Input 第一行輸入n,表示主表有n個數據 第二…

OpenSSL 編程指南

目錄 前言初始化SSL庫創建SSL 上下文接口(SSL_CTX)安裝證書和私鑰加載證書(客戶端/服務端證書)加載私鑰/公鑰加載CA證書設置對端證書驗證例1 SSL服務端安裝證書例2 客戶端安裝證書創建和安裝SSL結構建立TCP/IP連接客戶端創建socket服務端創建連接創建SSL結構中的BIOSSL握手服務…

Scrum

Scrum是一個用于開發和維持復雜產品的框架,是一個增量的、迭代的開發過程。在這個框架中,整個開發過程由若干個短的迭代周期組成,一個短的迭代周期稱為一個Sprint,每個Sprint的建議長度是2到4周(互聯網產品研發可以使用1周的Sprin…

【Linux】輸出緩沖區和fflush刷新緩沖區

目錄 一、輸出緩沖區 1.1 輸出緩沖區的使用 1.2 緩沖區的刷新 1.3 輸出緩沖區的作用 二、回車換行 一、輸出緩沖區 C/C語言,當調用輸出函數(如printf()、puts()、fwrite()等)時,會給我們提供默認的緩沖區。這些數據先存…

虛擬機安裝 hyper—v 沙盒

一、下載系統鏡像 1、確認電腦內存在8G及以上并提前準備完整的系統鏡像 安裝Hyper-V并重啟電腦后打開程序選擇虛擬機 選擇安裝位置并設置保留第一代的虛擬參數即可開始分配內存,根據自己的需求進行設置 右鍵虛擬機啟動并開始運行,進行鏡像系統的安裝便完…

【Flutter】創建應用頂級組件,應用根組件 (學習記錄)

前言 在 Flutter 中,應用的頂級組件或根組件通常是在 main() 函數中通過 runApp() 方法創建的。這個組件通常是一個 MaterialApp、CupertinoApp、GetMaterialApp 或其他類似的應用框架組件。 以下是一個創建 MaterialApp 作為根組件的示例: void main()…

牛客算法心得——環形數組的連續子數組最大和(dp)

大家好,我是晴天學長, 一個找連續子數組最大和的變形題,需要的小伙伴可以關注支持一下哦!后續會繼續更新的。💪💪💪 1) .環形數組的連續子數組的最大和 描述 給定一個長度為 nn 的環形整數數組&…

『 MySQL數據庫 』聚合統計

文章目錄 前言 🥑🥝 聚合函數🍓 COUNT( ) 查詢數據數量🍓 SUM( ) 查詢數據總和🍓 AVG( ) 查詢數據平均值🍓 MAX( ) 查詢數據最大值🍓 MIN( ) 查詢數據最小值 🥝 數據分組GROUP BY子句…

湖科大計網:計算機網絡概述

一、計算機網絡的性能指標 一、速率 有時候數據量也認為是以10為底的,看怎么好算。(具體吉大考試用什么待商榷) 二、帶寬 在模擬信號系統中帶寬的含義,本課程中用到的地方是:香農定理和奈奎斯特定理公式的應用之中。 …

全面高壓化與全面超快充,破解新能源汽車的時代難題

是什么讓新能源車主感到疲憊與焦慮?是什么阻擋更多消費者選擇新能源汽車?我們在身邊進行一個簡單的調查就會發現,問題的答案非常一致:充電。 充電難,充電慢的難題,始終是困擾新能源汽車產業發展&#xff0c…

vue,uniapp的pdf等文件在線預覽

vue,uniapp文件在線預覽方案,用了個稍微偏門一點的方法實現了 通過后端生成文件查看頁面,然后前端只要展示這個網頁就行,uniapp就用web-view來展示,后臺系統就直接window.open()打開就行 示例查看PDF文件,…

每日一練【四數之和】

一、題目描述 18. 四數之和 給你一個由 n 個整數組成的數組 nums ,和一個目標值 target 。請你找出并返回滿足下述全部條件且不重復的四元組 [nums[a], nums[b], nums[c], nums[d]] (若兩個四元組元素一一對應,則認為兩個四元組重復&#x…

基于ssm社區管理與服務的設計與實現論文

目錄 摘 要 1 Abstract 2 第一章 緒論 3 1.1研究背景 3 1.2 研究現狀 3 1.3 研究內容 4 第二章 系統關鍵技術 5 2.1 Java簡介 5 2.2 MySql數據庫 5 2.3 B/S結構 6 2.4 Tomcat服務器 6 第三章 系統分析 7 3.1可行性分析 7 3.1.1技術可行性 7 3.1.2經濟可行性 7 3.1.3運行可行性…

uniapp自定義的日歷(純手寫)

效果圖&#xff1a; html&#xff1a; <!-- 年月 --><view class"box"><view class"box_time"><view class"time"><image click"lefts" :src"url/uploads/20231206/9d1fb520b12383960dca3c214d84fa0…