赞
踩
启动GDB调试
gdb
退出GDB调试
quit
#或者
exit
#或者
Ctrl-d
注:部分centos版本可能不支持exit
通过运行程序 gdb 调用 GDB。一旦启动,GDB 会从终端读取命令,直到您告诉它退出。
您还可以使用各种参数和选项运行 gdb,以在一开始就指定更多的调试环境。
此处描述的命令行选项旨在涵盖各种情况;在某些环境中,其中一些选项可能实际上不可用。
启动 GDB 最常用的方法是使用一个参数,指定一个可执行程序:
gdb program
当程序崩溃时,会产生core文件,所以还可以从指定的可执行程序和核心文件开始:
gdb program core
如:
gdb inphase.GBServer.out core.89101
相反,如果要调试正在运行的进程,您可以指定进程 ID 作为第二个参数或使用选项 -p:
gdb program 1234
#or
gdb -p 1234
会将 GDB 附加到进程 1234。使用选项 -p 您可以省略程序文件名。
利用第二个命令行参数需要一个相当完整的操作系统;当您将 GDB 用作连接到裸板的远程调试器时,可能没有任何“进程”的概念,并且通常无法获得核心转储。如果 GDB 无法附加或读取核心转储,它会警告您。
您可以选择让 gdb 使用 --args 将可执行文件之后的任何参数传递给下级。此选项停止选项处理。
gdb --args program -O2 -c foo.c
这将导致 gdb 调试 program ,并将 program 的命令行参数(参见参数)设置为“-O2 -c foo.c”。
您可以通过指定 --silent(或 -q/–quiet)来运行 gdb,使他不打印前缀资料:
gdb --silent
看看区别:
您可以使用命令行选项进一步控制 GDB 的启动方式。 GDB 本身可以提醒您可用的选项。
类型
gdb -help
显示所有可用选项并简要描述它们的使用(可以简写为‘gdb -h’)。
您提供的所有选项和命令行参数都按顺序处理。使用“-x”选项时,顺序会有所不同。
quit [expression]
#or
exit [expression]
#or
q
要退出GDB,请使用quit命令(缩写为 q)、exit命令或键入文件结尾字符(通常为Ctrl-d)。如果不提供表达式, GDB将正常终止;否则它将使用表达式的结果作为错误代码终止。
中断(通常Ctrl-c)不会从 GDB退出,而是终止任何正在进行的GDB命令的操作并返回到GDB命令级别。任何时候键入中断字符都是安全的,因为GDB不允许它在安全的时候生效。
如果您一直在使用GDB来控制附加的进程或设备,则可以使用detach命令释放它(请参阅调试已运行的进程)。
如果您需要在调试会话期间执行偶尔的 shell 命令,则无需离开或暂停 GDB;你可以只使用shell命令。
shell command-string
#or
!command-string
调用标准 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
使用指定的参数执行 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
执行命令并将其输出发送到 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)
将GDB命令的输出保存到文件中。有几个命令可以控制GDB的日志记录。
set logging enabled [on|off]
启用或禁用日志记录。
set logging file file
更改当前日志文件的名称。默认日志文件是gdb.txt.
set logging overwrite [on|off]
默认情况下,GDB将追加到日志文件。overwrite如果要set logging enabled on改写日志文件, 请设置。
set logging redirect [on|off]
默认情况下,GDB输出将同时发送到终端和日志文件。redirect如果您希望输出仅发送到日志文件,请 设置。
set logging debugredirect [on|off]
默认情况下,GDB调试输出将同时发送到终端和日志文件。debugredirect如果您希望调试输出仅转到日志文件,请 设置。
show logging
显示日志记录设置的当前值。
您还可以将GDB命令的输出重定向到 shell 命令。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。