限制GDB输出长度

时间:2013-07-24 14:51:24

标签: gdb

我有一个描述位图的结构。看起来像这样

struct bitmap {
    int XSize;
    int YSize;
    unsigned char *pData;
};

当初始化此结构的实例时,pData指向数千个随机类但非零字节。当我打印结构的实例时,GDB显示了很多无意义的字节。这非常耗时。当这样一个变量的disp处于活动状态时,我会得到每个步骤的输出,这会延迟调试。

是否有限制输出长度的GDB选项?

当字节无意义时,我可以将pData的类型更改为void *。但由于该结构用于预编译库,因此无法更改类型。 GDB用于printdisp的类型可以被“覆盖”吗?

2 个答案:

答案 0 :(得分:1)

正如保罗指出this question中的答案给出了允许无限长度的正确命令。

要限制长度,您需要命令

set print elements n

其中n是元素的最大数量。将n设置为0可得到无限长度。

答案 1 :(得分:0)

设置print elements 4会将pData个字符的数量限制为4,但会限制所有其他字符串和数组,这可能非常烦人(例如{{当实际值为print filename时,1}}会产生/tmp...

一种可能更好的方法是为/tmp/foobar编写一个Python漂亮的打印机(假设你有最新的GDB)。有关如何执行此操作,请参阅this answer