c# - 如何在 C# 中跟踪运行时的变量?

标签 c# variables trace

如何在 C# 中跟踪变量值在运行时的变化?当我通过执行步骤跟踪变量时,我对调试器提供的相同功能感兴趣,只是我需要从我的代码中调用它。某种键值观察,但对于各种变量(本地、类、静态等),不仅是属性。因此,基本上,当变量的值发生变化时会收到通知。

最佳答案

您假设调试器可以跟踪变量变化。不能。

非托管代码是可能的,处理器有专用的调试寄存器,允许设置数据断点。最多提供三个。当它看到一个特定的内存位置被写入时,它会产生一个硬件中断。然而,这个非常有用的功能在托管代码中不可用。垃圾收集器与它完全不兼容,它移动对象,给它们另一个地址。

托管调试器确实支持断点上的“命中时”条件,允许您将信息转储到输出窗口。然而,这需要一个断点,它不能由变量值的变化触发。它还确实减慢了代码执行速度,因为调试器实际上在执行条件之前进入了中断状态。

放置此类断点的明显位置是在属性 setter 中。这就是您在代码中实现此功能所需要的。您可以在该 setter 中做任何您想做的事情,例如使用 Trace 类。

关于c# - 如何在 C# 中跟踪运行时的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912183/

相关文章:

c# - Dictionary<string, string> 枚举器停止在 Unity3D 中的某些 Android 设备上提供中间应用程序接口(interface)

function - F# 函数不允许我改变可变值

c++ - C++中对象和变量的区别

C# - 将变量编译为名称/代码

javascript - 追踪从哪里发出警报?

c++ - 调试/跟踪嵌入式 sql

c# - SyncRoot 对象真的是线程安全的吗?

c# - INotifyPropertyChanged - 更改 PropertyName 没有效果

c# - C# 中的 eBay API GetSellerList 调用返回错误 14005 'Web Service framework internal error. execute exception.'

apache-flex - 闪存/弹性应用程序 : how can i strip trace messages?