我在 GDB 调试会话中,我有一个长度为 20,000 的数组。大多数元素都是零,但在 index 附近有几个10000
是有趣的。不幸的是,当我说p the_array[10000]@30
或者我得到“只有内存中的值可以用'@'扩展”时。如何可视化该数组的一个区域,而无需手动请求 40-50 个元素范围内的每个索引?
问问题
7989 次
2 回答
22
我希望这能奏效。它确实对我有用。我有这个小程序:
int x[10000];
现在在 gdb 中:
(gdb) p x[50]@3
$2 = {0, 0, 0}
您的问题缺少许多细节。也许你的 gdb 有一个错误。或者也许你的数组在某些方面很奇怪。gdb 版本和诸如“whatis the_array”之类的东西可能很有趣。
于 2013-06-20T13:11:48.183 回答
4
看起来我们不能使用地址来扩展内存区域
(gdb) p (struct tfc *)0x1d88a010@100
Only values in memory can be extended with '@'.
但这很好用
(gdb) p *tfc->buckets@100
$87 = {0x0 <repeats 49 times>, 0x7f3b63a1b060, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f3b21816c90, 0x0 <repeats 18 times>, 0x7f3ae97f9e80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f3b49c96760, 0x0 <repeats 14 times>, 0x7f3adb16d8f0}
于 2019-07-03T23:06:05.857 回答