博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每天学点GDB 4
阅读量:7051 次
发布时间:2019-06-28

本文共 1136 字,大约阅读时间需要 3 分钟。

本节侧重于如何用各种方法查看变量的值。

#include 
#include
void show_slogan(char* slogan);int counter;char* welcome_msg = "you are welcome!";int main(int argc, char** argv) { int i = 0; counter = 0; show_slogan(welcome_msg); return 0;}void show_slogan(char* slogan) { printf("%s\n",slogan); counter++; printf("you'

编译

gcc -o test -g test.c

启动gdb

gdb test

gdb)br 10

gdb)r

程序运行至断点1,即行10

显示局部变量的值

gdb)info loal

i = 10

打印i的地址

gdb)p &i

$1 = (int *) 0x7fffffffe7cc

因为作者当前是64位cpu,故显示为64位指针

有了指针,就可以使用大杀器"x"

多费一句话,在gdb中,查看内存中到底放置了哪些东西关键的关键就是要学会使用x并理解其输出内容中的具体含义。

gdb)x 0x7fffffffe7cc

显示当前指针中包含的值,与p i的效果相同。

如果上述i的例子不能让你有较深印象的话,那么就用welcome_msg来说明问题中。

gdb)p welcome_msg

$5 = 0x400664 "you are welcome!"

现在有了welcome_msg的指针,有x来打印内容

gdb)x/s 0x400664

0x400664:"you are welcome!"

想到byte级别,好的使用修饰符c

gdb)x/16c 0x400664

 

0x400664: 121 'y' 111 'o' 117 'u' 32 ' ' 97 'a' 114 'r' 101 'e' 32 ' '0x40066c:	119 'w'	101 'e'	108 'l'	99 'c'	111 'o'	109 'm'	101 'e'	33 '!

 想来welcome_msg的例子可以让你切身体会到x的强大之处。

x后可以跟多种修饰符

显示x的帮助信息

gdb) help x

好了,今天的主要内容就是介绍赫赫有名的x.用好x就可以让内存中的内容无所遁形。

转载于:https://www.cnblogs.com/hseagle/archive/2013/03/29/2989643.html

你可能感兴趣的文章
[20180423]flashback tablespace与snapshot standby.txt
查看>>
php中禁止单个ip与ip段访问的代码小结
查看>>
LeetCode-330.Patching Array
查看>>
zxing生成二维码转base64 img直接显示 Image对象转Base64码(java)
查看>>
xfire冲突问题解决(maven配置)
查看>>
C#面向对象(三)接口实现多态
查看>>
Linux下用Java获取本机IP
查看>>
Eclipse的Spring库导入
查看>>
velocity 判断 变量 是否不是空或empty
查看>>
【leetcode】123. Best Time to Buy and Sell Stock III
查看>>
角色设计的特点
查看>>
sublime text格式化json快捷键
查看>>
获得数据库自动生成的主键
查看>>
磁盘阵列
查看>>
y轴数据变换利器——yaxis-transformer
查看>>
Hibernate缓存机制
查看>>
从头开始复习css之动画
查看>>
sed常见用法,删除匹配行的上2行,下3行
查看>>
【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索
查看>>
android 7.1 调用相机崩溃解决办法
查看>>