2、gdb常用功能2

news2025/1/18 6:43:15

1.4、线程

程序避免不了涉及到多线程.常用指令如下.

命令简写形式说明
info thread显示当前进程内所有线程信息
thread 切换到num线程
thread find 寻找regexp在gdb中的id
info address

在这里插入图片描述

结合上述图片理解,第一列的id是gdb内部为线程排序的一个id,第三列中的id为代码中实际的id.

thread <num>中的num为第一列中的id

thread find <regexp>中的regexp为第三列中的id,输出的id为第一列的id.

上述要结合代码一起使用作用更明显.

char *p_name = "thread_name";
pthread_create(&dev->thread, NULL, process_thread, NULL);
pthread_setname_np(dev->thread, p_name);

代码中的dev->thread存储的即为第三列中的值,如果没有使用pthread_setname_np为线程命名,则可以使用thread find dev->thread找到线程在gdb中对应的id,然后使用thread num切换到指定线程堆栈.

1.5、堆栈

命令简写形式说明
backtracebt查看当前堆栈信息
frame 切换到指定堆栈
info address <fun_name>查看函数地址
info symbol 通过地址查看函数

碰到程序崩溃的时候,可以使用下图所示方式查看变量

在这里插入图片描述

从上到下就是调用层级的关系.第一例的数字就是堆栈编码.

可以使用frame <num>进入到指定堆栈查看数据.

通过上述info address <fun_name>info symbol <addr>可以定位函数和指针的对应关系.

1.6、内存快照

程序崩溃不好定位,在执行程序前,输入如下指令.

 ulimit  -c unlimited

在执行程序,则程序崩溃后,会在当前目录自动保存一个叫做core的文件.

后续输入gdb <exce> core即可进入到程序崩溃前的堆栈环境,之后利用上述堆栈和线程相关指令查看内部数据使用情况. 后续根据断点和观察点等指令快速调试定位问题.

可通过修改/proc/sys/kernel/core_pattern文件内容使得每次程序崩溃后保留文件名字不同.

参数说明

%% 单个%字符
%p dump进程的进程ID
%u dump进程的用户ID
%g dump进程的组ID
%s 导致core dump的信号
%t core dump 的时间
%h 主机名
%e 程序文件名

1.7、布局

gdb默认是不显示源码和汇编的.

可通过下列指令切换显示状态.

命令简写形式说明
layout name仅支持四种.
src: 源码
asm:汇编
split: 分割
regs:寄存器
focus 将光标聚集到指定窗口.比layout多支持两个参数.
next: 下一个窗口
prev: 上一个窗口
winheight +/- 将指定窗口设定为line个高度
name同layout仅4个选项
refresh刷新所有窗口
update更新源代码窗口和当前执行点

使用layout <names>后,使用ctrl+x+a切换回默认窗口.

ctrl+l可以刷新窗口.

ctrl+x+1:单窗口模式,显示一个窗口

ctrl+x+2:双窗口窗口模式,显示两个窗口

1.8、帮助指令

可以使用help <instruct_name>查看官方使用说明.示例如下.

查看断点使用说明.

在这里插入图片描述

查看info使用说明.

在这里插入图片描述

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

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

相关文章

Redis:原理速成+项目实战——Redis的Java客户端

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis常见命令&#xff08;数据结构、常见命令总结&#xff09; &#x1f4da;订阅专栏&…

算法基础之最短编辑距离

最短编辑距离 核心思想 &#xff1a; 线性dp 集合定义 &#xff1a; f[i][j]为操作方式的最小值 集合计算 : 三种操作 取最小 ① 删除 : 将a[i]删掉 使ab相同 –> f[i-1][j] 1 f[i][j]② 增添 : 在a[i]后加上一个数 使ab相同 –> f[i][j-1] 1 f[i][j]③ 替换 : 将a[…

【unity学习笔记】捏人+眨眼效果+口型效果

一、vriod捏人 1.在vroidstudio软件中捏人 2.导出模型&#xff08;.vrm) 二、vrid导入unity的插件 1.在Git上搜索、打开univrm。 2.找到release页面找到合适的插件版本。&#xff08;VRM-0.116.0_0f6c&#xff09; 3.将univrm导入到工程中&#xff08;assets&#xff09;。 三…

基于FPGA的数字电路(PWM脉宽调制)

一.PWM的制作原理 假如我们有一个锯齿波&#xff0c;然后在锯齿波上设置一个阈值&#xff08;黑色水平虚线&#xff09;&#xff0c;凡是大于该阈值时输出均为高电平&#xff0c;反之则为低电平&#xff0c;这样我们是不是就得到一个PWM信号呢&#xff1f;如果我们想调整它的占…

数据治理:释放数据价值的关键

随着数字化时代的到来&#xff0c;数据已成为组织和企业最重要的资产之一。然而&#xff0c;数据的快速增长和复杂性也给数据管理带来了巨大的挑战。为了确保数据的质量、安全性和合规性&#xff0c;数据治理已成为组织和企业必须面对的重要问题。数据治理是数据要素市场建设的…

OSG绘制视锥体(升级版)

