以下面代码,来说明一下,打印函数局部变量的操作,代码如下:
#include <stdio.h>
void fun1(void)
{
int data1 = 0;
printf("data1: %d\n", data1);
}
void fun2(void)
{
int data2 = 1;
fun1();
printf("***data2: %d\n", data2);
}
int main(void)
{
int data3 = 3;
printf("***data3: %d\n", data3);
fun2();
return 0;
}
1. 打印各个函数中局部变量
在 gdb 调试中,打印各个函数的局部变量,命令为(其中, b 为 backtrace 缩写):
bt full
下面进行 gdb 调试。首先,在 fun1() 函数中打断点,程序运行后会在 fun1() 函数中停下来。下来操作如下:
可以看到,输入 " bt full " 命令后,显示了各个函数中的局部变量的值。
在 gdb 调试中,也可以从内向外显示 n 个栈桢,及其局部变量。命令如下:
bt full n
或者 从外向内打印 n 个栈桢,及其局部变量。命令为: b full -n 命令。
操作如下:
2. 打印当前函数的局部变量
在 gdb 调试中,有时候需要打印当前函数的局部变量的值。命令如下:
(gdb) info locals
上面打印当前函数变量的前提是,当前 gdb 调试正处于当前函数中。