GDB调试命令

一些常见的GDB 调试命令汇总

1、查看栈帧信息
i frame 帧标号

2、查看所以线程信息
thread apply all bt
或者:t a a bt
再调试某线程:t 线程号

3、查看内存
x/40x 地址
例如先获取数组地址,再打印内容
p/x arrry
x/40xg arrry_addr /* 8字节显示 /
x/40xw arrry_addr /
4字节显示 */

命令语法: x /Nuf experssion

  • N – 需要打印的单元数
  • u – 每个单元的大小
    u对应的意义:
    b 单字节
    h 双字节
    w 4字节
    g 8字节

f – 数据打印的格式
x 16进制
u 无符号十进制
i 指令地址格式

4、查看变量值
有时候,你需要查看一段连续的内存空间的值。比如数组的一段,
或是动态分配的数据的大小。你可以使用GDB的“@”操作符,“@”的左边是
第一个内存的地址的值,“@”的右边则你你想查看内存的长度
(gdb) p/x *pkt_user@1
$5 = {ctrl_head_is_set = 0x0, payload_head_is_set = 0x0, payload_is_set = 0x0, tx_performance_open = 0x0, rx_pkts_display = 0x0,
tx_pkts_display = 0x0, rx_pd_head_display = 0x0, tx_pd_head_display = 0x0, rx_ctrl_head_display = 0x0, tx_ctrl_head_display = 0x0,
tx_busy = 0x0, payload_head_len = 0x0, payload_len = 0x0, packet_len = 0x0, rx_pkts_display_len = 0x0, tx_pkts_display_len = 0x0,
pkt_num_to_send = 0xffffffff, pkt_rxtx_mode = 0x3, payload_list = 0x6808b8, pkt_ctrl_head = {eop_flag = 0x0, sop_flag = 0x0,
head_parity = 0x0}, loop_pkt = {loop_mode = 0x0, strip_len = 0x0, head_pos = 0x0, head_len = 0x0, valid_head_len = 0x0, head = {0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}}
(gdb)

5、查看当前堆栈信息:
i frame 或者 info frame

6、查看pc寄存器地址处的代码
查看出问题时的 pc指针(rip)指向的地址 如: rip = 0x8048484
再查看该地址处的代码: x/5i $rip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值