【问题标题】:How to visualize the value of a pointer while debugging in Delphi?在 Delphi 中调试时如何可视化指针的值?
【发布时间】:2013-01-08 16:47:49
【问题描述】:

所以,我有一个变量 buffPtr:TPointer 它的大小为 16,包含一系列数字,大部分以 0 开头,例如 013854351387365。 我确定它包含值,因为应用程序可以正常工作。

我想在调试时看到这个值。

如果我将“PAnsiChar(buffPtr)^”添加到手表中,我只会看到第一个字节。

【问题讨论】:

  • 你试过把 PAnsiChar(BufPtr) (不带 ^)吗?

标签: delphi delphi-7


【解决方案1】:

如果您想要序数/字节值,只需输入监视表达式PAnsiChar(buffPtr)^,16PByte(buffPtr)^,16

这里的技巧是在逗号后添加模式重复的数量,例如,16

恕我直言,这比更改 Watch Properties 更方便,并且可以与 IDE 的 F7 评估命令一起使用。

【讨论】:

    【解决方案2】:

    我添加了一块手表 PAnsiChar(buffPtr)^

    Watch 属性为

    重复次数 = 16 十进制

    【讨论】:

    • 我不明白问题或答案。你能详细说明一下吗?
    • 如果您还包含此配置的 输出 的图片,而不仅仅是对话框的输入,那就太好了。
    【解决方案3】:

    您是否设置了手表转储内存区域?对于一些有帮助的结构。

    如果你可以重新编译你的应用程序,那么定义这个:

    type
      T16Values = array[0..15] of Byte;
      P16Values = ^T16Values;
    

    然后将指针转换为P16Values,然后查看。

    如果是Byte以外的其他数据类型,则相应更改上述代码。

    【讨论】:

    • 恕我直言,你不需要那个,因为调试器直接处理自定义重复。
    • 有时在代码时这样做更方便,因为保存调试器设置需要您保存整个 .DSK,这通常会导致痛苦。
    • ... 或者只是将 ,16 添加到表达式中。无需更改设置。 ;)
    猜你喜欢
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多