【Linux】调试器 gdb使用

在Linux系统中,GDB(GNU Debugger)是一个强大的调试工具,它允许开发者检查和调整正在运行的程序。以下是关于如何使用GDB的详细指南,包括了基本的命令和一些高级功能。

Linux调试器 gdb使用

编译带有调试信息的程序

默认情况下,GCC/G++在编译时不会包含调试信息,这使得GDB无法有效地调试程序。为了使GDB能够调试程序,我们需要在编译命令中加入-g选项来生成调试信息。

背景

  • 程序的发布方式有两种,DebugRelease模式。
  • Linux gcc/g++执行后的二进制文件,默认Release模式。
GCC/G++ 编译选项
选项描述
-g添加调试信息到输出文件,这对于GDB调试是必要的。
-O0禁止优化,这有助于GDB正确地跟踪源代码位置。
-ggdb产生GDB可以使用的调试信息,有时比-g更加详细。

GDB常用命令

命令/缩写功能描述示例
help显示GDB的帮助信息。help break
file [filename]加载待调试的程序文件。file ./a.out
run/r [args]启动程序,可以带上参数argsrun arg1 arg2
break/b [function]在指定函数或行号设置断点。break main/break 42
info breakpoints/b列出所有设置的断点。
delete/d [number]删除指定编号的断点。delete 1
clear/cl [function]清除在指定函数或行号的断点。clear main/clear 42
next/n执行到下一行,如果当前行是函数调用,则跳过函数体。next
step/s执行到下一行,如果当前行是函数调用,则进入函数体。step
continue/c继续执行直到遇到下一个断点。continue
backtrace/bt显示调用堆栈。backtrace
print/p [expression]打印表达式的值。print x
display/dis [expression]每次程序停止时都显示表达式的值。display x
undisplay/ud [display-number]停止显示某个display-number对应的表达式的值。undisplay 1
until/u [line-number]执行直到到达指定行号,或到达第一个改变的行。until 50
q/quit/Ctrl+D退出gdb

高级GDB功能

查看代码

使用list命令可以查看程序的源代码。例如:

  • list:列出程序的一部分。
  • list [start-line], [end-line]:列出指定行号范围内的代码。
  • list + [line-number]:列出指定行号附近的代码。
查看变量信息
  • print /x [variable]:以十六进制形式打印变量的值。
  • print /t [variable]:打印变量的类型。
  • print /r [variable]:以十进制形式打印变量的值。
  • print /u [variable]:以无符号整数形式打印变量的值。
设置条件断点

你可以设置条件断点,只在满足特定条件时才触发断点:

  • break [function] if [condition]:在满足condition时在function处设置断点。请添加图片描述
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值