print命令可以显示变量。简写为p
语法为:print 变量
从上面可以看出,argv[0]中为可执行文件名(“/home/oceanstar/CLionProjects/debug_learning/debug/debug_learning”),argv[1]为“-a”
例子
查看同名局部变量和全局变量的值
我们知道通过p a
可以打印出变量a的值,但是如果局部变量和全局变量重名的情况下,打印出来的往往是局部变量的值,那么如何打印全局变量的值呢?
可以通过::
操作符解决
文件名::变量名
函数名::变量名
int a = 1;
int main()
{
int a = 2;
return 0;
}
直接打印变量a的值,得到局部变量的值2
等价于
打印全局变量的值
查看数组的值
int main()
{
int arr1[] = {5, 6, 7};
int* arr2 = malloc(sizeof(int) * 3);
*arr2 = 9;
*(arr2 + 1) = 8;
*(arr2 + 2) = 7;
return 0;
}
其中arr1是用经典的语法直接定义出来的,arr2就比较特殊,它被定义成一个指向int类型的指针。
对于arr1,我们可以直接使用p arr1查看数组中元素的值
对于arr2,我们如果直接p arr2,查看到的其实是arr2指向的地址
如果要查看arr2中元素的值,请使用如下语法
p *array@len
在linux下的GDB环境中,用p 命令查看一个void *型的变量的时候,提示为: "attempt to dereference a generic a pointer "
这里主要是指针类型不确定,强制转换指针类型后,可以使用转换后的指针类型打印元素。
打印结构体
set print pretty on