【linux】gdb

news2024/11/18 15:32:22

Alt

🔥个人主页Quitecoder

🔥专栏linux笔记仓

Alt

目录

    • 01.gdb使用

01.gdb使用

  • 程序的发布方式有两种,debug模式和release模式
  • Linux gcc/g++出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

release版本不可被调试,debug版本可以,原因是,debug版本下编译器形成可执行程序的时候会给可执行程序添加调试信息

  1 myprocess-debug: myprocess.c
  2     gcc -std=c99 -o $@ $^ -g                                                                                          
  3 
  4 .PHONY: clean
  5 clean:
  6     rm -f myprocess-debug
readelf  -S myprocess-debug

readelf 是一个用来显示 ELF(Executable and Linkable Format)文件信息的工具。-S 选项用于显示 ELF 文件的节头部信息(section headers)。通过这个命令,你可以查看包含在 ELF 文件中的不同节(section),这些节可能包括代码段、数据段、符号表、字符串表等

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
int AddToTarget(int a,int b)
{
    int sum=0;
    for(int i=a;i<=b;i++)
    {
        sum+=i;
    }
    return sum;
}
int main()
{
    printf("run begin...\n");
    int result=0;
    result=AddToTarget(1,100);
    printf("result:%d\n",result);
    printf("run end...\n");
    return 0;
}

gdb binFile 退出: ctrl + dquit 调试命令:

  • list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
    在这里插入图片描述
    在这里插入图片描述
    list/l: l文件名:行号/函数名,I行号/函数名
    在这里插入图片描述

list/l 函数名:列出某个函数的源代码。

  • r或run:运行程序。
    在这里插入图片描述

  • break(b) 行号:在某一行设置断点
    break 函数名:在某个函数开头设置断点
    info break ( i b ):查看断点信息。
    在这里插入图片描述
    delete(d) breakpoints:删除所有断点
    delete breakpoints n:删除序号为n的断点
    在这里插入图片描述
    disable breakpoints:禁用断点
    enable breakpoints:启用断点
    在这里插入图片描述
    在这里插入图片描述

  • n 或 next:单条执行。
    在这里插入图片描述

  • s或step:进入函数调用
    在这里插入图片描述

  • finish:执行到当前函数返回,然后挺下来等待命令
    在这里插入图片描述

  • print( p ):打印表达式的值,通过表达式可以修改变量的值或者调用函数
    在这里插入图片描述
    display 变量名:跟踪查看一个变量,每次停下来都显示它的值
    在这里插入图片描述
    undisplay(编号):取消对先前设置的那些变量的跟踪
    在这里插入图片描述

  • continue(或c):从当前位置开始连续而非单步执行程序(运行到下一个断点)

  • until X行号:跳至X行

  • breaktrace(或bt):查看各级函数调用及参数

  • info(i) locals:查看当前栈帧局部变量的值

  • quit:退出gdb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2169398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c语言200例 063 信息查询

大家好&#xff0c;欢迎来到无限大的频道。 今天给大家带来的是c语言200例 题目要求&#xff1a; 从键盘当中输入姓名和电话号&#xff0c;以“#”结束&#xff0c;编程实现输入姓名、查询电话号的功能。 参考代码如下&#xff1a; #include <stdio.h> #include <st…

1.6 判定表

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 1 基本概念1.1 作用1.2 优点 2 基本组成2.1 条件桩2.2 动作桩2.3 条件项2.4 动作项 3 判定表的结构与规则3.1 规则的生成3.2 动作结果3.3 判定表简化 4 判定表的使用场景4.1 软件测试…

什么是Node.js?

为什么JavaScript可以在浏览器中被执行&#xff1f; 在浏览器中我们加载了一些待执行JS代码&#xff0c;这些字符串要当中一个代码去执行&#xff0c;是因为浏览器中有JavaScript的解析引擎&#xff0c;它的存在我们的代码才能被执行。 不同的浏览器使用不同的javaScript解析引…

Linux 文件目录结构(详细)

一、基本介绍 Linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录“/”&#xff0c;然后在此目录下再创建其他的目录。 Linux世界中&#xff0c;一切皆文件&#xff01; 二、相关目录 /bin[常用](/usr/bin、/usr/local/bin) 是Binary的缩写,…

RabbitMQ常用管理命令及管理后台

RabbitMQ管理命令 1、用户管理1.1、新增一个用户1.2、查看当前用户列表1.3、设置用户角色1.4、设置用户权限1.5、查看用户权限 2、RabbitMQ的web管理后台2.1、查看rabbitmq 的插件列表2.2、启用插件2.3、禁用插件2.4、访问RabbitMQ的web后台2.4、通过web页面新建虚拟主机 ./rab…

LLM - 使用 vLLM 部署 Qwen2-VL 多模态大模型 (配置 FlashAttention) 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142528967 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 vLLM 用…

虚拟机开启网络代理设置,利用主机代理访问国外资源

