Debugging 为什么只将断点绑定到行,而不是某个状态集?

Debugging 为什么只将断点绑定到行,而不是某个状态集?,debugging,ide,process,state,breakpoints,Debugging,Ide,Process,State,Breakpoints,为什么断点总是绑定到行,并且可以选择绑定到状态?为什么我们不能让断点只绑定到状态或状态更改,而不绑定到行?这与整个类上的断点有什么关系 我们通常可以在任意点暂停执行——为什么我们不能在执行点所在的某个特定状态被命中时暂停IDE的执行?我们将如何实施这些中断?(我假设在状态更改触发暂停时,正在调试的代码可能已经继续) 我最近开始思考这个问题,当时我想知道在访问某个文件时是否有一种暂停执行的方法,还想知道我的调试过程如何经常分为两个部分:目标断点和基于代码行为预感的全局搜索 尽职调查:至少相关职位

为什么断点总是绑定到行,并且可以选择绑定到状态?为什么我们不能让断点只绑定到状态或状态更改,而不绑定到行?这与整个类上的断点有什么关系

我们通常可以在任意点暂停执行——为什么我们不能在执行点所在的某个特定状态被命中时暂停IDE的执行?我们将如何实施这些中断?(我假设在状态更改触发暂停时,正在调试的代码可能已经继续)

我最近开始思考这个问题,当时我想知道在访问某个文件时是否有一种暂停执行的方法,还想知道我的调试过程如何经常分为两个部分:目标断点和基于代码行为预感的全局搜索

尽职调查:至少相关职位


<我的特定的直接兴趣发生在VisualStudio的C语言上——在Mark Wilkins下面的链接中,我设法在VisualStudio中跟踪“数据断点”设置,而在调试C++本地代码时只启用了.< /P> < P>可以设置断点,以便在地址值改变时停止在调试器中(数据断点)。我相信在GDB中它被称为a。在Visual Studio中,您也可以设置一个数据断点(菜单Debug\new breakpoint)。

VS经常请求“数据断点”,但似乎没有足够高的优先级在CLR中实现。也许可以在这里投票:


非常好的链接,谢谢--“gdb通过单步执行您的程序并每次测试变量的值来执行软件监视指针,这比正常执行速度慢数百倍。(但这可能仍然值得,在您不知道程序的哪个部分是罪魁祸首的情况下捕获错误)。”同样地,我想您可以单步检查是否有一些标志被提升,并为外部代码提供设置这些标志的机制?我还没有使用GDB来处理速度问题(我大部分时间都在Windows上,大部分时间都在使用Visual Studio).但我同意,如果缓慢可以帮助发现一些模糊的问题,那么它是值得的。困难的部分是当它是一个并发/计时问题,并且添加的断点会导致足够多的更改,从而使问题不会发生。投票已结束,但包括提示--“托管数据断点是我们长期以来一直想要的东西。CLR中缺少一个关键的基础结构,我们无法实现这一点……同时,大多数人的解决方法是使用属性访问其字段,然后在属性的setter中设置断点。”