linux下gdb常用的调试命令

From: http://blog.csdn.net/schoolers/article/details/6743223

 

用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法。
呵呵,有时迷茫了自己处在什么堆栈的深处,这是使用where命令能够清晰的看到自己的位置,有时在循环太多让人受不了了,可使用u或者finish或者jump命令来跳出去。
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 <on/off>
在C++中,如果一个对象指针指向其派生类,如果打开这个选项,GDB会自动按照虚方法调用的规则显示输出,如果关闭这个选项的话,GDB就不管虚函数表了。这个选项默认是off

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

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

set print null-stop <on/off>
如果打开了这个选项,那么当显示字符串时,遇到结束符则停止显示。这个选项默认为off

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

set print union <on/off>
设置显示结构体时,是否显式其内的联合体数据。例如有以下数据结构

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

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

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

相关文章

JS之返回字符串最后出现的位置lastIndexOf

作用&#xff1a;lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置&#xff0c;在一个字符串中的指定位置从后向前搜索 语法&#xff1a;stringObject.lastIndexOf(searchvalue,fromindex) 参数1&#xff1a;必需。规定需检索的字符串值 参数2&#xff1a;可选的整…

博客园访问量有些小,我就没有必要在复制一份了,博客园就这样吧,继续CSDN了。...

博客园访问量有些小&#xff0c;我就没有必要在复制一份了&#xff0c;博客园就这样吧&#xff0c;继续CSDN了。转载于:https://www.cnblogs.com/Silence-AC/p/3953046.html

死循环-批处理

echo off:loopstart cmd.exegoto :loop注&#xff1a;其中 &#xff1a;loop为循环标记cmd.exe程序可以更换为其他程序如你的电脑性能好的话可以用shutdown -a来结束转载于:https://blog.51cto.com/aizzw/101246

基于mint-ui的城市选择3级联动

1、实际效果 2、首先你需要去下载一个包含中国省份&#xff0c;城市&#xff0c;区县的数据 如下&#xff1a; https://github.com/artiely/Administrative-divisions-of-China&#xff08;里面包含二级联动数据&#xff0c;三级联动数据&#xff0c;四级联动数据等&#xff0…

JS之检索子字符串的search方法

作用&#xff1a;search() 方法用于检索字符串中指定的子字符串&#xff0c;或检索与正则表达式相匹配的子字符串 语法&#xff1a;stringObject.search(regexp) 参数&#xff1a;该参数可以是需要在 stringObject 中检索的子串&#xff0c;也可以是需要检索的 RegExp 对象。…

React开发(122):动态表头核心配置 外层绑定key

Object.keys()的用法 作用&#xff1a;遍历对象 返回结果&#xff1a;返回对象中每一项key的数组 // 1. 定义一个对象var obj { 0:大,1:二,2:光强 }// 2. 使用Object.keys()方法var keyValue Object.keys(obj)// 3. 打印结果console.log(keyValue) // 得到是&#xff1a;[&q…

一个很有深度的C++内存问题---GDB调试(一)

先看代码(a.c)&#xff1a; #include <stdio.h>int main(int argc, char* argv[]){int a[4]{1,2,3,4};int *ptr1(int*)(&a1);int *ptr2(int*)((int)a1);int *ptr3(int*)(a1);printf("a %x, &a %x, &a1 %x, (int)a1 %x\n", a, &a, &a1…

咬文嚼字——1

看点&#xff1a;作者王琦 勘误&#xff1a;张琦等编著 出处&#xff1a;永正网上购书中心 [url]http://www.erbook.com.cn/list.asp?sp_code9787121067921[/url] 《案例精解企业级网络构建》六位主创人员博客地址&#xff1a; 张琦&#xff1a; [url]http://zhangqi.blog.51…

HTML DOM之属性的各种操作方法

1.element.getAttribute(attributename)方法用来返回指定属性名的属性值&#xff0c;返回的类型是字符串类型 2.element.getAttributeNode(attributename)方法从当前元素节点(nodeType值为1的节点)element中通过名称获取属性节点(nodeType值为2的节点)&#xff0c;返回值是指定…

input框在ios中的阴影问题

在IOS下&#xff0c;input 和textarea表单默认会有个内阴影&#xff0c;一定程度上影响视觉一致&#xff0c;可通过设置下面代码去掉&#xff1a; input{ -webkit-appearance: none; }

React开发(123):ant design学习指南

// 表单组件<Form><Button><Input><InputNumber> //所有输入数字的地方要使用此组件 <Radio><Select><DatePicker><TreeSelect>// 数据展示|布局组件<Card><Tabs><Table>//反馈交互组件<Modal><…

40种网站设计常用方法

1. οncοntextmenu"window.event.returnValuefalse" --将彻底屏蔽鼠标右键<table border οncοntextmenureturn(false)><td>no</table> 可用于Table2. <body onselectstart"return false"> 取消选取、防止复制3. οnpaste"…

无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用

一&#xff0c;问题描述 MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain16&#xff0c;该符号在函数 ___tmainCRTStartup 中被引用 Debug\jk.exe : fatal error LNK1120: 1 个无法解析的外部命令 error LNK2001: unresolved external symbol _WinM…

常见位操作:获取,设置,清零

1 /*常见位操作&#xff1a;获取&#xff0c;设置&#xff0c;清零2 * 3 * */4 public class BitGet {5 /*6 * 该函数实现获取功能7 * 先将1左移动i位&#xff0c;左移动0位变成了00000001&#xff0c;8 * 然后再和Num十进制12转化为二进制00001100进行&a…

CSS Grid布局(2)

6.间距 grid-column-gap和grid-row-gap属性用来创建列与列&#xff0c;行与行之间的间距 间距(Gap)可以设置任何非负值&#xff0c;长度值可以是px、%、em等单位值 grid-gap是grid-row-gap和grid-column-gap两个属性的缩写 如果它指定了两个值&#xff0c;那么第一个值是设置…

linux怎么使多条命令同时执行

一次执行多个bai命令可以将多个命令用du英文分号分割&#xff0c;比如像这样&#xff1a;zhi mkdir /tmp/mydir; touch /tmp/mydir/myfile 其实这样也倒不能算是同时执行&#xff0c;Linux的命令是顺序执行的&#xff0c;就算是shell脚本&#xff0c; 里面写了一大堆命令&#…

React开发(124):ant design学习指南之form中的属性isFieldTouched

没有值的时候返回提示的error 有值返回undefined

食品安全--牛奶和蛋白质浅谈

蛋白质才是牛奶中的主要营养成分&#xff0c;鲜牛奶的国家标准是100毫升≥2.95克&#xff0c;而纯正的生鲜牛奶的蛋白质含量一般在3&#xff05;以上&#xff0c;一般都能达到国家标准。 食品工业上检测牛奶蛋白质含量被定为国家标准的是凯氏定氮法。原理很简单&#xff1a;蛋白…

HDU 4990 Ordered Subsequence --数据结构优化DP

题意&#xff1a;给一串数字&#xff0c;问长度为m的严格上升子序列有多少个 解法&#xff1a;首先可以离散化为10000以内&#xff0c;再进行dp&#xff0c;令dp[i][j]为以第i个元素结尾的长度为j的上升子序列的个数&#xff0c; 则有dp[i][j] SUM(dp[k][j-1]) (a[k] < a[…