1

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

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

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

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

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

4

2 回答 2

1

正如保罗所指出的,这个问题的答案给出了允许无限长度的正确命令。

要限制您需要命令的长度

set print elements n

其中 n 是最大元素数。将 n 设置为 0 给出了无限的长度。

于 2013-07-24T17:57:06.047 回答
0

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

一个可能更好的方法是为struct bitmap(假设你有足够新的 GDB)编写一个 Python 漂亮的打印机。请参阅此答案以了解如何执行此操作。

于 2013-07-25T04:56:25.163 回答