2013-07-24 65 views
0

我有一个描述位图的结构。它看起来像这样限制GDB输出长度

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

当这种结构的情况下被初始化pData指向成千上万的类似随机的,但不为零字节。当我打印结构的实例时,GDB显示了很多无意义的字节。这非常耗时。当这种变量的disp处于活动状态时,每个步骤的输出都会延迟调试。

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

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

+0

重复回答http://stackoverflow.com/questions/233328/怎么办,我打印最全价值OF- a-long-string-in-gdb –

+0

不是重复的,而是相关的。 – harper

回答

1

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

为了限制所需的命令

set print elements n 

其中n是元件的最大数目的长度。将n设置为0会提供无限的长度。

0

设置print elements 4会的pData字符数限制为4,但它会限制的所有其他字符串和数组,这可能是很烦人(如print filename会产生/tmp...当实际值是/tmp/foobar

一个可能更好的方法是编写struct bitmap一个Python漂亮的打印机(假设你有足够新GDB)。查看该怎么做this answer