参考资料:https://www.gitbook.com/?utm_source=legacy&utm_medium=redirect&utm_campaign=close_legacy
.a#gdb.a#
.|gdb:如何加入一个条件断点?比如for循环里面i=3才中断?
.|break 17 if i=3
.|gdb:在使用x打印内存的值的时候,如何显示为10进制?
.|x/6d &ages
具体效果如下:
(gdb) x/6d &ages
0x7fffffffd950: 23 43 12 89
0x7fffffffd960: 2 0
.|gdb:如何删除指定位置处的断点?
.|clear 6
.+
.|gdb: 如何禁用断点?
.|disable 6
.|如何在进入断点后,打印变量的值,比如此处有一个变量i
.|p i
.+
.|如何在进入断点后,查看变量在内存中存储的值? 比如下面的代码:
short i = 0XFFFF
.| 对应的命令是:
x /2x &i
/2x: x代表16进制显示,2x显示两个字节
&i: x后面需要跟变量的地址,所以此处使用 &i来获取该地址
.+
.|gdb:如何打印出来指定内存地址中保存的值?比如内存地址:0x00005555555547c4(内存地址为32位)**
.|x/s 0x00005555555547c4
(gdb) p names
$1 = {0x5555555547c4 “Alan”, 0x5555555547c9 “Frank”, 0x5555555547cf “Mary”, 0x5555555547d4 “John”,
0x5555555547d9 “Lisa”}
(gdb) x/s 0x5555555547c4
0x5555555547c4: “Alan”
.|gdb:在进入断点后,如何直接调用sizeof函数?
.|call sizeof(i)
.|gdb:如何输出变量所在的一段内存地址里面的值?比如变量x所在的内存地址往上的内容?
.|x/45x &x
会得到下面的输出内容:
.|gdb: 如何动态输出变量的值?
.|p x
.|gdb: 如何动态输出sizeof的值?
.|p sizeof(x)
