.NET的Visual Studio调试器提示和技巧
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我已经使用VS的调试器进行了多年的工作,但是时不时地遇到一个从未见过的功能,然后想:“该死!我怎么会错过呢?它是如此有用!” [免责声明:这些技巧可在VS 2005中用于C#项目,不能保证VS或其他语言的较早版本。] 跟踪对象实例 使用给定类的多个实例?你怎么区分他们?在垃圾收集前编程的日子里,跟踪引用很容易-只需查看内存地址即可。使用.NET,您无法做到这一点-对象可以随意移动。幸运的是,手表视图使您可以右键单击手表,然后选择“制作对象ID”。 手表查看http://img403.imageshack.us/img403/461/52518188cq3.jpg 这会在实例的值之后附加一个{1#},{2#}等,从而有效地为该实例提供了唯一的标签。看起来像这样: 编号实例http://img383.imageshack.us/img383/7351/11732685bl8.jpg 标签在该对象的生存期内一直存在。 监视变量的有意义的值 默认情况下,监视变量的值是它的类型。如果要查看其字段,则必须对其进行扩展,如果有很多字段或它们做了复杂的事情,这可能会花费很长时间(甚至是超时!)。 但是,某些预定义类型显示了更有意义的信息: 字符串显示其实际内容 列表和字典显示其元素数量等。 有意义的信息http://img205.imageshack.us/img205/4808/37220487md1.jpg 为我自己的类型拥有它不是很好吗? 嗯... ...使用.NET Reflector的一些优质时间表明DebuggerDisplay,使用我的自定义类型上的属性可以轻松完成此操作: [System.Diagnostics.DebuggerDisplay("Employee: '{Name}'")] public class Employee { public string Name { get { ... } } ... } ...重新运行,然后... da!http://img60.imageshack.us/img60/926/79816018ha1.jpg 这里有关于此主题的更多信息:MSDN 打破所有例外 ...甚至是用代码处理的!我知道,自从我出生以来就一直不知道这件事,我真是个n00b,但是无论如何,这还是有可能的-也许这有一天会帮助某个人: 您可以在每次引发异常时强制已调试的进程进入调试模式。曾经进行过数小时的错误查找,只是遇到了这样的一段代码吗? try { runStrangeContraption(); } catch(Exception ex) { …