zoukankan      html  css  js  c++  java
  • GDB调试命令——反汇编相关

    http://blog.csdn.net/moonsheep_liu/article/details/39099969


           将可执行程序用gdb program_name调用到内存中后,就可以利用gdb的反汇编命令调试程序了。常用命令如下:

           (1)设置反汇编的代码为intel格式

           gdb默认反汇编为att格式的指令。可以通过show disassembly-flavor查看。如果习惯intel格式的,用命令

           set disassembly-flavor intel设置。

           (2)反汇编命令disas/disass/disassemble

           功能:将内存中的机器码程序以指令助记符的形式显示出来。

           格式: disas/disass/disassemble 函数名/起始地址[,结束地址]

           例如:

           disas main,显示main函数对应的汇编代码 

           (3)info line

           功能:查看某个line的相关信息。

           格式:info line 函数名/*内存地址

           说明:如果参数为函数名,则显示该函数在源文件中的行号及在内存中的起始地址和结束地址。例如:

            info line main输出为:Line 36 of "bomb.c" starts at address 0x401050 <main> and ends at 0x40106b <main+27>.

           如果参数为*内存地址,则显示该内存地址的指令对应的语句所在的函数在源文件中的行号及在内存中的起始地址和结束地址。例如:

           info line *0x401053输出为:Line 36 of "bomb.c" starts at address 0x401050 <main> and ends at 0x40106b <main+27>.

           (4)r 开始/重新执行  r means run

           (5)b设置断点 b means break

           格式:b *内存地址

            delete:删除所有断点

            delete num:删除编号为num的断点 

            info break:列出所有断点

           (6)ni 单步步过,相当于debug命令中的p

           (7)si 单步步入,相当于debug命令中的t

           (8)finish 执行到返回

           (9)display 显示某寄存器的值

           格式:display /x $寄存器名字。例如:display /x $eax

           (10)x查看内存单元

           格式:x  /nfu 内存地址 x means examine

           说明:
           n表示要显示的内存单元的个数
           f表示显示方式, 可取如下值:
           x 按十六进制格式显示变量。
           d 按十进制格式显示变量。
           u 按十进制格式显示无符号整型。
           o 按八进制格式显示变量。
           t 按二进制格式显示变量。
           a按十六进制格式显示变量。
           i 指令地址格式。
           c 按字符格式显示变量。

           s 按字符串格式显示变量。
           f 按浮点数格式显示变量。
           u表示一个地址单元的长度,其中:
           b表示单字节,
           h表示双字节,
           w表示四字节,
           g表示八字节。

        (11)p查看变量值

          格式: p 变量名

          如果要查看变量的地址,用p &变量名 


    <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
    阅读(37) | 评论(0) | 转发(0) |
    0

    上一篇:GDB 下 watch的使用

    下一篇:GDB的使用方法

    给主人留下些什么吧!~~
    评论热议
  • 相关阅读:
    python D32 管道、线程池
    python D31 守护进程、进程锁、队列
    python D30 进程
    python 30 进程之间的相互独立、进程之间的时间差
    python D30 操作系统历史
    python D29 socketserver以及FTB
    python D28 粘包
    net4.0 task 超时任务代码 用Thread.sleep方式实现
    sql取随机结果集
    【ecshop---新增包邮卡功能】
  • 原文地址:https://www.cnblogs.com/ztguang/p/12649002.html
Copyright © 2011-2022 走看看