限制GDB输出长度

限制GDB输出长度,gdb,Gdb,我有一个描述位图的结构。看起来像这样 struct bitmap { int XSize; int YSize; unsigned char *pData; }; 当初始化此结构的实例时,pData指向数千个随机但非零字节。当我打印结构的实例时,GDB显示了很多无意义的字节。这非常耗时。当这样一个变量的disp激活时,我会得到每一步的输出,这会延迟调试 是否有限制输出长度的GDB选项 当字节没有意义时,我可以将pData的类型更改为void*。但由于该结构用于预编译库中

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

struct bitmap {
    int XSize;
    int YSize;
    unsigned char *pData;
};
当初始化此结构的实例时,pData指向数千个随机但非零字节。当我打印结构的实例时,GDB显示了很多无意义的字节。这非常耗时。当这样一个变量的
disp
激活时,我会得到每一步的输出,这会延迟调试

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


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

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

要限制长度,需要使用命令

set print elements n

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

设置
打印元素4
会将
pData
字符数限制为4,但也会限制所有其他字符串和数组,这可能会非常烦人(例如,
打印文件名
将在实际值为
/tmp/foobar
时生成
/tmp…


一种可能更好的方法是为
struct bitmap
(假设您有足够多的最新GDB)编写一个Python漂亮的打印机。请参阅如何做到这一点。

复制答案不是真正的重复,而是相关的。