OSG绘制视锥体&#xff0c;这一篇增加设置相机参数接口&#xff0c;支持通过eye、center、up设置相机参数。 代码如下&#xff1a; #include "stdafx.h" #include <osgViewer/Viewer> #include <osg/ShapeDrawable> #include <osg/Geode> #includ…

SkyWalking UI 修改发布Nginx

文章目录 SkyWalking UI修改图标修改路由发布到Nginx添加认证修改路由模式vite.config.ts添加baseNginx配置 SkyWalking UI skywalking-booster-ui下载地址 修改图标 替换 logo.svg 修改路由 router - data - index.ts 发布到Nginx 添加认证 # 安装 yum install -y h…

电子学会C/C++编程等级考试2022年12月(八级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:生理周期(2022.12) 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容…

【网络安全常用术语解读】SCAP详解

本文主要介绍什么是SCAP&#xff0c;SCAP的产生背景是怎样的&#xff0c;SCAP有什么用途&#xff0c;有哪些组件&#xff0c;各个组件的用途是什么&#xff1f; SCAP产生背景 由于计算机和网络技术的快速发展&#xff0c;越来越多的软件和系统被应用到企业和机构中&#xff0c…

安装与部署Hadoop

一、前置依赖1、java 一、前置依赖 1、java 需要安装java rz tar -zxvf jdk-8u381-linux-x64.tar.gz -C / ln -s /jdk1.8.0_381/ /jdk # rm jdk-8u381-linux-x64.tar.gzvim /etc/profile export JAVA_HOME/jdk export PATH$PATH:$JAVA_HOME/bin # source /etc/profile ln -s…

Strateg策略模式(组件协作)

策略模式&#xff08;组件协作&#xff09; 链接&#xff1a;策略模式实例代码 注解 目的 正常情况下&#xff0c;一个类/对象中会包含其所有可能会使用的内外方法&#xff0c;但是一般情况下&#xff0c;这些常使用的类都是由不同的父类继承、组合得来的&#xff0c;来实现…

2023.12.30 Pandas操作

目录 1. pandas基础 1.1 pandas的基本介绍 1.2 pandas基础使用 2. pandas的数据结构 2.1 series对象 2.2 使用列表,自定义索引,字典,元组方式创建series对象 2.3 Series对象常用API 2.4 Series 对象的运算 1. pandas基础 1.1 pandas的基本介绍 Python在数据处理上独步天下…

SQL server Profiler的使用

在SQL server management studio 中 的工具下 选择SQL server Profiler 对sql进行过滤

计算机网络【EPOLL 源码详解】

IO多路复用 在以前&#xff0c;传统的网络编程是多线程模型&#xff0c;一个线程单独处理一个请求。 然而&#xff0c;线程是很昂贵的资源&#xff1a; 线程的创建和销毁成本很高&#xff0c;linux的线程实际上是特殊的进程&#xff1b;因此通常会使用线程池来减少线程创建和…

React中super() 和 super(props) 有什么区别?

面试官&#xff1a;super() 和 super(props) 有什么区别&#xff1f; 一、ES6 类 在 ES6 中&#xff0c;通过 extends 关键字实现类的继承&#xff0c;方式如下&#xff1a; class sup {constructor(name) {this.name name;}printName() {console.log(this.name);} }class s…

Android 13 - Media框架(27)- ACodec(五)

前面几节我们了解了OMXNodeInstance是如何处理setPortMode、allocateBuffer、useBuffer的&#xff0c;这一节我们再回到ACodec&#xff0c;来看看 ACodec start 的其他部分。 我们首先来回顾一下&#xff0c;ACodec start 的状态切换以及处理的事务&#xff0c;我们用一张不太准…

GBASE南大通用数据库-GBase 8a MPP Cluster之木桶效应降低技术

几千年前&#xff0c;因为金属冶炼、塑料成型技术不成熟&#xff0c;盛产在水源丰富的江南一带的用来洗衣服、盛水的容器都是用那种木板与竹钉合围并在外部用绳索、皮条之类紧箍起来的木桶&#xff0c;名字叫箍木桶。一个木桶由于老化或者损坏&#xff0c;桶上的个别木板发生断…

jsp+ssm+mysql实现的酒店预定管理系统项目----计算机毕业设计

项目介绍 jspssm框架&#xff08;spring、springMVC、mybaits&#xff09;实现的酒店预定管理系统的源码和视频开发教程。本系统分前台和后台管理两部分&#xff0c;前台实现了用户登录注册、查看房型信息、预定房间、提交订单、查看个人订单、修改个人资料等&#xff0c;后台…

RestClient操作索引库_创建索引库(二)

ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c; 通过http请求发送给ES。 官方文档地址: https://www.elastic.co/quide/en/elasticsearch/client/index.html 目录 一、初始化JavaRestClient 1.1.依赖引入 1.2.初始化…

Getway介绍和使用

Getway 入门简介 网关搭建步骤&#xff1a; 创建项目&#xff0c;引入nacos服务发现和gateway依赖 配置application.yml&#xff0c;包括服务基本信息、nacos地址、路由 路由配置包括&#xff1a; 路由id&#xff1a;路由的唯一标示 路由目标&#xff08;uri&#xff09;…