zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    游戏服务器架构概要
    牛客网_Go语言相关练习_选择题(3)
    Go语言实践_实现一(服务器端)对多(客户端)在线聊天室
    Go语言实践_实现一(客户端)对一(服务器端)聊天室
    牛客网_Go语言相关练习_选择题(2)
    飞鱼48小时游戏创作嘉年华_厦门Pitch Time总结与收获
    牛客网_Go语言相关练习_选择题(1)
    Go语言_iota用法
    游戏服务器概述
    LeetCode_1. Two Sum_Solution
  • 原文地址:https://www.cnblogs.com/Ox9A82/p/5483186.html
Copyright © 2011-2022 走看看