使用gdb时,如何在Pascal中打印数组中的一部分值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用gdb时,如何在Pascal中打印数组中的一部分值相关的知识,希望对你有一定的参考价值。
我们知道,在C语言中,如果有一个数组
int data[100];
然后,在gdb中,我们可以通过键入以下内容将数据[4]打印到数据[14]:
print *(data+4)@11
所以,问题是:当我们用Pascal语言编程时,我们可能有一个数组:
var
data: array[0..100] of Integer;
当我们在gdb中调试它时,我们如何将数据[4]中的值打印到数据[14]?
非常感谢你。
答案
当gdb的语言设置为Pascal时,没有办法做到这一点 - 没有人在Pascal表达式解析器中实现过这个扩展。
一种解决方法是打印数组的地址,然后暂时将语言切换为C和print *(type *)addr @ ...
。
另一种解决方法是编写一个新的gdb命令(使用CLI或使用Python)来执行您喜欢的操作。或者,如果你正在进行大量的Pascal调试,你可以在gdb中实现这个扩展 - 这并不难。
以上是关于使用gdb时,如何在Pascal中打印数组中的一部分值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 gdb 为 Fortran 程序打印数组大小(绑定)