zoukankan      html  css  js  c++  java
  • gdb常用

    1.反汇编相关

    1.1 设定intel汇编

    gdb 默认是att汇编,可通过以下指令进行转换

    set disassembly-flavor intel 
    

    从配置文件上进行设置也可以

    echo "set disassembly-flavor intel" > ~/.gdbinit
    

    1.2 当前运行代码反汇编

    disassemble
    

    1.3 反汇编特定函数

    disassemble /m main
    

    /m 可以现实对应的源码

    如果在gdb外的话直接使用objdump -S 也是可以看到对应的源码的

    1.4 对特定行进行反汇编

    先使用info line 找到行对应的汇编地址,比如要找 agora.cpp:308, 看到start address 0x7f51ff963634 和 end address 0x7f51ff963656 , 就是对应的汇编程序段

    (gdb) info line agora.cpp:308
    Line 308 of "agora.cpp" starts at address 0x7f51ff963634 <rtm_recv_channel_msg(void*, void*)+132> and ends at 0x7f51ff963656 <rtm_recv_channel_msg(void*, void*)+166>
    

    然后使用disassemble 直接查看该段内存(该功能对gdb版本有要求)

    disassemble 0x7f51ff963634 0x7f51ff963656 
    

    也可以使用x查看内存的方式进行查看

    x/i 0x7f51ff963634 
    

    /i 表示按照指令地址格式

    2.layout相关

    常用

    源码汇编对应调试
    layout split 
    显示所有寄存器
    layout regs
    退出layout
    ctrl+x a
    

    2.1 layout常用

    layout:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:
    layout src:显示源代码窗口
    layout asm:显示汇编窗口
    layout regs:显示源代码/汇编和寄存器窗口
    layout split:显示源代码和汇编窗口
    layout next:显示下一个layout
    layout prev:显示上一个layout
    Ctrl + L:刷新窗口
    Ctrl + x,再按1:单窗口模式,显示一个窗口
    Ctrl + x,再按2:双窗口模式,显示两个窗口
    Ctrl + x,再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口。
    

    3.内存

    3.1 内存查看

    格式: x /nfu <addr>
    n: 查看的number
    

    x 是 examine 的缩写

    n表示要显示的内存单元的个数

    f表示显示方式, 可取如下值
    x 按十六进制格式显示变量。
    d 按十进制格式显示变量。
    u 按十进制格式显示无符号整型。
    o 按八进制格式显示变量。
    t 按二进制格式显示变量。
    a 按十六进制格式显示变量。
    i 指令地址格式
    c 按字符格式显示变量。
    f 按浮点数格式显示变量。

    u表示一个地址单元的长度
    b表示单字节,
    h表示双字节,
    w表示四字节,
    g表示八字节

    在x86平台下,内存是默认小端的,对于存储的int 变量或指针,使用x查看的时候都要倒着读,详情请见ref5

    ref

    1.GDB 单步调试汇编_cnblogs
    2.layout 的使用
    3.disasemble的使用
    4.gdb x的用法
    5.gdb x查看大小端

  • 相关阅读:
    吴恩达《深度学习》第四门课(3)目标检测(Object detection)
    cnn知识点汇总
    吴恩达《深度学习》第四门课(2)卷积神经网络:实例探究
    吴恩达《深度学习》第四门课(1)卷积神经网络
    解决Eclipse中springBoot中文乱码问题
    SpringBoot返回页面乱码解决
    【Maven】---Linux搭建Nexus3.X私服
    ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
    Winform打包工具SetupFactory 9 的使用
    PostgreSQL
  • 原文地址:https://www.cnblogs.com/ishen/p/12719131.html
Copyright © 2011-2022 走看看