• IDApro和gdb的常见调试命令


    1.gdb调试命令

     //使用gdb编译 -g -o
    $ gdb -g program.c(源码) -o program(可执行文件)
    ​
    //启动gdb调试
    $ gdb program(可执行文件名)
    ​
    //运行
    (gdb)start   //程序运行,并停在第一行
    (gdb)r       //run,程序运行,遇到断点才停
    (gdb)c       //continue,继续运行
    (gdb)n 或者 s   //按照C语言行级别的单步调试,n(跟踪,不进入函数内部),s(步入,进入函数内部)
    (gdb)ni 或者si  //按照汇编代码行级别的单步调试
    ​
    //断点
    (gdb)b 函数名  //下断点 ,其他用法:b *地址;b 行号;b *函数名,断点设置在函数的开头
    (gdb)i b     //查看断点, info break
    (gdb)d 断点编号     //删除断点
    (gdb)clear 函数名/行号   //删除加在某个函数或某行的断点
    (gdb)commands 断点编号   //断点后添加代码,达到自动化调试
         > 代码
         > end
    (gdb)disable 断点编号   //设置断点无效
    (gdb)enable 断点编号    //设置断点生效
    (gdb)b 行号 if 条件    //设置条件断点 
    ​
    //显示
    (gdb)disas 函数名   //disassemble,查看函数的汇编指令
    (gdb)info line   //查看当前位置的源代码在内存中地址,info 后面还可以加其它的,用于查看相关信息
    (gdb)x/从内存地址开始要显示内存单元的个数  内存地址   //显示内存
    ​
    Ctrl+X+A   //进入或退出图形化调试窗口,或者在运行时使用gdb -tui 可执行文件名
    (gdb)layout regs  //实时显示寄存器值和源码的变化,layout后面还可以+ src(仅显示源代码窗口)/asm(仅显示汇编代码窗口)/split(显示源代码和汇编代码窗口),layout next/prev(切换窗口)
    (gdb)win asm/src/split/regs +/- 行数  //调整窗口大小
    (gdb)tui reg float/system/general  //显示浮点寄存器/系统寄存器/通用寄存器
    ​
    //查看当前代码
    (gdb)l    //list简写,从默认位置显示,显示当前行后面的源程序
    (gdb)l 行号   //从指定行显示
    (gdb)l 函数名   //从指定函数显示
    (gdb)show list  //显示list展示的行数
    (gdb)set list 行数  //设置list展示的行数
    ​
    //打印,变量
    (gdb)p 变量名    //print,打印变量值
    (gdb)ptype 变量名  //打印变量类型
    (gdb)display 变量名   //跟踪查看一个变量,每次都停下来显示它的值
    (gdb)i display    //查看设置的自动变量操作
    (gdb)undisplay 自动变量编号   //取消对先前设置的那些变量的跟踪
    (gdb)set var 变量名 = 变量值  //设置变量
    (gdb)finish   //跳出函数体
    (gdb)until    //跳出循环

    x命令详解:

     //如以下命令表示:从内存地址0x46fd80开始显示20个内存单元,按照十六进制格式,并以8个字节作为一个内存单元
     (gdb)x/20xg 0x46fd80  
    

    附录:介绍 · 100个gdb小技巧 · 看云 (kancloud.cn)

    2.IDA调试命令

    F9:运行(在调试器中启动一个新的进程或继续调试另一个进程)
    F2:设置断点
    Ctrl+F2:终止调试进程
    F4:执行到光标处
    F7:单步步入(进入函数内部)
    Ctrl+F7:执行到从当前函数返回时
    F8:单步跟踪(不进入函数内部)
    F5:查看伪代码
    Tab:伪代码和汇编指令之间的切换
    Ctrl+alt+S:打开堆栈记录窗口
    Ctrl+alt+B:打开断点窗口
    ​
    Esc:在反汇编窗口中,返回到上一步操作的位置
    空格键:在反汇编窗口中,切换图形视图与列表视图
    ​
    shift+F12:查看字符串
    Alt+T:搜索字符串
    Alt+B:搜索二进制序列
    Ctrl+B:搜索下一个字符串/二进制序列
    ​
    Alt+M:给某个地址设置标签
    Ctrl+M:跳转到标签,通常配合Alt+M使用
    Ctrl+W:保存IDA数据库
    Ctrl+Shift+W:拍摄IDA快照
    ​
    【;】:重复注释,会在所有引用到的地方都出现注释
    【:】:普通注释
    P:将数据转换为函数
    C: 将数据转化为代码,无法识别栈帧
    A:转换为字符串
    D:转换为数据
    U:转换为未定义数据
    X:查看交叉引用
    Y:修改类型
    N:修改名称
    G:转到指定地址
    H:十进制和十六进制转换
  • 相关阅读:
    计算机程序语言的执行过程(个人简单理解)
    助力教育信创快速发展,统信软件与山东四所高校建立信创应用重点实验室
    时间序列预测:深度学习、机器学习、融合模型、创新模型实战案例(附代码+数据集+原理介绍)
    Streamlit项目:乐高风格马赛克设计工坊~打造个性化马赛克图案的平台
    Centos7安装mysql
    强化学习和近似动态规划的区别与联系是什么,他们俩是一回事吗
    【day14】每日强训——计算日期到天数转换&幸运的袋子
    月影下的时光机:Python中的日期、时间、农历、节气和时区探秘
    spring cloud与加密库jasypt(ulisesbocchio)冲突问题定位
    信息学奥赛一本通-编程启蒙3103:练18.3 组别判断
  • 原文地址:https://blog.csdn.net/m0_37865160/article/details/123800709