在调试程序时,当程序被停住时,可以使用 print 命令(简写命令为 p),或是同义命令 inspect 来查看当前程序的运行数据。print 命令的格式是:
print <expr>
print /<f> <expr>
<expr>是表达式,是所调试的程序的语言的表达式(GDB 可以调试多种编程语言),<f>是输出的格式,比如,如果要把表达式按 16 进制的格式输出,那么就是/x。
1 表达式
print 和许多 GDB 的命令一样,可以接受一个表达式,GDB 会根据当前的程序运行的数据来计算这个表达式,既然是表达式,那么就可以是当前程序运行中的 const 常量、变量、函数等内容。可惜的是 GDB 不能使用程序中所定义的宏。
表达式的语法应该是当前所调试的语言的语法,由于 C/C++是一种大众型的语言,所以,本文中的例子都是关于 C/C++的。
在表达式中,有几种 GDB 所支持的操作符,它们可以用在任何一种语言中。
@
是一个和数组有关的操作符,在后面会有更详细的说明。
::
指定一个在文件或是一个函数中的变量。
{<type>} <addr>
表示一