Debugging 是否可以在程序中跟踪特定的数据?

Debugging 是否可以在程序中跟踪特定的数据?,debugging,testing,Debugging,Testing,我用于调试的几乎所有语言工具都支持断点和步进模式,因此我可以一次查看范围中的特定数据。但当我在程序中某些组件的神秘路径中丢失数据时,我仍然感到痛苦,特别是当它在一些具有多个入口和出口的组件中蒸发时 如果有一个工具可以“标记”一个数据并跟踪它,报告哪些函数(或其他基本计算单元)吞并并转换了它,那么痛苦可能会消失。这应该像一些医学测试,给病人喂一片辐射药片,医生可以在外面追踪它。我知道回溯几乎是我需要的,但在每帧之间追踪数据仍然是一种痛苦的方式 根据我(糟糕的)编程经验,最近的工具/语言是Haske

我用于调试的几乎所有语言工具都支持断点和步进模式,因此我可以一次查看范围中的特定数据。但当我在程序中某些组件的神秘路径中丢失数据时,我仍然感到痛苦,特别是当它在一些具有多个入口和出口的组件中蒸发时

如果有一个工具可以“标记”一个数据并跟踪它,报告哪些函数(或其他基本计算单元)吞并并转换了它,那么痛苦可能会消失。这应该像一些医学测试,给病人喂一片辐射药片,医生可以在外面追踪它。我知道回溯几乎是我需要的,但在每帧之间追踪数据仍然是一种痛苦的方式


根据我(糟糕的)编程经验,最近的工具/语言是Haskell中的箭头机制,它使用类型系统和组合来表示程序IPO路径的全貌。但它要求你的计划遵循它提倡的方式,我不知道这是否是实现这个想法的最佳方式。特别是,你不能像其他语言那样轻松地编程,比如C、C++、露比、java和javascript。您可以尝试使用面向方面编程(AOP)来实现这一点,但我认为,找到对特定对象的所有访问(至少在Java中)并对其进行检测几乎是不可能的

你能得到的最接近的可能是所谓的,据我所知,它还没有在任何地方实现


您最好的选择是在数据所在的特定地址范围上设置一个带有触发器的调试器断点(您需要首先找出该地址范围)。

谢谢您的回答。AOP似乎是跟踪某些导入数据的一种可接受的方法。