为什么调试器必须停止执行代码才能显示变量值?
显然,这可以通过明确的方式完成,例如label.text = var.tostring()。
我可以通过获取变量地址并将CheatEngine等内存扫描程序附加到我的进程来执行此操作,以便在执行期间查看变量值。
因为看起来VS调试器是健壮的,因为它没有为我提供此选项,因为在执行期间会阻止内存窗口。
我很可能不理解一些调试范例。
答案 0 :(得分:1)
VS调试器实际上是CLR调试器(ICorDebug
)上的一个薄层,它要求停止执行给定的线程,以便检查本地,堆栈帧,make方法调用等值。 ..
如果选择,确定VS可以随时允许内存扫描,因为读取内存并不需要任何类型的基础设施。但它对用户来说不太可能非常有用,因为他们实际上没有办法将他们想要检查的值(本地和这个)映射到给定的内存地址。即使他们这样做,这些信息仅在下一次GC调用之前或直到弹出当前堆栈帧时才相关。这将是一个相当混乱的经历