当前位置:   article > 正文

GDB使用手册(三)、如何启动及退出GDB调试(被调试程序的GDB启动及退出)

退出gdb

简述

启动GDB调试

gdb
  • 1

在这里插入图片描述

退出GDB调试

quit
#或者
exit
#或者
Ctrl-d
  • 1
  • 2
  • 3
  • 4
  • 5

注:部分centos版本可能不支持exit
在这里插入图片描述

启动GDB:如何启动GDB

 通过运行程序 gdb 调用 GDB。一旦启动,GDB 会从终端读取命令,直到您告诉它退出。
您还可以使用各种参数和选项运行 gdb,以在一开始就指定更多的调试环境。
此处描述的命令行选项旨在涵盖各种情况;在某些环境中,其中一些选项可能实际上不可用。
启动 GDB 最常用的方法是使用一个参数,指定一个可执行程序:

gdb program
  • 1

在这里插入图片描述

当程序崩溃时,会产生core文件,所以还可以从指定的可执行程序和核心文件开始:

gdb program core
  • 1

如:

gdb inphase.GBServer.out core.89101
  • 1

相反,如果要调试正在运行的进程,您可以指定进程 ID 作为第二个参数或使用选项 -p:

gdb program 1234
#or
gdb -p 1234
  • 1
  • 2
  • 3

在这里插入图片描述
在这里插入图片描述

会将 GDB 附加到进程 1234。使用选项 -p 您可以省略程序文件名。
利用第二个命令行参数需要一个相当完整的操作系统;当您将 GDB 用作连接到裸板的远程调试器时,可能没有任何“进程”的概念,并且通常无法获得核心转储。如果 GDB 无法附加或读取核心转储,它会警告您。
您可以选择让 gdb 使用 --args 将可执行文件之后的任何参数传递给下级。此选项停止选项处理。

gdb --args program  -O2 -c foo.c
  • 1

在这里插入图片描述
这将导致 gdb 调试 program ,并将 program 的命令行参数(参见参数)设置为“-O2 -c foo.c”。
您可以通过指定 --silent(或 -q/–quiet)来运行 gdb,使他不打印前缀资料:

gdb --silent
  • 1

看看区别:
在这里插入图片描述
您可以使用命令行选项进一步控制 GDB 的启动方式。 GDB 本身可以提醒您可用的选项。
类型

gdb -help
  • 1

在这里插入图片描述
显示所有可用选项并简要描述它们的使用(可以简写为‘gdb -h’)。
您提供的所有选项和命令行参数都按顺序处理。使用“-x”选项时,顺序会有所不同。

退出GDB:如何退出GDB

quit [expression]
#or
exit [expression]
#or
q
  • 1
  • 2
  • 3
  • 4
  • 5

要退出GDB,请使用quit命令(缩写为 q)、exit命令或键入文件结尾字符(通常为Ctrl-d)。如果不提供表达式, GDB将正常终止;否则它将使用表达式的结果作为错误代码终止。

中断(通常Ctrl-c)不会从​​ GDB退出,而是终止任何正在进行的GDB命令的操作并返回到GDB命令级别。任何时候键入中断字符都是安全的,因为GDB不允许它在安全的时候生效。

如果您一直在使用GDB来控制附加的进程或设备,则可以使用detach命令释放它(请参阅调试已运行的进程)。

shell命令行:如何在GDB中使用 shell 命令

如果您需要在调试会话期间执行偶尔的 shell 命令,则无需离开或暂停 GDB;你可以只使用shell命令。

shell command-string
#or
!command-string
  • 1
  • 2
  • 3

在这里插入图片描述

调用标准 shell 来执行命令字符串。注意 ! 之间不需要空格。和命令字符串。在 GNU 和 Unix 系统上,环境变量 SHELL(如果存在)决定运行哪个 shell。否则 GDB 使用默认 shell(GNU 和 Unix 系统上的 /bin/sh,MS-Windows 上的 cmd.exe,MS-DOS 上的 COMMAND.COM 等)。

开发环境中经常需要使用make。您不必在 GDB 中为此目的使用 shell 命令:

make make-args
  • 1

使用指定的参数执行 make 程序。这相当于“shell make make-args”。

pipe [command] | shell_command
| [command] | shell_command
pipe -d delim command delim shell_command
| -d delim command delim shell_command
  • 1
  • 2
  • 3
  • 4

执行命令并将其输出发送到 shell_command。请注意,| 周围不需要空格。如果没有提供命令,则重复执行的最后一个命令。
如果命令包含 |,选项 -d delim 可用于指定将命令与 shell_command 分开的备用分隔符字符串 delim。
例子:

(gdb) p var
$1 = {
  black = 144,
  red = 233,
  green = 377,
  blue = 610,
  white = 987
}
(gdb) pipe p var|wc
      7      19      80
(gdb) |p var|wc -l
7
(gdb) p /x var
$4 = {
  black = 0x90,
  red = 0xe9,
  green = 0x179,
  blue = 0x262,
  white = 0x3db
}
(gdb) ||grep red
  red => 0xe9,
(gdb) | -d ! echo this contains a | char\n ! sed -e 's/|/PIPE/'
this contains a PIPE char
(gdb) | -d xxx echo this contains a | char!\n xxx sed -e 's/|/PIPE/'
this contains a PIPE char!
(gdb)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

日志输出

将GDB命令的输出保存到文件中。有几个命令可以控制GDB的日志记录。

set logging enabled [on|off]
  • 1

启用或禁用日志记录。

set logging file file
  • 1

更改当前日志文件的名称。默认日志文件是gdb.txt.

set logging overwrite [on|off]
  • 1

默认情况下,GDB将追加到日志文件。overwrite如果要set logging enabled on改写日志文件, 请设置。

set logging redirect [on|off]
  • 1

默认情况下,GDB输出将同时发送到终端和日志文件。redirect如果您希望输出仅发送到日志文件,请 设置。

set logging debugredirect [on|off]
  • 1

默认情况下,GDB调试输出将同时发送到终端和日志文件。debugredirect如果您希望调试输出仅转到日志文件,请 设置。

show logging
  • 1

显示日志记录设置的当前值。
您还可以将GDB命令的输出重定向到 shell 命令。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/288011
推荐阅读
相关标签
  

闽ICP备14008679号