linux常用调试,linux下gdb常用的调试命令

用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法。接下来是小编为大家收集的linux下gdb常用的调试命令,希望能帮到大家。

1c309f049ca5db940b2c3eda2260d760.png

linux下gdb常用的调试命令

gdb常用:

run 启动程序运行

next 单步执行(不到函数内部)

step 单步执行,跟踪到函数内部

finish 继续执行,直到当前函数结束

continue 继续执行,直到下一个断点

jump 9 直接跳到指定行

list 显示源码

l 3,10 显示特定范围的源码 l main显示函数的源码

set listsize 50 修改源码显示行数

break 设置断点

b main设置函数断点

b 9 设置指定行断点

b 将下一行设置为断点

b test if a == 10 设置条件断点

delete 删除断点

d 3 删除指定的断点

condition 修改条件 condition 4 a == 90

info 查看信息

info threads 查看线程信息

info breakpoints 查看断点信息

info locals 显示局部变量

info args 显示函数变量

info registers 显示寄存器数据

thread 2 切换线程

where 查看调用堆栈(bt 或者 info s)

frame 查看当前堆栈帧

frame 8 查看指定堆栈帧信息

info frame 查看当前堆栈帧更详细的信息

print a 打印变量信息

print/x a 十六进制输出变量信息

print a + b 可以进行表达式计算

print $eax 显示某个寄存器的数据

x/nfu 0×300098 显示指定地址的内存数据

n 显示内存单位,长度

f 格式(除了 print 格式外,还有 字符串s 和 汇编 i)

u 内存单位(b: 1字节; h: 2字节; w: 4字节; g: 8字节)

set vairiable a = 100 可以修改变量的值

commands 指定到了特定断点后执行的命令序列

whatis buf 显示变量的类型

dump memory 输出文件名 内存起始地址 内存终止地址

restore 文件名 binary 起始位置

watch buf buf的值一旦改变,会触发watchpoint

奇淫技巧:

cat ~/.gbinit gdb会从这个文件读取配置

cat ~/.gdb_history

呵呵,对于gdb时想要查看长的字符串老是显示不全,怎么半呢,gdb参看数组字符串时默认只是显示部分的数据,通过这个命令可以修改:

set print elements 0 默认这里设置是200,设置为0表示没有限制

还有其它一些set命令可以试试:

set print address

set print address on

打开地址输出,当程序显示函数信息时,GDB会显出函数的参数地址。系统默认为打开的

set print object

在C++中,如果一个对象指针指向其派生类,如果打开这个选项,GDB会自动按照虚方法调用的规则显示输出,如果关闭这个选项的话,GDB就不管虚函数表了。这个选项默认是off

show print pretty

查看GDB是如何显示结构体的

set print array

set print array on

打开数组显示,打开后当数组显示时,每个元素占一行,如果不打开的话,每个元素则以逗号分隔。这个选项默认是关闭的

set print null-stop

如果打开了这个选项,那么当显示字符串时,遇到结束符则停止显示。这个选项默认为off

set print pretty on

如果打开printf pretty这个选项,那么当GDB显示结构体时会比较漂亮

set print union

设置显示结构体时,是否显式其内的联合体数据。例如有以下数据结构

p string+n显示偏移n后的字符串内容,这个使用起来也是比较方便的

看了“linux下gdb常用的调试命令”还想看:

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

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

相关文章

永恒python配合什么主武器好_学点python吧,别再这么累了,让你轻松实现财富自由...

“我真的好累,真的好想辞职啊,可是……”当疫情逐渐褪去,看似一切都在好转,可实际上好多朋友都留言道,被刚刚恢复运转没多久的公司压榨地喘不过气来,每天都忙着同样的事情,却没有任何成就感&…

linux nginx 503,GitLab网页500/502/503错误–Nginx无法启动问题排查

让小汤装个GitLab,折腾了一周了还没弄好,网站一直是50x错误,看了下情况是nginx服务挂了。这里记录一下排查的步骤。首先看看gitlab服务的情况:gitlab-ctl status。。。。run: logrotate: (pid 19388) 838s; run: log: (pid 1746) …

openstack资源使用汇总_OpenStack 如何查看主机已使用的资源啊?

通过 nova hypervisor-stats 命令。[rootstation140 ~(keystone_admin)]# nova hypervisor-stats-----------------------------| Property | Value |-----------------------------| count | 1 || vcpus_used | 0 || local_gb_u…

linux找出重复数字,C语言笔试经典-查找多位数重复数字以及次数

从键盘输入一个多位的整数 用程序判断 这个数里面有没有 重复的数字 有重复的数字就打印 哪个数字重复了 重复了几次例如:输入:1122431打印结果:1重复 出现3次2重复 出现2次,上代码:#include//查找多位数 重复数字 …

padans 判断列是否为空_pandas 如何判断指定列是否(全部)为NaN(空值)

asp.net 页面如何将Eval中的时间显示为“yyyy-MM-dd ” 格式JavaScript Date 对象JavaScript Date 对象 Date 对象 Date 对象用于处理日期与实际. 创建 Date 对象: new Date(). 以上四种方法同样可以创建 Date 对象: var d n ...学习Slim …

linux vg备份还原,Oracle Linux 6.4 误删VG之恢复过程

