zoukankan      html  css  js  c++  java
  • gdb调试程序

    1. 查看寄存器

    info registers
    查看寄存器的情况。(除了浮点寄存器)
    info all-registers
    查看所有寄存器的情况。(包括浮点寄存器)
    info registers ebp

    查看所指定的寄存器的情况。

    2. 查看汇编

    disassemble func

    3. 去除GCC的Buffer Overflow Protect

    gcc -g -fno-stack-protector test.c -o test

    4. 查看内存中的值

    用gdb查看内存

    格式: x /nfu <addr>

    说明
    x 是 examine 的缩写

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

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

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

    5. gdb执行一般流程

    $gcc -g test.c -o test          -- 调试编译

    $gdb                                 -- 启动gdb

    (gdb)file test                    -- 打开被调试文件test

    (gdb)b 10                         -- 在第10行设置断点

    (gdb)b func                      -- 在函数func处设置断点

    (gdb)clear                         -- 清除所有断点

    (gdb)r                                -- 运行

    (gdb)c                                -- 继续运行

    (gdb)n                                -- 执行下一条语句

  • 相关阅读:
    .net core 实现默认图片
    解决ASP.NET Core部署到IIS,更新项目"另一个程序正在使用此文件,进程无法访问"
    c# 按位与,按位或
    找对象,贤妻良母vs事业型
    基于Redis的分布式锁和Redlock算法
    关于free如何知道要释放内存空间的长度问题(X86篇)
    OpenWrt开发教程(五)shell命令操作json api详解(jshn.sh)
    Linux常见错误码声明
    SDN实验---流表项对网络的影响
    delphi 给TComboBox 添加图标
  • 原文地址:https://www.cnblogs.com/coderzh/p/1271347.html
Copyright © 2011-2022 走看看