使用gdb时,如何在Pascal中打印数组中的一部分值

问题描述 投票:2回答:1

我们知道,在C语言中,如果有一个数组

int data[100];

然后,在gdb中,我们可以通过键入以下内容将数据[4]打印到数据[14]:

print *(data+4)@11

所以,问题是:当我们用Pascal语言编程时,我们可能有一个数组:

var
   data: array[0..100] of Integer;

当我们在gdb中调试它时,我们如何将数据[4]中的值打印到数据[14]?

非常感谢你。

arrays debugging gdb pascal
1个回答
0
投票

当gdb的语言设置为Pascal时,没有办法做到这一点 - 没有人在Pascal表达式解析器中实现过这个扩展。

一种解决方法是打印数组的地址,然后暂时将语言切换为C和print *(type *)addr @ ...

另一种解决方法是编写一个新的gdb命令(使用CLI或使用Python)来执行您喜欢的操作。或者,如果你正在进行大量的Pascal调试,你可以在gdb中实现这个扩展 - 这并不难。

© www.soinside.com 2019 - 2024. All rights reserved.