五、VG恢复思路1、在/etc/lvm/存放着LVM的配置、归档、备份等信息。[rootol64 ~]# ls -l /etc/lvmtotal 52drwx------. 2 root root 4096 Nov 18 08:30 archivedrwx------. 2 root root 4096 Nov 18 08:30 backupdrwx------. 2 root root 4096 Feb 24 2013 cache-rw-r--r--. 1 …

antd radio设置默认选中_单选框radio总结(获取值、设置默认选中值、样式)

单选框 radio 是 否 1.获取值 $("input[name=killOrder]:checked").val(); $(input:radio:checked).val(); $("input[type=radio]:checked").val(); $(":radio[checked]").each(function(radio){alert($(this).val()); 2.设置第一个Radio为选中…

linux cat cd,linux 文件系统命令 cat cd chmod

cd,有时也写作chdir(change directory,改变目录),是在Unix、Windows和DOS操作系统下用于改变工作目录的命令行命令。在Unix的外壳脚本与Windows或DOS的批处理文件中亦可使用。CHDIR()还是Visual Basic改变工作目录的一个函数。目录是文件系统…

python namedtuple默认值_python中namedtuple怎样加默认值?

我们知道很多类的使用上有相似的地方,虽然之前在字段上namedtuple是不能添加的,但是在默认值上和数据类一样,我们可以选择默认值进行添加。当然这需要一些代码上的修改,小伙伴们可以先去了解一下数据类的概念,然后再na…

数据结构c语言版编程软件,数据结构严蔚敏4版PDF下载_数据结构C语言版严蔚敏下载 完整版_当载软件站...

数据结构C语言版严蔚敏 是《data structures and algorithm analysis in c》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者mark allen weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销&#xf…

opc读取ab的plc数据_C#读写 AB PLC 直接通过节点来读写数据 读写 AllenBradley PLC

本文将使用一个Github开源的组件库技术来读写AB PLC,使用的是基于以太网的实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作本类库绝对是ab最强的通讯库github地址:…

c语言建立动态链表ppt,C语言链表讲解.ppt

第十一章 链表;例:跳马。依下图将每一步跳马之后的位置(x,y)放到一个“结点”里,再用“链子穿起来”,形成一条链,相邻两结点间用一个指针将两者连到一起。;依上图有7个结点;11.7 用指针处理链表;1249;链表中结点的定义;链表的基本…

c 语言new运算符重载,c – 当我们重载new运算符时,是否需要重载放置new运算符?...

通常不会,因为它不经常使用.但它可能是必要的,因为当你在类中重载operator new时,它会隐藏global :: operator new的所有重载.因此,如果您想在该类的对象上使用placement new,请执行;否则不要.同样适用于新的.如果您刚刚更改了分配方案,并且您感到惊讶的是某个地方某人正在使用…

supersocket缓冲区_supersockets接收过滤器(ReceiveFilter)

接收过滤器(ReceiveFilter)用于将接收到的二进制数据转化成请求实例(RequestInfo)。实现一个接收过滤器(ReceiveFilter), 你需要实现接口 IReceiveFilter:public interface IReceiveFilterwhere TRequestInfo : IRequestInfo{/// /// Filters received data of the …

android网络盒子改,有什么办法可以把淘汰下来的安卓手机改造成电视盒子用?...

基本上谁家都会有一两部旧的手机,其实并不是不能用或者坏了,只是配置有些低。我们只需要简单改造一下,就可以将旧手机改造成电视盒子,而且比普通的网络盒子性能更强大。有线方式我们需要准备一根MHL线,大部分的安卓手机…

心电信号越界怎么回事_心电监护仪常见故障分析与排除

心电监护仪常见故障分析与排除心电监护仪是一种连续实时的无创伤监测患者多种生理参数的监护仪器。本文结合EM-6多参数仪(北京康宏兴业科技发展有限公司生产)在临床使用巾经常出现的故障现象以及故障的排除方法予以分析.供大家参考。1屏幕无显示1.1故障现…

android palette组件用法,Android Support Palette使用详解

使用Palette API选择颜色良好的视觉设计是app成功所必不可少的, 而色彩设计体系是设计的基础构成. Palette包是支持包, 能够从图片中解析出突出的颜色, 从而帮助你创建出视觉迷人的应用你能够使用Palette包设计布局主题, 并把自定义色彩应用到可视化元素中. 比如, 你可以根据专…

pdf文件如何生成目录 wps_wps制作pdf文档的详细方法

一些用户在使用wps软件的时候,wps怎样制作pdf文档?你们知道怎么操作的吗?对此感兴趣的伙伴们可以去下文看看wps制作pdf文档的详细方法。wps制作pdf文档的详细方法一、打开或生成原始文件本文选择用WPS打开《岳飞传.txt》,并进行智能格式整理。二、添加…

ecshop活动页_ECSHOP团购活动,ECSHOP团购列表

网店的团购活动和现实中的团购差不多。都是希望大量的人参与进来,从而以一个相对优惠的价格买的商品。下面介绍下网店的团购活动。进入后台 > 促销管理 > 团购活动如果已经添加过团购活动的话,这里会看到添加过的所有团购活动。点击右上角的 添加团…

android studio aspectj使用,androidStudio中使用 AspectJ

关于 AOP 的详细介绍请参考 深入理解Android之AOP本文主要介绍 怎么在 AndroidStudio 中使用 AspectJ1 . 在android studio 中新建一个项目 MyApplication2. 在 app 目录下 的 build.gradle 中完成如下配置:apply plugin: com.android.applicationimport org.aspectj.bridge.IM…