2、gdb常用功能2

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.hqwc.cn/news/309956.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FTP的基本介绍

FTP ftp的介绍&#xff1a; ftp是一个可以提供共享文件的服务器&#xff0c;他可以通过iis.msc也就是windows 的服务器管理器来打开&#xff0c;或者通过cmd命令行打开 如何使用iis.msc打开ftp&#xff0c;如何使用cmd打开ftp &#xff0c;如何匿名登录ftp&#xff0c;ftp和…

计算机毕业设计—SSM酒店管理系统(附源码)

1&#xff0c; 概述 1.1 课题背景 开发本系统主要是为酒店管理者和前台营业员提供更好的管理平台&#xff0c;让计算机对快捷酒店进行自动化管理&#xff0c;用户可以直接在计算机上实现对酒店客房的信息管理&#xff0c;并能在一定程度上实现自动化&#xff0c;有序&#xf…

三子棋(c语言)

前言&#xff1a; 三子棋是一种民间传统游戏&#xff0c;又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战&#xff0c;双方依次在9宫格棋盘上摆放棋子&#xff0c;率先将自己的三个棋子走成一条线就视为胜利。但因棋盘太小&#xff0c;三子棋在很多时候会出现和…

软件测试/测试开发丨Python 虚拟环境及pip环境管理

venv 虚拟环境管理 venv 虚拟环境的优点 独立的 Python 环境&#xff0c;不会产生冲突有助于包的管理删除和卸载方便 venv 使用方法 创建虚拟环境 python3 -m venv test 激活虚拟环境 切换指定文件夹Windows&#xff1a;/Scripts/macOS&#xff1a;/bin/ 执行指令&#xff…

Python运算符与控制语句

第九章、运算符 一、概述 在 Python 中&#xff0c;运算符是用于进行各种操作的符号或关键字。Python 支持多种类型的运算符&#xff0c;包括算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符等。 下面对常用的运算符进行详细介绍&#xff1a; 二、算术运算符&…

【Linux驱动】设备树简介 | 内核对设备树的处理

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux驱动》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f9f2;设备树简介&#x1f3f9;设备树语法&#x1f3f9;常见节点和属性&#x1f3f9…

Autosar MCAL-RH850P1HC Dio配置

文章目录 DioDioGeneralDioCriticalSectionProtectionDioDevErrorDetectDioDeviceNameDioFlipChannelApiDioMaskedWritePortApiDioUseWriteVerifyErrorInterfaceDioVersionCheckExternalModulesDioVersionInfoApiDioWriteVerifyDioWriteVerifyErrorInterface DioPortP0-P9DioPo…

交叉验证的种类和原理(sklearn.model_selection import *)

交叉验证的种类和原理 所有的来自https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators并掺杂了自己的理解。 文章目录 前言一、基础知识1.1 交叉验证图形表示1.2 交叉验证主要类别 二、部分交叉验证函数&#xff08;每类一个&#xff0…

Educational cf 160的B题

Problem - B - Codeforces 找到最小操作次数&#xff0c;使得子串对应位与原来字符串对应位不相同。 交换是没有代价的&#xff0c;但是删除有代价。 首先复制两个一模一样的串&#xff0c;我们把下面作为固定串&#xff0c;然后对串中0和1的个数进行计数&#xff0c;由于我…

[C++] : 贪心算法专题(第一部分)

1.柠檬水找零&#xff1a; 1.思路一&#xff1a; 柠檬水找零 class Solution { public:bool lemonadeChange(vector<int>& bills) {int file0;int ten 0;for(auto num:bills){if(num 5) file;else if(num 10){if(file > 0)file--,ten;elsereturn false;}else{i…

Linux文件fd剖析

学习之前&#xff0c;首先要认识什么是文件&#xff1f; 空文件也是要在内存中占据空间的&#xff0c;因为它还有属性数据。文件 属性 内容文件操作 对内容 对属性 或者对内容和属性的操作标定一个文件的时候&#xff0c;必须使用&#xff1a;路径文件名&#xff0c;文件具…

Vue: 事件修饰符, 键盘事件, 鼠标事件,计算属性

目录 事件修饰符 阻止默认事件 阻止冒泡 允许触发一次 捕获模式 self passive 键盘事件 keyup & keydown 按键别名 注意tab 注意系统按键 自定义按键 鼠标事件 简介 鼠标焦点事件 计算属性 差值语法实现 methods实现 computed实现 get() set() 总…