使用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 程序打印数组大小(绑定)

Fortran在gdb中打印可分配数组

使 GDB 在调用函数时打印控制流

有没有一种方法可以在100到1000个索引的范围内打印长数组到GDB中的txt文件? (调试Fortran代码)

如何打印完整的字符数组gdb

打印杨辉三角形(Pascal's triangle)——利用队列