前言 有时候需要访问一些镜像网站拉取安装包或是学习资料&#xff0c;由于国内外网络环境差异和网络安全的问题&#xff0c;总会被阻拦。下文来说一下虚拟机centos7如何通过连接主机的代理软件。 一、代理软件设置 1、前提是主机要安装有代理软件&#xff0c;查看代理软件的…

LabVIEW提高开发效率技巧----并行处理

在LabVIEW开发中&#xff0c;充分利用并行处理能力可以显著提高程序的执行效率和响应速度。LabVIEW的图形化编程模型天然支持并行任务的执行&#xff0c;可以通过以下几种方式优化程序性能。 1. 并行For循环&#xff08;Parallel For Loop&#xff09; 对于能够独立执行的任务…

开源鸿蒙OpenHarmony系统更换开机Logo方法,瑞芯微RK3566鸿蒙开发板

本文适用于开源鸿蒙OpenHarmony系统更换开机Logo&#xff0c;本次使用的是触觉智能的Purple Pi OH鸿蒙开源主板&#xff0c;搭载了瑞芯微RK3566芯片&#xff0c;类树莓派设计&#xff0c;是Laval官方社区主荐的一款鸿蒙开发主板。 介绍 OpenHarmony的品牌标志、版本信息、项目…

RabbitMQ 高级特性——重试机制

文章目录 前言重试机制配置文件设置生命交换机、队列和绑定关系生产者发送消息消费消息 前言 前面我们学习了 RabbitMQ 保证消息传递可靠性的机制——消息确认、持久化和发送发确认&#xff0c;那么对于消息确认和发送方确认&#xff0c;如果接收方没有收到消息&#xff0c;那…

每日一题:⻓度最⼩的⼦数组

文章目录 一、题目二、解析1、暴力算法&#xff08;1&#xff09;纯暴力&#xff08;2&#xff09;前缀和 循环 2、滑动窗口 一、题目 209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组…

Java项目实战II基于Java+Spring Boot+MySQL的IT技术交流和分享平台的设计与实现(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在当今信息…

归并排序,外排序,计数排序(非比较排序)

归并排序&#xff1a;&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有序…

Studying-图论包含的算法总结

目录 1.DFS&#xff08;深度优先搜索&#xff09; 代码框架&#xff1a; 2. BFS&#xff08;广度优先搜索&#xff09; 代码框架&#xff1a; 3. 并查集 4.最小生成树之Prim 5.最小生成树之Kruskal 6.拓扑排序 7. 最短路径之-dijkstra&#xff08;朴素版&#xff…

R语言非参数回归预测摩托车事故、收入数据:局部回归、核回归、LOESS可视化...

全文链接&#xff1a;https://tecdat.cn/?p37784 非参数回归为经典&#xff08;参数&#xff09;回归方法提供了一种灵活的替代方法。与假定回归关系具有依赖于有限数量的未知参数的已知形式的传统&#xff08;参数&#xff09;方法不同&#xff0c;非参数回归模型尝试从数据样…

UE虚幻引擎云渲染汽车动画的优势!

在汽车广告和动画制作领域&#xff0c;虚幻引擎&#xff08;UE&#xff09;结合云渲染技术正掀起一场技术革命。这项技术以其高性能、成本效益和灵活性&#xff0c;为创作者提供了强大的工具&#xff0c;以实现更加逼真和高效的汽车动画制作。 一、为什么选择UE虚幻引擎制作汽车…

针对考研的C语言学习(定制化快速掌握重点3)

1.数组常见错误 数组传参实际传递的是数组的起始地址&#xff0c;若在函数中改变数组内容&#xff0c;数组本身也会发生变化 #include<stdio.h> void change_ch(char* str) {str[0] H; } int main() {char ch[] "hello";change_ch(ch);printf("%s\n&q…

【YashanDB知识库】YMP迁移oracle不兼容给用户授权高级包

本文转自YashanDB官网&#xff0c;具体内容请见https://www.yashandb.com/newsinfo/7441382.html?templateId1718516 【标题】YMP迁移oracle不兼容给用户授权高级包 【关键字】oracle迁移&#xff0c;高级包授权 【问题描述】迁移评估任务中&#xff0c;oracle迁移YashanDB…

衡石分析平台系统管理手册-功能配置之全局 CSS 设置

全局 CSS 设置​ 衡石系统提供了全局 CSS 功能。通过自定义全局 CSS 可以更加精细化控制页面视觉效果&#xff0c;例如可以通过 display:none CSS 规则来隐藏不需要展示的功能。 使用场景​ 全局 CSS 可以控制页面外观&#xff0c;常用于以下场景。 场景1&#xff1a;控制页…

Golang | Leetcode Golang题解之第438题找到字符串中所有字母异位词

题目&#xff1a; 题解&#xff1a; func findAnagrams(s, p string) (ans []int) {sLen, pLen : len(s), len(p)if sLen < pLen {return}count : [26]int{}for i, ch : range p {count[s[i]-a]count[ch-a]--}differ : 0for _, c : range count {if c ! 0 {differ}}if diff…