您可以以编程方式添加break(Debugger.Break()),并且我会在某些地方执行此操作,这意味着出现了问题(而不是抛出异常,或者除了抛出异常)。
在某些情况下,我想以编程方式为某些变量添加监视。这可以以某种方式完成吗?目前我能想到的最好的是
object foo = someObjectIWantToWatch;
这样,我至少可以在代码中引用我想要观察的对象,因此我可以将鼠标悬停在该对象上以查看其内容。但这显然是一个黑客,我希望找到一个更好的方法。
编辑问题:
我有一个很大的应用程序,异步线程由各种系统事件驱动,但是当出现问题时,你想要浏览整个应用程序中的所有数据结构,寻找任何出错的线索。因此,在顶层,从(Main())启动的应用程序创建了一个对象,该对象将包含其他所有其他层次结构,并且Main()进入无限循环。
while (true)
{
Thread.Sleep(100);
}
因此,如果应用程序因某种原因开始行为不端,您可以在那里设置一个断点,瞧。您可以浏览整个应用程序中的所有数据结构。但前提是您有对顶级容器对象的引用。您可以将鼠标悬停在对象上并以此方式浏览 - 但将对象显示在Autos或Watch中会更方便。所以我想做一些像
这样的事情Debugger.Watch(theTopLevelObject);
是的我可以浏览并找到顶级对象,然后右键单击它,然后添加监视。但实际的声明不在附近,当你真正 on 断点时很难找到。
答案 0 :(得分:0)
我知道这不是您问题的答案,但我想指出您可以执行Debug.WriteLine(someObjectIWantToWatch),然后在“输出”标签中查看该值是什么。此外,可以使用DebugView之类的工具来监视Debug.WriteLine输出,而不必在调试器中。
Visual Studio Debugger Extensibility API或Visual Studio SDK中可能有一个用于添加Watch变量的API,但我没有看到。