当前位置:  开发笔记 > 开发工具 > 正文

Visual Studio .NET调试器的"隐藏的秘密"?

如何解决《VisualStudio.NET调试器的"隐藏的秘密"?》经验,为你挑选了11个好方法。

尽管我一般不喜欢关于SO的讨论/主观帖子,但我真的很欣赏人们放在一起的"隐藏的秘密"帖子.它们提供了一些您可能现在可能发现的常见错过的工具的概述.

对于这个问题,我想探索Visual Studio .NET调试器.你经常使用或最近发现的VS.NET调试器中有哪些"隐藏的秘密",希望你早就知道?



1> Jeff Hillman..:

我最喜欢的功能之一是断点时可用的"When Hit ..."选项.您可以使用变量的值以及许多其他信息打印消息,例如:

$ADDRESS - 现行指示

$CALLER - 上一个功能名称

$CALLSTACK - 调用堆栈

$FUNCTION - 当前功能名称

$PID - 进程ID

$PNAME - 流程名称

$TID - 线程ID

$TNAME - 线程名称

你也可以让它运行一个宏,但我从来没有使用过这个功能.



2> Luke Quinane..:

对于.net应用程序System.Diagnostics有很多有用的调试事项.该Debugger例如类:

Debugger.Break(); // Programmatically set a break point
Debugger.Launch(); // Launch the debugger if not already attached
Debugger.IsAttached // Check if the debugger is attached

System.Diagnostics也有很多好的属性.我使用的两个是调试器显示属性,用于更改放入本地窗口的详细信息,以及用于跳过不关心调试的代码的逐步属性:

// Displays the value of Property1 for any "MyClass" instance in the debugger
[DebuggerDisplay("{Property1}")]
public class MyClass {
    public string Property1 { get; set; }

    [DebuggerStepThrough]
    public void DontStepInto() {
       // An action we don't want to debug
    }
}



3> SLaks..:

您可以在"监视"窗口中右键单击对象,然后单击"创建对象ID".

它将为该实例分配一个ID号,允许您在复杂的对象图中查看哪些对象引用同一个实例.


最重要的是,它会显示对象*的内容,即使它不在当前的调用堆栈*中.您必须在监视窗口底部的空行中键入ID(例如"1#").

4> Dan Herbert..:

作为一名Web开发人员,他使用与我的前端代码在同一解决方案中的Web服务大多数时间,我发现能够"附加"到一个进程是一个巨大的节省时间.

在我找到这个隐藏的gem之前,我总是要在一些调用Web服务方法的前端代码上设置一个断点并进入它.现在,我知道这个技巧/功能,我可以轻松地在我想要的代码的任何部分设置断点,这节省了我的时间和精力.


@ j0rd4n:如果你可以添加一个MessageBox,这意味着你可以添加代码,这意味着你也可以使用`Debugger.Break()`以编程方式设置断点.

5> Eric Schoono..:

$exception在监视窗口中,即使您没有将Exception实例分配给命名变量的catch,也会显示当前正在处理的异常.


无需将其放入手表中,它将自动显示为本地窗口中的第一个项目.

6> Andomar..:

线程窗口,来自Debug - > Windows - > Threads.您可以冻结和解冻线程,并切换活动线程.在使用多线程应用程序调试或复制问题时,这非常棒.

您可以将黄色"Next Statement"箭头拖放到另一个位置.程序恢复后,将在该语句中恢复执行.您可以将它添加到工具栏,一个名为Set Next Statement的蓝色箭头,但默认情况下不存在.

您可以"撤消"您所做的导航,例如滚动,转到另一个文件或跳转到参考.快捷方式是ctrl--(控制减去.)这样你可以跳转到一个函数,检查那里的代码,然后回到你原来的地方而不看.



7> Alexander Ko..:

条件断点.



8> 1800 INFORMA..:

您可以将windbg扩展加载到Visual Studio调试器中,并从即时窗口中使用它们.



9> Aaron Powell..:

正如在另一篇文章中发表的那样,Sara Ford正在对VS调试器进行一系列演讲.

她的博客是VS技巧的最佳来源:http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx



10> 1800 INFORMA..:

这有点旧.如果添加一个监视表达式err,hr,那么它将保存GetLastError()的结果,格式为HRESULT(仅限VC++调试器).



11> bushed..:

执行暂停时,可以在代码中上下拖动当前行光标(黄色箭头).

此外,为了在异常暂停期间启用此功能,您必须先在异常详细信息上单击"启用编辑".

您还可以通过在以下位置检查感兴趣的内容来使VS处理已处理的异常:Debug-> Exceptions:Thrown column

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有