• GDB调试实用命令


    个人感觉从windows平台转到linux平台一个不适应的地方就是调试器的使用。因为windows下调试器基本上都依赖快捷键和图像界面来完成操作,就算是windbg这种伪命令行的工具,命令也很简单比较好记。

    相比之下GDB属于很复杂的了,网上找到的一些GDB的文章列出的往往都是一些没什么卵用的命令,所以开个帖子记录下常用的命令。

    插件安装

    1.gdb-peda

    这是一个调试时必不可少的神器,github地址在:https://github.com/longld/peda ,它的安装两条简单命令即可完成:

    1.git clone https://github.com/longld/peda.git ~/peda

    2.echo "source ~/peda/peda.py" >> ~/.gdbinit

    peda的一个实用命令checksec检测安全保护。

    peda的另一个实用命令searchmem用搜索内存

    file 路径  附加文件

    r       开始执行

    c              继续执行

    step          单步步入

    next          单步步过

    b *地址  下断点

    enable       激活断点

    disable      禁用断点

    info b        查看断点

    del num     删除断点

    x/wx $esp   以4字节16进制显示栈中内容

    stack 100    插件提供的,显示栈中100项

     find xxx     快速查找,很实用

    s 按字符串输出

    x 按十六进制格式显示变量。
    d 按十进制格式显示变量。
    u 按十六进制格式显示无符号整型。
    o 按八进制格式显示变量。
    t 按二进制格式显示变量。
    a 按十六进制格式显示变量。
    c 按字符格式显示变量。
    f 按浮点数格式显示变量。

    x/<n/f/u> <addr>

    n、f、u是可选的参数。

    b表示单字节,h表示双字节,w表示四字 节,g表示八字节

    但是实际的组合就那么几种:

    x/s 地址  查看字符串

    x/wx 地址  查看DWORD

    x/c 地址  单字节查看

    x/16x $esp+12 查看寄存器偏移 

    set args 可指定运行时参数。(如:set args 10 20 30 40 50) 
    show args 命令可以查看设置好的运行参数。 

    如上所示,这是peda的栈视图。其中红色的是栈帧的返回地址,蓝色的表示这个值可能为指针。、

    针对peda的使用我已经单独开了一篇文章来写:http://www.cnblogs.com/Ox9A82/p/5729308.html

  • 相关阅读:
    Java 设计模式-享元模式(Flyweight)
    Java 设计模式-状态模式模式(State)
    Java 设计模式-建造者模式(Builder)
    Java 设计模式-抽象工厂(Abstract Factory)
    Spring 之 JMS 基于JMS的RPC
    Spring 之 JMS 监听JMS消息
    Spring 之 JMS 发送和接收消息
    数据结构
    BFS vs DFS
    子集和排列
  • 原文地址:https://www.cnblogs.com/Ox9A82/p/5483186.html
Copyright © 2020-2023  润新知