Linux下調試器gdb_cgdb使用

文章目錄

  • 一、樣例代碼
  • 二、使用
    • watch
    • set var確定問題原因
    • 條件斷點

一、樣例代碼

#include <stdio.h>int Sum(int s, int e)
{int result = 0;int i;for(i = s; i <= e; i++){result += i;}return result;
}int main()
{int start = 1;int end = 100;printf("I will begin\n");int n = Sum(start, end);printf("running done, result is: [%d-%d]=%d\n", start, end, n);return 0;
}
  • 程序的發布方式有兩種, debug模式和release模式, Linuxgcc/g++出來的二進制程序,默認是release模式。
  • 要使用gdb調試,必須在源代碼生成二進制程序的時候, 加上-g選項,如果沒有添加,則程序無法被編譯

二、使用

進入調試

gdb binFilename

推薦使用cgdb可以看到代碼進行調試

  • Ubuntu: sudo apt-get install -y cgdb
  • Centos: sudo yum install -y cgdb

watch

  • 執行時監視一個表達式(如變量)的值。如果監視的表達式在程序運行期間的值發生變化,GDB會暫停程序的執行,并通知使用者
  • 如果你有一些變量不應該修改,但是你懷疑它修改導致了問題,你可以watch它,如果變化了,就會通知你.
watch result

set var確定問題原因

  • 在調試的監視窗口要手動改變一個變量的值就可以使用set var
    • eg:set var flag=1

條件斷點

條件斷點添加常見兩種方式:

  1. 新增
  2. 給已有斷點追加
  • 注意兩者的語法有區別,不要寫錯了。
  • 新增:b 行號/文件名:行號/函數名 if i == 30(條件)
  • 給已有斷點追加:condition 2 i==30,其中2是已有斷點編號,沒有if

添加條件斷點

eg:b 9 if i == 30 ,其中9是行號,表示新增斷點的位置

給已經存在的端點新增條件

eg:condition 2 i==30,其中給2號斷點,新增條件i==30

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

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

相關文章

JSON Crack:簡化數據可視化的參數編輯器

簡介 在當今數據驅動的世界中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;作為一種輕量級的數據交換格式&#xff0c;廣泛應用于各種開發和數據分析場景。然而&#xff0c;復雜的JSON數據往往難以閱讀和理解&#xff0c;特別是在數據量龐大時&#xf…

PostgreSQL 刪除數據庫

PostgreSQL 刪除數據庫 概述 PostgreSQL 是一款功能強大的開源關系型數據庫管理系統&#xff0c;它提供了豐富的功能和強大的性能。在數據庫管理過程中&#xff0c;有時需要刪除不再需要的數據庫&#xff0c;以釋放資源或進行數據庫維護。本文將詳細介紹如何在 PostgreSQL 中…

Linux內核物理內存組織結構

一、系統調用sys_mmap 系統調用mmap用來創建內存映射&#xff0c;把創建內存映射主要的工作委托給do_mmap函數&#xff0c;內核源碼文件處理&#xff1a;mm/mmap.c 二、系統調用sys_munmap 1、vma find_vma (mm, start); // 根據起始地址找到要刪除的第一個虛擬內存區域 vma 2…

Mac強制解鎖APP或文件夾

當Mac安裝過火絨企業版、云安全訪問服務之類的APP需要卸載的時候&#xff0c;會發現需要管理員密碼&#xff0c;正常的卸載流程走不下去&#xff0c;直接刪除APP&#xff0c;會提示“不能完成此操作&#xff0c;xxx已鎖定”的信息&#xff0c;此處就記錄一下如何關閉鎖定狀態&a…

Mixed Content: The page at https://xxx was loaded over HTTPS

一、核心原因分析 Mixed Content 警告是由于 HTTPS 頁面中引用了 HTTP 協議的資源(如腳本、圖片、iframe 等),導致瀏覽器因安全策略阻止加載這些非加密內容。HTTP 資源可能被中間人攻擊篡改,破壞 HTTPS 頁面的整體安全性。 二、推薦解決方案 1. 強制資源升級為 HTTPS ?…

ARXML文件解析-1

目錄 1 摘要2 ARXML文件2.1 作用及典型應用場景2.2 **ARXML文件的結構樹**2.3 TAG&#xff08;XML元素&#xff09;2.4 ARXML文件關鍵元素解析2.4.1 XML聲明與處理指令2.4.2 XML注釋2.4.3 ADMIN-DATA元素2.4.3 語言相關元素2.4.5 AR-PACKAGE體系結構2.4.6. 數據轉換框架2.4.7 S…

[ISP 3A ] AE的常用算法分析

&#x1f4cc; 自動曝光&#xff08;AE, Auto Exposure&#xff09;解析 自動曝光&#xff08;AE&#xff09;是相機通過調節 曝光參數&#xff08;增益、快門時間、光圈等&#xff09;來確保拍攝出的圖像亮度適宜的算法。AE 需要根據環境光線變化自動調整曝光&#xff0c;以避…

大模型學習二:DeepSeek R1+蒸餾模型組本地部署與調用

