2、gdb常用功能2

news/2024/11/8 12:04:40/

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.ppmy.cn/news/1287186.html

相关文章

matlab导出高清图片,须经修改后放入latex(例如添加文字说明,matlab画图不易操作)

一、背景 我们在写文章时&#xff0c;使用matlab画图后&#xff0c;如果不需要对图片进行额外修改或调整&#xff0c;例如添加文字说明&#xff0c;即可直接从matlab导出eps格式图片&#xff0c;然后插入到latex使用。 通常latex添加图片&#xff0c;是需要eps格式的。 但很…

Cisco模拟器-OSPF路由协议

设计要求用两台双口路由器连接不同IP网段的计算机&#xff0c;并使用OSFP协议发现路由表使不同IP网段的计算机可以相互通信。 通过设计&#xff0c;可以连通IP地址网段不同的局域网&#xff0c;可应用在园区网的互连和互通的实现上。 主要配置步骤 路由器0&#xff1a; Router…

缺失的第一个正数(LeetCode 41)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路4.1 暴力4.2 排序4.3 哈希表4.4 空间复杂度为 O(1) 的哈希表4.5 置换 参考文献 1.问题描述 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级…

Linux、Windows命令行查看服务、进程是否存在、存活

Linux 服务 查看服务状态 systemctl is-active <serviceName>示例 [rootcurry platform]# systemctl is-active mysqld active [rootcurry platform]# systemctl is-active mysqld1 unknown返回状态 active failed unknown 不存在此服务 进程 查看所有进程名称 …

机器学习系列--R语言随机森林进行生存分析(1)

随机森林&#xff08;Breiman 2001a&#xff09;&#xff08;RF&#xff09;是一种非参数统计方法&#xff0c;需要没有关于响应的协变关系的分布假设。RF是一种强大的、非线性的技术&#xff0c;通过拟合一组树来稳定预测精度模型估计。随机生存森林&#xff08;RSF&#xff0…

window 服务使用powershell 调用office进行文档内存不够的处理

在项目中为了实现office文件的预览&#xff0c;专门做了个service进行文件的定时转换。 在测试时发现&#xff0c;服务程序 双击执行的时候&#xff0c;文件的转换一切正常&#xff0c;但是当把服务程序安装为服务的时候吗&#xff0c;就会出现如下错误&#xff1a; $PowerPo…

dvwa问题篇 -- dvwa出现数据库无法访问的时候,Could not connect to the MySQL service. -- 小黑解决教程

各位小伙伴初次玩dvwa会出现各种问题&#xff0c;本来想把一些问题直接总结写一篇dvwa文章来着&#xff0c;但因为都是关键字搜索&#xff0c;所以将一些问题都拆分出来&#xff0c;以便大家方便查类似问题。&#xff08;大家有遇到不一样的问题欢迎投稿&#xff01;&#xff0…

【机器学习】西瓜书第6章支持向量机课后习题6.1参考答案

【机器学习】西瓜书学习心得及课后习题参考答案—第6章支持向量机 1.试证明样本空间中任意点x到超平面(w,b)的距离为式(6.2)。 首先&#xff0c;直观解释二维空间内点到直线的距离&#xff1a; 由平面向量的有关知识&#xff0c;可得&#xff1a; 超平面的法向量为 w w w&am…