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

     编译 

    gcc -g test.c -o test

    启动 

    gdb test

    • 1:查看代码

    (gdb) list 行号
    查看指定行号附近的代码。
    (gdb) search KeyWord
    查找当前文件下一个KeyWord
    (gdb) reverse-search KeyWord
    查找当前文件上一个KeyWord

    • 2:执行程序

    (gdb) run 可执行程序名
    执行准备调试的程序
    同时可以
    使用(gdb) set args -x -y 来修改参数
    使用(gdb) show args 获取参数

    • 3:数据显示/修改

    (gdb) print p
    可以显示当前变量p的值
    同时可以
    print Fun( 1, 2 ) 可以输出函数返回值
    print *pMyPtr 可以输出复杂对象的值
    print $1 可以输出历史记录变量的值
    (gdb) whatis p
    可以显示当前变量p的类型(对自定义结构无效)
    (gdb) set variable 
    对指定变量赋值
    (gdb) ptype p
    获取一个变量p的类型。(对自定义结构有效)
    $pc 寄存器-程序计数器
    $fp 寄存器-当前堆栈帧指针
    $sp 寄存器-栈指针
    $ps 寄存器-处理器状态

    • 4:断点

    (gdb) break FileName.cpp:2202
    可以让程序在FileName.cpp的2202行设置断点
    (gdb) breal FileName.cpp:Myfun if pParam==100
    可以让程序在FileName.cpp文件中的MyFun函数处设置断点,该断点触发条件为 pParam==100 为真时才有效。
    通常断点后可以使用
    (gdb) backtrace 命令查看调用堆栈表。
    <上文中的break允许用一个字符b替代>
    我们可以查看当前程序项目的所有断点列表,命令为
    (gdb) info break
    删除全部断点,可使用下面命令
    (gdb) delete breakpoint
    删除一个断点,可以使用下面命令
    (gdb) delete breakpoint 1
    则删除了编号为1的断点。
    禁止使用断点 (gdb) disable breakpoint 1
    允许使用断点 (gdb) enable breakpoint 1
    删除指定行上的断点 (gdb) clean 2204
    则删除了2204行上的断点。

    • 5:流程控制

    (gdb) next
    不进入函数内部的单步执行,可用一个字符n替代。
    (gdb) step
    进入函数内部的单步执行,可用一个字符s替代。
    (gdb) finish
    若进入了某函数,则直接执行至退出该函数体并显示其返回值。(void不显示)。
    (gdb) call FunName( 167 )
    直接调用执行一个函数FunName,括号内加参数
    (gdb) continue
    当进入断点后,希望继续执行下去,则使用continue

    • 6:多线程

    (gdb) info threads
    获取当前程序的所有线程列表
    (gdb) thread ID
    切换指定ID的线程为当前调试线程
    (gdb) break FileName.cpp:1122 thread all
    在所有线程的FileName.cpp文件中1122行设置断点
    (gdb) thread apply ID1 ID2 ID3 command
    在ID1,ID2,ID3等一个或多个线程中执行GDB的command命令
    (gdb) thread apply all command
    在所有线程中执行GDB的command命令
    (gdb) set scheduler-locking off (或on或step)
    当off时,意味着所有线程正常执行。这个是默认状态
    当on时,意味着只有当前调试的线程正常执行,其他线程将中断。

    当step时,意味着只有当前调试的线程正常执行,但当next过一个函数后,所有线程正常执行。 

    • 查看信息
    info functions 查看函数信息
  • 相关阅读:
    zbb20181207 springboot @ConfigurationProperties使用
    zbb20181206 logback,lombok 默认日志logback配置解析
    Spring Boot (8) 全局异常处理
    Spring Boot (7) JdbcTemplate访问数据库
    Spring Boot (6) Spring Data JPA
    Spring Boot (4) 静态页面和Thymeleaf模板
    Spring Boot (3) 热部署devtools
    Spring Boot (2) Restful风格接口
    Spring Boot (1) 构建第一个Spring Boot工程
    idea使用maven搭建ssm框架实现登陆商品增删改查
  • 原文地址:https://www.cnblogs.com/ahuo/p/2570997.html
Copyright © 2011-2022 走看看