Linux下的系统编程——gdb调试工具

news2024/9/25 9:30:10

前言:

程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪。到目前为止我们的调试手段只有一种∶根据程序执行时的出错现象假设错误原因﹐然后在代码中适当的位置插入printf﹐执行程序并分析打印结果﹐如果结果和预期的一样﹐就基本上证明了自己假设的错误原因﹐就可以动手修正Bug了,如果结果和预期的不一样﹐就根据结果做进一步的假设和分析。我们介绍一种非常强大的调试工具gdb,可以完全操控程序的运行﹐使得程序就像你手里的玩具一样﹐叫它走就走﹐叫它停就停﹐并且随时可以查看程序中所有的

目录

gdb调试工具:  

1.基础指令:    

  (1)  -g

    (2)l/list

    (3)b/break

    (4)r/run 

   (5) n/next

    (6)s/step

    (7)p/print

    (8)continue

    (9) finish

    (10)quit:

2.其他指令:

    (1)run

   (2)set args

    (3)run

    (4)info b

    (5)b 20 if i = 5

    (6)ptype

    (7)bt

    (8)frame

    (9)display

    (10)undisplay


gdb调试工具:  

大前提:程序是你自己写的。  ---逻辑错误

1.基础指令:
    

  (1)  -g

        使用该参数编译可以执行文件,得到调试表

    (2)l/list

         list 1 : 列出源码,根据源码指定 行号设置断点。

 

    (3)b/break

        b 20    在20行位置设置断点。

    (4)r/run 

          运行程序

   (5) n/next

         下一条指令(会越过函数)

    (6)s/step

         下一条指令(会进入函数)

    (7)p/print

        p i  查看变量的值。

    (8)continue

        继续执行断点后续指令。

    (9) finish

        结束当前函数调用。 

    (10)quit:

        退出gdb当前调试。

2.其他指令:

    (1)run

        使用run查找段错误出现位置。

        遇到段错误时候直接run,停止的位置就是段错误的位置

   (2)set args

         设置main函数命令行参数 (在 start / run 之前)

    (3)run

        字串1 字串2 ...: 设置main函数命令行参数

    (4)info b

         查看断点信息表

    (5)b 20 if i = 5

         设置条件断点。

         代码执行到 i = 5 时候这个断点才会生效

    (6)ptype

        查看变量类型。

    (7)bt

        列出当前程序正存活着的栈帧。

    (8)frame

         根据栈帧编号,切换栈帧。

    (9)display

        设置跟踪变量

    (10)undisplay

        取消设置跟踪变量。 使用跟踪变量的编号。

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

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

相关文章

东风纳米首款车型纳米 01 亮相:纯电小车,固态电池 + 超级快充

根据近期发布的消息,东风纳米品牌推出的首款车型纳米 01 在全新发布会上正式亮相。这款车型采用东风量子架构 3 号平台,被寄予厚望将在国内市场迎来广泛的认可度。 作为一款小型纯电动车,纳米 01注重家庭出游、市区代步、个人通勤、接送孩子、…

“好声音”塌房、星空华文市值暴跌,两个交易日蒸发234亿港元

8月17日,因李玟生前录音事件,再次将《中国好声音》被舆论推至风口浪尖,引发社会对后者的质疑。 次日(8月18日),《中国好声音》的IP运营商星空华文(06698.HK)股价大跌,其港股收盘股价跌幅达到23.4%,一天内市…

基于逻辑斯蒂回归的肿瘤预测案例

导入包 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report,roc_a…

uniapp - 全平台兼容实现上传图片带进度条功能,用户上传图像到服务器时显示上传进度条效果功能(一键复制源码,开箱即用)

效果图 uniapp小程序/h5网页/app实现上传图片并监听上传进度,显示进度条完整功能示例代码 一键复制,改下样式即可。 全部代码 记得改下样式,或直接

JavaWeb_LeadNews_Day7-ElasticSearch, Mongodb

JavaWeb_LeadNews_Day7-ElasticSearch, Mongodb elasticsearch安装配置 app文章搜索创建索引库app文章搜索思路分析具体实现 新增文章创建索引思路分析具体实现 MongoDB安装配置SpringBoot集成MongoDB app文章搜索记录保存搜索记录思路分析具体实现 查询搜索历史删除搜索历史 搜…

关于java三元组的问题

在改代码的时候,发现一个奇怪的地方,举例如下 Testpublic void buildTest(){TT t new TT();Long time tnull?System.currentTimeMillis():t.getTime();System.out.println("done");}Datapublic static class TT{Long time;}这个地方运行就…

