zoukankan      html  css  js  c++  java
  • GDB调试入门

    首先在编译时,必须把调试信息加到可执行文件中,使用gcc/g++的-g参数可以做到这点
    指令介绍
    help 查询指令,查看其它指令的用法,如help print

    shell 启动标准shell执行command string,如shell ps,直接shell也可,输入quit退出shell

    print 用于打印的指令,搭配参数使用,类似print/x(或p/x),[x/d/u/o/t/a/c/f/s]

    set 用于设置gdb内部的一些环境与运行时的参数

    set logging on 保存当前调试信息到gdb.txt
    
    set args xxx 传递参数到程序(也可以通过r xxx传递参数)
    

    show 描述GDB本身状态

    info(缩写i) 描述程序的状态

    info args
    
    info registers
    
    info breakpoints
    
    info thread
    

    -cd/directory 用于指定源码路径(当前gdb的位置不在源码目录下或二进制不在源码目录下,否则会自动查找)

    file 用于加载调试用的二进制文件

    backtrace(缩写bt) 查看调用栈,[full详细信息|n打印n层调用栈]

    next 控制程序向下执行

    list(缩写为l) 用于列出源码

    thread(缩写为t) 用于切换线程

    thread apply all + 指令,对所有线程执行指令
    

    x 以多种格式查看内存

    break 设置程序断点,例如 b [func]:num

    break [func] if [cond] 条件断点
    
    break *+地址,对地址打断点
    
    delete + 断点号,删除断点
    
    continue 继续执行程序
    

    conmands 在break后增加一些指令,增加break的可操作性

    commands + 断点号,输入断点触发信息,end结束

    define 将gdb的指令组合起来,方便连续的重复使用,end结束

  • 相关阅读:
    和为S的两个数字
    和为S的连续正数序列
    两个链表的第一个公共结点
    删除链表中重复的结点
    常用开发工具的安装(JDK、IDEA、Tomcat、Maven、Mysql和Nodepad++)——实习日志7.10
    蓄水池取样(转)
    prepare statement
    ProxySQL Getting started
    架构收录
    服务开机自启动
  • 原文地址:https://www.cnblogs.com/hunter-w/p/12023271.html
Copyright © 2011-2022 走看看