大多数的应用程序都使用多线程技术。对应Windows应用程序,为了能够使用户界面保持快速响应,经常需要把费时的任务放在与主应用程序独立的线程上运行。此时,多个线程的并发执行调试变得很困难,特别是在多个线程访问同一个类和方法时。Threads能够帮助我们减轻复杂度。

打开窗口

一般来说当程序遇到断点进入调试模式,会自动打开Threads窗口,如果没有,我们可以通过下面的方式打开:

  • 通过菜单栏打开
    Visual Studio调试器指南---Threads窗口
  • 通过快捷键
    Ctrl+Alt+H

窗口的使用

Visual Studio调试器指南---Threads窗口

如果显示所有列,显示以下各列,从左到右:

  • 有关如何标记一个线程的信息,请参阅如何:标记线程和取消标记线程。

  • 概述箭头指示非当前线程的当前调试器上下文。

  • ID:显示每个线程的标识号。

  • 托管 ID:显示托管线程的托管的标识号。

  • 一个特殊类别标识应用程序的主线程。

  • 名称:如果有的话,或按名称标识每个线程<无名称 >。

  • 可以展开此位置以显示线程的完整调用堆栈。

  • 优先级:(默认情况下隐藏) 的高级的列,显示系统已分配给每个线程的优先级。

  • 在多处理器系统中,关联掩码确定线程可以在哪些处理器上运行。

  • 此计数确定线程是否可以运行。 

  • 在调试多个进程时,此列中的数据很有用。

  • 进程 ID:(默认情况下隐藏) 的高级的列,显示每个线程所属的进程 ID。

  • 传输限定符:高级的列 (默认情况下隐藏) 唯一标识调试器连接到的计算机。

然后,选中或清除要显示或隐藏的列的名称。

在“线程”窗口中,可以选择显示所有线程或仅显示标记的线程 。

当本机代码中冻结线程时,其挂起项计数为 0,除非使用SuspendThread调用。

 

带有卷尾的绿色箭头指示非当前线程具有当前的调试器上下文。

Visual Studio调试器指南---Threads窗口

请按照以下步骤之一操作:

  • 双击任一线程。

  • 右击一个线程,然后选择切换到线程

如果你想要隐藏组的成员线程,使用树控件折叠组。

因为分组优先于排序,所以您可以先按类别(以此为例)分组线程,再按每个类别中的 ID 对其进行排序。

  1. 在顶部的工具栏线程窗口中,选择任意列顶部的按钮。

    线程现在按该列中的值进行排序。

  2. 如果你想要反转排序顺序,请再次选择相同的按钮。

    在列表顶部显示的线程现在显示在底部。

分组线程

  • 在中线程窗口工具栏中,选择分组依据列表,然后选择要分组线程所依据的条件。

对组内线程排序

  1. 在顶部的工具栏线程窗口中,选择分组依据列表,然后选择要分组线程所依据的条件。

  2. 在中线程窗口中,选择任意列顶部的按钮。

    线程现在按该列中的值进行排序。

展开或折叠所有组

在顶部的工具栏线程窗口中,选择展开组折叠组

 

默认情况下,不搜索整个调用堆栈。

搜索特定线程

  1. 在“线程”窗口顶部的工具栏中,转到“搜索”框,执行下列操作之一 :


    - 或 -

    • 选择下拉列表旁边搜索框并选择上一次搜索的搜索字符串。


相关文章: