首页 > 其他分享 >gdb调试基本操作

gdb调试基本操作

时间:2022-10-26 22:16:08浏览次数:64  
标签:run 变量 gdb 设置 基本操作 断点 调试

38P-gdb调试基础指令

使用gdb之前,要求对文件进行编译时增加-g参数,加了这个参数过后生成的编译文件会大一些,这是因为增加了gdb调试内容

gdb调试工具: 大前提:程序是你自己写的。 ---逻辑错误

基础指令:

-g:使用该参数编译可以执行文件,得到调试表。

gdb ./a.out

list: list 1 列出源码。根据源码指定 行号设置断点。

b: b 20 在20行位置设置断点。

run/r: 运行程序

n/next: 下一条指令(会越过函数)

s/step: 下一条指令(会进入函数)

p/print:p i 查看变量的值。

continue:继续执行断点后续指令。

finish:结束当前函数调用。

quit:退出gdb当前调试。

其他指令:

run:使用run查找段错误出现位置。

set args: 设置main函数命令行参数 (在 start、run 之前)

run 字串1 字串2 ...: 设置main函数命令行参数

info b: 查看断点信息表

b 20 if i = 5: 设置条件断点。

ptype:查看变量类型。

bt:列出当前程序正存活着的栈帧。

frame: 根据栈帧编号,切换栈帧。

display:设置跟踪变量

undisplay:取消设置跟踪变量。 使用跟踪变量的编号。

gcc gdbtest.c -o a.out -g

gdb test 启动对test的调试

l/list n 从第n行开始显示程序,后续继续输入list/l,就可以显示后面的代码

break/b n 在第n行设置断点,断点那一行不会执行

run/r 运行程序

接下来按next/n/step/s继续向下执行

next/n :下一个,调用函数就跑

step/s :单步,会进入调用的函数

要注意的是,如果是系统函数,按s就出不来了,这时用until+行号直接执行到行号处

出不来的示例

使用until出来

print/p i 查看i变量的值

continue 直接运行到结束

39P-gdb调试其他指令

其他指令:

run:使用run查找段错误出现位置。

set args: 设置main函数命令行参数 (在 start、run 之前)

run 字串1 字串2 ...: 设置main函数命令行参数

info b: 查看断点信息表

b 20 if i = 5: 设置条件断点。

ptype:查看变量类型。

bt:列出当前程序正存活着的栈帧。

frame: 根据栈帧编号,切换栈帧。

display:设置跟踪变量

undisplay:取消设置跟踪变量。 使用跟踪变量的编号。

40P-gdb常见错误说明

没有符号被读取—编译时没加-g参数

file后面加使用-g编译的文件,可以不用退出,gdb直接读取后进行调试。

标签:run,变量,gdb,设置,基本操作,断点,调试
From: https://www.cnblogs.com/cyberbase/p/16830258.html

相关文章

  • Linux基本操作
    01P-Linux命令基础习惯-Linux系统编程date显示系统当前时间cat/etc/shells 查看当前可使用的shellecho$SHELL 查看当前使用的shell主键盘快捷键:上 Ctrl-p 下 Ct......
  • Vim基本操作
    18P-vim的三种工作模式19P-vim基本操作-跳转和删字符i进入编辑模式,光标前插入字符a进入编辑模式,光标后插入字符o进入编辑模式,光标所在行的下一行插入I进入编辑模式,光标......
  • gdb usage
    gdbusageattachprocessgdbattach$pid查看进程内的所有线程infothread切换跟踪线程thread$thread_id  #此thread_id为infothread结果行首的threadid查看......
  • phpstudy集成工具 vscode 插件phpdebug+php拓展xdebug调试
    vscode需要安装phpdebug 服务器环境需要支持xdebugphp.ini配置设置 必须xdebug.remote_enable=Onxdebug.remote_autostart=On注意端口要和launch.json配置......
  • VSCode 上搭建 MCU 程序调试环境
    VSCode上调试MCU程序,以OpenOCD和JLink为例环境准备需要下载的软件:VSCodeMSYS2arm-none-eabi-gccOpenOCDzadigSTM32CubeMX需要准备的硬件J......
  • 基于springboot+vue商品推荐管理系统的设计与实现(源码调试+讲解+文档)
    ......
  • GDB常用命令
    GDB常用命令命令含义描述file装入想要的调试的可执行文件。run执行当前被调试的程序。kill终止正在调试的程序。step执行一行源代码而且进入函数内......
  • nginx安装与调试
    1.nginx源码方式安装#下载wgethttp://nginx.org/download/nginx-1.16.1.tar.gz#解压tar-zxvfnginx-1.16.1.tar.gz#设置安装路径(请自行修改,这里选择的是/home/wo......
  • Dev-C++调试过程
    代码如下:#include<stdio.h>intmain(){inta=5;intb=6;intt;t=a;a=b;b=t;printf("a=%d,b=%d\n",a,b);return0;}步骤如下:1. 新建文件并输入上述代码保......
  • Dev-C++调试过程
    代码如下:#include<stdio.h>intmain(){inta=5;intb=6;intt;t=a;a=b;b=t;printf("a=%d,b=%d\n",a,b);return0;}步骤如下:1. 新建文件并输入上述代码保......