Visual Studio开发工具----调试技巧-跟踪范围外的对象、管理异常等

3.3 跟踪范围外的对象(适用于C#、Visual Basic)

使用诸如“监视”窗口之类的调试器窗口可以轻松查看变量。但是,当变量在“监视”窗口中超出范围时,您可能会注意到它是灰色的。在某些应用程序场景中,即使变量超出范围,变量的值也可能会更改,您可能需要仔细观察(例如,变量可能会被垃圾回收)。您可以通过在“监视”窗口中为其创建对象ID来跟踪变量。
步骤如下:

  • 在要跟踪的变量附近设置一个断点。
  • 启动调试器(F5)并在断点处停止。
  • 在“本地”窗口中找到变量(“调试”>“ Windows”>“本地”),右键单击该变量,然后选择“创建对象ID”。

     Visual Studio开发工具----调试技巧-跟踪范围外的对象、管理异常等

  • 您会在“本地”窗口中看到一个$加一个数字。此变量是对象ID。
  • 右键单击对象ID变量,然后选择添加监视。

3.4 管理异常

异常表示在执行程序时发生错误状态。您可以告诉调试器要中断哪些异常或一组异常,以及在什么时候希望调试器中断(即在调试器中暂停)。当调试器中断时,它会向您显示引发异常的位置。您还可以添加或删除异常。在Visual Studio中打开解决方案后,使用“调试”>“Windows”>“异常设置”打开“异常设置”窗口。如下图:

Visual Studio开发工具----调试技巧-跟踪范围外的对象、管理异常等

3.5 调试死锁和竞争条件

       如果您需要调试多线程应用程序常见的问题,则通常有助于在调试时查看线程的位置。您可以使用在源代码中显示线程按钮轻松地完成此操作。
       在源代码中显示线程

  • 调试时,单击“ 调试”工具栏中的“ 在源中显示线程”按钮。在源代码中显示线程。
  • 查看窗口左侧的装订线。在此行上,您看到一个类似于两个布料线程的线程标记图标  螺纹标记。线程标记指示线程在此位置停止。请注意,断点可能会部分隐藏线程标记。
  • 将指针悬停在线程标记上。出现数据提示。DataTip会告诉您每个已停止线程的名称和线程ID号。您还可以在“ 并行堆栈”窗口中查看线程的位置。

3.6 检查Web服务和网络资源(UWP)的有效负载

在UWP应用中,您可以分析使用Windows.Web.HttpAPI执行的网络操作。您可以使用此工具来帮助调试Web服务和网络资源。要使用该工具,请选择Debug> Performance Profiler。选择“ 网络”,然后选择“ 开始”。在您的应用中,浏览使用的场景,Windows.Web.Http然后选择“ 停止收集”以生成报告。
 Visual Studio开发工具----调试技巧-跟踪范围外的对象、管理异常等
在摘要视图中选择一个操作以查看更多详细信息。

Visual Studio开发工具----调试技巧-跟踪范围外的对象、管理异常等

3.7 了解试器如何附加到您的应用程序

调试器要附加到正在运行的应用程序,需要加载与应用程序版本完成相同的符号(.pdb)文件。您可以使用“Modules”窗口检查Visual Studio如何加载符号文件。
调试时通过选择“调试”>“Windows”>“模块”,打开“模块”窗口。“模块”窗口可以告诉您调试器将哪些模块视为用户代码或“ 我的代码”,以及该模块的符号加载状态。在大多数情况下,调试器会自动查找用户代码的符号文件,但是如果您要进入(或调试).NET Framework代码,系统代码或第三方库代码,则需要采取额外的步骤来获取正确的符号文件。
 Visual Studio开发工具----调试技巧-跟踪范围外的对象、管理异常等
您可以通过右键单击并选择“加载符号”,直接从“模块”窗口中加载符号信息。
有时,应用程序开发人员在交付应用程序时没有匹配的符号文件(以减少占用空间),但保留了匹配的符号文件的副本用于构建,以便他们以后可以调试发行的版本。