Linux下的的GDB调试技巧三 —— 启动调试与启动程序

本文详细介绍了如何使用GDB进行程序调试,包括通过file命令加载程序、直接启动调试、附加到已运行进程以及设置参数和断点的方法。无论是在启动无参或有参程序,还是在程序运行后附加调试,GDB都能提供有效的调试支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启动调试

  • 先进入gdb,然后通过file命令进入调试

示例如下:

$ gdb
(gdb) file program_a
  • 直接进入调试

示例如下:

$ gdb program_a

直接进入调试又分为以下两种: 

  • 调试启动无参程序

示例如下:

$ gdb program_a
  • 调试启动有参程序

(1)通过命令输入参数

示例如下:

$ gdb --args program_b src_path out_path

(2)通过无参程序方式启动,在进入gdb的控制界面之后再设置程序的参数

示例如下:

$ gdb program_b

(gdb) set args src_path out_path
  • 附加到进程

很多情况下,程序出现问题时并不处于调试状态。也就是说,在我们想要调试程序时,程序

已经开始运行。这时,需要通过将gdb附加到进程的方式启动程序,语法如下:

gdb attach <pid>

gdb program <pid>

启动程序

启动程序的命令为“run”或者”r”,一般用于调试一个程序。r命令只在使用gdb启动被调试的程序时执行一次。如前例“通过无参程序方式启动”中,运行gdb program_b之后,进入到gdb的调试窗口。此时程序还未启动,可以执行设置启动参数、环境变量、断点等操作。设置完成之后,在gdb中输入run命令启动程序,程序会运行,直到遇到第一个命中的断点为止,程序在断点处会停下来。

另一个启动程序的命令是“start”,与run不同的是,start命令会在程序入口函数main停下来,start 作用等价于run+b main。如果需要在所加载的动态库中设置断点,通过start会很方便,因为 这时动态库及符号已经加载完成,通过tab就可以列举所有相关函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值