linux gdb的详细用法 打印 (二)

本次讲解一下在gdb中如何使用打印的功能

#include <stdio.h>


int func()
{
    int p = 0;
    int q = 0;

    for(p = 0; p < 5; p++)
    {
        q++;
        printf("p = %d\n", p);
        printf("q = %d\n", q);
    }
    return 0;
}

int main()
{
    int i = 1;
    i = i + 1;
    printf("func= %s, line= %d, i= %d\n", __func__, __LINE__, i);
    func();
    i++;
    printf("func= %s, line= %d, i= %d\n", __func__, __LINE__, i);
    return 0;
}

1 打印命令 print 简写p

在for循环内第12行设置一个断点

运行效果:


使用p命令打印变量q的值


可以看到q的值为1。

常用的输出格式有以下几种:

x: 十六进制格式

d:有符号的十进制整数格式

u:无符号的十进制整数格式

o:八进制整数格式

t:二进制整数格式

c:字符格式

f:浮点数格式

例如:打印出十六进制格式

P/x 变量

 

2 打印命令display

(1)display 命令也用于打印变量的值

display 变量

display 命令和 print 命令的区别是,使用display会在程序每次运行到此断点后都会打印出变量的值。

例如在程序的第12号打断点,运行到断点处,用display打印p q 的值


可以看到输入displayp后,会打印出p的值,冒号前面为序号。在使display使能或不使能的时候会用到。

使用c命令使程序继续运行后,又运行到断点去,此时的现象为:


可以看到p 和 q的值被自动的打印出来。

(2)使用disable 使display命令暂时失效

     格式: disable display 序号

     例如,使序号1暂时取消打印,也就是不打印p的值,可以看到继续运行后只打印了序号2中的q的值。

     

(3)使用enable 使失效的display 重新使能

     格式:enable display 序号

(4)使用delete删除指定的显示数据的序号

     格式delete display 序号

     例如删除序号为2的打印,也就是不打印q的值

    

    undisplay命令与delete命令功能相同

(5)使用info命令查看display相关的信息

     格式:info display

    

 可以看到序号2已经不存在了,因为之前我们用delete命令删除了。

 现在可以看到序号1,为不使能状态,打印的为变量p的值。

3 用whatis命令查看变量或表达式的数据类型

  格式:whatis 变量或表达式



发布了35 篇原创文章 · 获赞 18 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Z_Dream_ST/article/details/77870575