• GDB disassemble


    前面几篇谈GDB调试程序的帖子,都对反汇编语焉不详。这里详细讨论一下disassemble/disass命令

    反汇编一个函数
    disass func_name

    反汇编一段内存地址, 第1个参数是起始地址,第2个是终止地址
    disassemble 0×0 0×10

    先看看文档 Debugging with GDB
    http://sourceware.org/gdb/download/onlinedocs/gdb.html
    源码和机器码
    可以使用 info line 命令来映射一个源码行到程序地址,然后使用命令disassemble显示一个地址范围的机器指令。
    比如,我要查看main函数从哪里开始

    (gdb) info line main
    Line 34 of “rank.c” starts at address 0x804847f
    and ends at 0×8048493 .
    (gdb) info line *0x804847f
    Line 34 of “rank.c” starts at address 0x804847f
    and ends at 0×8048493 .
    并且,info line会修改 x/i 命令的默认的起始地址

    disassemble 不带参数,默认的反汇编范围是 所选择帧的pc附近的函数
    单个参数, 就是pc, 当然也可以是函数名,因为函数名 也是一个 地址; 这样范围就是该pc附近的函数
    两个参数,就是内存地址范围

    set disassembly-flavor intel 将汇编指令格式 设置为intel格式,默认是att
    (gdb) show disassembly-flavor
    The disassembly flavor is “att”.

    下断点:

    b *0x00007fffab642

    查看 反汇编指令的另一个方法就是使用x
    x/3i $pc

    x/100u $pc
    显示pc开始的3条指令

    单步执行:

    si

    单行执行:

    ni

  • 相关阅读:
    poj 1475 Pushing Boxes 推箱子(双bfs)
    poj 1806 Frequent values(RMQ 统计次数) 详细讲解
    poj 2846 Repository
    poj Ping pong LA 4329 (树状数组统计数目)
    POJ 1962-Corporative Network (并查集)
    hdu 2217 Visit
    nyoj304 节能
    与R纠缠的两件事——rownames和子集--转载
    七步精通Python机器学习--转载
    win10专业版激活(亲测可用)
  • 原文地址:https://www.cnblogs.com/gaoshaonian/p/9983680.html
Copyright © 2020-2023  润新知