zl程序教程

您现在的位置是:首页 >  系统

当前栏目

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

Linux调试程序 技巧 启动 GDB
2023-09-14 09:15:40 时间

启动调试

  • 先进入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就可以列举所有相关函数。