一、說明 DeepSeek R1蒸餾模型組是基于DeepSeek-R1模型體系&#xff0c;通過知識蒸餾技術優化形成的系列模型&#xff0c;旨在平衡性能與效率。 1、技術路徑與核心能力 基礎架構與訓練方法? ?DeepSeek-R1-Zero?&#xff1a;通過強化學習&#xff08;RL&#xff09;訓練&…

STM32入門學習筆記(持續更新)

b站江協科技資料 通過網盤分享的文件&#xff1a;STM32入門教程資料 鏈接: https://pan.baidu.com/s/1-rOi83sUK8CqUNsHQuvxew?pwd8krh 提取碼: 8krh LED燈閃爍0402 #include "stm32f10x.h" // Device header #include "Delay.h"int m…

企業安全——FIPs

0x00 前言 先來看一道題目。這道題目涉及到的就是道德規范和互聯網相關內容&#xff0c;本文會對相關內容進行描述和整理。 正確答案是&#xff1a;D 注意FIPs的主要目的是為了限制&#xff0c;也就是針對數據的守則。 0x01 RFC 1087 1989年1月 互聯網架構委員會 IAB 發布了…

【Linux系統編程】進程概念,進程狀態

目錄 一&#xff0c;操作系統&#xff08;Operator System&#xff09; 1-1概念 1-2設計操作系統的目的 1-3核心功能 1-4系統調用和庫函數概念 二&#xff0c;進程&#xff08;Process&#xff09; 2-1進程概念與基本操作 2-2task_struct結構體內容 2-3查看進程 2-4通…

基于TradingView和CTPBee的自動化期貨交易系統實現

引言 在量化交易領域&#xff0c;TradingView因其強大的技術分析工具和豐富的指標庫而廣受歡迎&#xff0c;但是其不支持國內期貨自動化交易&#xff0c;CTPBee則是一個優秀的國產Python期貨交易接口。本文將介紹如何將兩者結合&#xff0c;實現一個完整的自動化交易系統。 本…

初始ARM

ARM最基礎的組成單元。 最小系統&#xff1a;能系統能夠正常工作的最少器件構成的系統 。 一、CPU基礎定義 ALU&#xff08;運算單元&#xff09;&#xff1a; 負責執行算術和邏輯運算&#xff0c;是處理器的核心部分。 寄存器&#xff08;R0, R1, R12&#xff09;&#xff…

通信數據記錄儀-產品概念ID

總結: 1、支持高速CAN、支持容錯CAN、支持單線CAN(理解是支持不同的協議,CANFD、CAN2.0和LIN?) 2、 通過上位機設計時間

Qt QTableView QAbstractTableModel實現復選框+代理實現單元格編輯

話不多說&#xff0c;直接看代碼 一、Model 1、QTableModel_Test.h #pragma once#include <QAbstractTableModel> #include <QObject> #include <QModelIndex>class QTableModel_Test : public QAbstractTableModel {Q_OBJECT public:QTableModel_Test(Q…

JavaWeb學習--MyBatis-Plus整合SpringBoot的ServiceImpl方法(增加,修改與刪除部分)

接下來是常用的增加&#xff0c;修改以及刪除部分 首先是增加部分&#xff0c;增加一個新的數據 Testpublic void testInsert() {// 添加一個新用戶記錄Student s new Student();s.setName("NewStudent");s.setAge(25);boolean saved studentService.save(s);//可以…

明清兩朝全方位對比

目錄 一、政治制度二、民族與社會三、經濟與對外四、文化與思想五、軍事與邊疆六、滅亡原因總結 明清兩朝是中國歷史上最后兩個封建王朝&#xff0c;在政治、經濟、文化等方面存在顯著差異&#xff0c;以下為主要區別&#xff1a; 一、政治制度 皇權集中程度 明朝&#xff1a;…

Linux系統時間

1. Linux系統時間 jiffies是linux內核中的一個全局變量&#xff0c;用來記錄以內核的節拍時間為單位時間長度的一個數值。 jiffies變量開機時有一個基準值&#xff0c;然后內核每過一個節拍時間jiffies就會加1。 一個時間節拍的時間取決于操作系統的配置&#xff0c;Linux系統一…

高并發系統架構設計的深度解析與實施指南【大模型總結】

以下是對高并發系統架構設計的深度解析與實施指南&#xff0c;通過技術分層拆解和場景化案例說明&#xff0c;呈現完整的系統設計方法論&#xff1a; 一、容錯優先思維的系統級實現 1. 混沌工程落地框架 # 混沌實驗設計模板 class ChaosExperiment:def __init__(self, scope,…

leetcode-代碼隨想錄-鏈表-翻轉鏈表

題目 鏈接&#xff1a;206. 反轉鏈表 - 力扣&#xff08;LeetCode&#xff09; 給你單鏈表的頭節點 head &#xff0c;請你反轉鏈表&#xff0c;并返回反轉后的鏈表。 輸入&#xff1a;head [1,2,3,4,5] 輸出&#xff1a;[5,4,3,2,1]class Solution { public:ListNode* rev…