首页 > 其他分享 >GDB调试入门笔记

GDB调试入门笔记

时间:2024-03-05 16:44:47浏览次数:22  
标签:入门 查看 GDB gdb 简写 安装 调试

目录

What?

GDB是什么?
全称GNU symbolic debugger
百度百科的解释:

程序调试工具
UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。

GDB支持的语言

  1. C/C++
  2. Assembly
  3. Go
  4. Pascal
  5. Rust

Why

The purpose of a debugger such as GDB is to allow you to see what is
going on "inside" another program while it executes -- or what
another program was doing at the moment it crashed.

这个是gdb官方文档里面的内容给出了为什么需要gdb


How

安装GDB

安装命令

apt-get install gdb

查看是否安装成功

gdb --version

下面是安装成功的信息显示
image

调试简单的程序

预备一个程序

image
编译这个程序生成可执行文件
image
image

调试

如果我们想调试一个程序我们在用gcc编译的时候需要加上参数-g

gcc -g test.c

如何进入调试界面呢?
使用命令

gdb a.out

这里所有的a.out都是用gcc带参数生成的可执行文件

第一个命令
执行

r

image
退出gdb

quit

image

使用

break

break
简写b
可以在函数处打断点,也可以在某一行打断点

b main

在某一行打断点

b 7

info

info 是用来查看信息的
info b
查看自己的打的断点

image

list

查看源代码
list
查看我们写的代码

list

image

next

next;往下走一行
简写:n

print

我们打断点的目的是让程序在,某一步停止,便于我们查看信息。
如何查看信息呢?
使用print
简写p

p arr[0]

image

image

除了可以打印变量的值之外,我们还可以打印变量的地址

p &arr[0]

image
一个int占4个字节

step

进入某个函数
简写s
image

标签:入门,查看,GDB,gdb,简写,安装,调试
From: https://www.cnblogs.com/cxy8/p/18054132

相关文章

  • Linux入门(五)
    Linux入门(五)本篇文章主要讲述下文件处理相关的命令1:显示权限ls-lh总用量36Kdrwxrwxr-x5zhzh4.0K2月2816:47app-rw-rw-r--1zhzh5302月2218:25build.gradledrwxrwxr-x3zhzh4.0K2月2218:25gradle-rw-rw-r--1zhzh1.1K2月2608:58gr......
  • Three.js 快速入门指南
    Three.js介绍Three.js是一个开源的应用级3DJavaScript库,可以让开发者在网页上创建3D体验。Three.js屏蔽了WebGL的底层调用细节,让开发者能更快速的进行3D场景效果的开发。Three.js的开发环境搭建创建目录并使用npminit-y初始化package.json使用npminstall--sa......
  • vsc 如何调试远程python代码
    1、远程python环境准备下载minicondahttps://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/注意py版本,需要下载对应版本的conda,找到对应的版本后(这里选择py312),鼠标右键复制链接wget 相关链接bash xxx.sh  按提示操作就行。最后一个提示可能是:是......
  • javaweb04-maven&web入门
    maven依赖管理:管理项目依赖的jar包,避免版本冲突统一项目结构:提供标准统一的项目结构标准的项目构建:标准跨平台的自动化项目构建方式maven坐标groupid:定义当前项目隶属组织名称artifactid:定义当前项目名称version:定义当前项目版本号依赖依赖传递排除依赖<exclusion>......
  • jinq 入门介绍-java中编写数据库查询的简单自然的方式
    拓展阅读linqquerydslJinq是什么?Jinq为开发者提供了一种在Java中编写数据库查询的简单自然的方式。你可以像处理存储在集合中的普通Java对象一样处理数据库数据。你可以使用普通的Java命令遍历和过滤它们,而你的所有代码都将自动转化为优化的数据库查询。最后,Java终于有......
  • ESP32入门级教程
    ESP32入门级教程转载:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html记录最常用的指令。设置目标板型号:idf.pyset-targetesp32配置目标板的各个参数,例如无线SSID、密码等:idf.pymenuconfig编译:idf.pybuild烧录:i......
  • Jetty使用入门
    社区当前推荐开发者使用Jetty12.X版本。依据EndofCommunitySupportforJetty9.x-June2022,社区对Jetty9.x的支持,已在2022年6月1日停止。依据EndofCommunitySupportforJetty10/Jetty11-January2024,社区对Jetty10.X、Jetty11.X的支持,已在2024年1月停止。......
  • MIT 6.S081入门lab5 懒惰分配
    MIT6.S081入门lab5懒分配一、参考资料阅读与总结1.xv6book书籍阅读(Chapter4Section4.6)4.6Page-faultExceptionsxv6对异常情况的处理:用户空间终止进程;内核空间停止内核执行。缺页错误常常被用于写时复制方法,例如COW-fork。缺页错误的类型:LoadPageFaults:......
  • codeblocks两种创建文件的方式(含调试教程)
    codeblock用法以及调试教程codeblock两种创建文件的方式:1.直接建一个空白文件这种方式创建新文件的缺点是不能调试,debug是灰色的不能点第二种创建文件的方式:新建一个项目project创建一个空项目同样新建一个空白文件,只不过这种方法会提示你是否要把这个文件放在项目里先......
  • Gradle入门
      1.1下载Gradle的链接 https://gradle.org/1.2Gradle目录介绍:①docs: API、DSL、指南等文档②getting-started.html:入门链接③init.d:gradle的初始化脚本目录④lib:相关库⑤LICENSE⑥media:一些icon资源⑦NOTICE⑧sample:实列......