STL---vector

目录 1.vector的介绍及使用 2.vector接口说明及模拟实现 2.1vector定义 2.2vector迭代器的使用 2.3vector容量 2.4vector增删查改 3迭代器失效 4.使用memcpy拷贝 5.模拟实现 1.vector的介绍及使用 vector的文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数…

电子病历系统EMR

电子病历系统EMR源码 一体化电子病历系统基于云端SaaS服务的方式,采用B/S(Browser/Server)架构提供,覆盖了医疗机构电子病历模板制作到管理使用的整个流程。除实现在线制作内容丰富、图文并茂、功能完善的电子病历模板外&#xff…

phpcms重置密码为123456

0b817b72c5e28b61b32ab813fd1ebd7f3vbCrK

实战项目ssm权限系统 3-总结篇,权限模块保护业务模块

一 工程模块介绍 1.1 工程模块关系 在业务微服务模块中引入安全认证模块,起到对业务模块的认证授权保护

ubuntu18.04复现yolo v8环境配置之CUDA与pytorch版本问题以及多CUDA版本安装及切换

最近在复现yolo v8的程序,特记录一下过程 环境:ubuntu18.04ros melodic 小知识:GPU并行计算能力高于CPU—B站UP主说的 Ubuntu可以安装多个版本的CUDA。如果某个程序的Pyorch需要不同版本的CUDA,不必删除之前的CUDA,…

我是如何使用Spring Retry减少1000 行代码

使用 Spring Retry 重构代码的综合指南。 问题介绍 在我的日常工作中,我主要负责开发一个庞大的金融应用程序。当客户发送请求时,我们使用他们的用户 ID 从第三方服务获取他们的帐户信息,保存交易并更新缓存中的详细信息。尽管整个流程看起来…

APT60DQ20BG-ASEMI新能源功率器件APT60DQ20BG

编辑:ll APT60DQ20BG-ASEMI新能源功率器件APT60DQ20BG 型号:APT60DQ20BG 品牌:ASEMI 封装:TO-3P 恢复时间:>50ns 正向电流:60A 反向耐压:200V 芯片个数:2 引脚数…

Springboot+dynamic-datasource+Druid数据库配置加密

Springbootmybatis-plusdynamic-datasourceDruid数据库配置加密 文章目录 0.前言1. 动态添加移除数据源2.基础介绍3. 使用步骤示例简单方式,使用默认的加密1. 使用下面 工具类输出,加密后的密码1. 将上面加密后的密码配置到配置文件中如果使用的默认key…

完全免费的GPT,最新整理,2023年8月24日,已人工验证,不用注册,不用登录,更不用魔法,点开就能用

完全免费的ChatGPT,最新整理,2023年8月24日,已人工验证, 不用注册,不用登录,更不用魔法,点开就能用! 第一个:网址地址统一放在文末啦!文末直达 看上图你就能…

基于ssm的共享客栈管理系统源码和论文

基于ssm的共享客栈管理系统源码和论文058 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。…

ORB-SLAM2算法10之图像关键帧KeyFrame

文章目录 0 引言1 KeyFrame类1.1 构造函数1.2 成员函数1.3 关键帧之间共视图1.3.1 AddConnection1.3.2 UpdateBestCovisibles1.3.3 UpdateConnections1.3.4 EraseConnection1.3.5 SetBadFlag 1.4 地图点1.5 生成树 2 KeyFrame用途 0 引言 ORB-SLAM2算法7详细了解了System主类和…

机器学习实战之模型的解释性:Scikit-Learn的SHAP和LIME库详解

引言:机器学习模型的“黑箱”困境 机器学习模型的崛起让我们惊叹不已!不论是预测房价、识别图片中的猫狗,还是推荐给你喜欢的音乐,这些模型都表现得非常出色。但是,有没有想过,这些模型到底是如何做出这些决…

STM32 F103C8T6学习笔记13:IIC通信—AHT10温湿度传感器模块

今日学习一下这款AHT10 温湿度传感器模块,给我的OLED手环添加上测温湿度的功能。 文章提供源码、测试工程下载、测试效果图。 目录 AHT10温湿度传感器: 特性: 连接方式: 适用场所范围: 程序设计: 设…

大模型技术实践(二)|关于Llama 2你需要知道的那些事儿

在上期文章中,我们简要回顾了Llama模型的概况,本期文章我们将详细探讨【关于Llama 2】,你需要知道的那些事儿。 01-Llama 2的性能有多好? 作为Meta新发布的SOTA开源大型语言模型,Llama 2是Llama模型的延续和升级。Ll…