GDB 打印大小不一致的大型静态数组

GDB printing inconsistent size with large static array

我发现 GDB (GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git) 打印了一个大的、静态分配的、固定的大小大小数组:

(gdb) p &buf
 = (char (*)[52428800000]) 0x15491f84e000 <buf>
(gdb) p sizeof(buf)
 = 889192448

我也在相应的 C++ 程序中尝试了 printf("%ld", sizeof(buf));,它按我的预期打印 52428800000

这种行为是预期的吗? GDB 正在打印的较小值是多少?

我在发帖后就弄明白了——问题似乎是 gdb 默认为 sizeof 的 int32 输出——printf("%d", sizeof(buf)) 打印 889192448。我会考虑提交错误报告。