调试多线程应用程序

线程是操作系统向其分配处理器时间的指令序列。 在操作系统中运行的每个进程都包含至少一个线程。 包含多个线程的进程称为多线程。

具有多个处理器、多核处理器或超线程进程的计算机可以同时运行多个线程。 并行处理多个线程可以极大地提高程序性能,但是,由于需要跟踪多个线程,也使得调试更加困难。

此外,多线程处理会引入某些新类型的潜在 bug。 例如,通常会有两个或更多线程必须访问同一资源,但是一次只能有一个线程可以安全地访问该资源。 必须使用某种形式的互斥以确保一次仅有一个线程访问资源。 如果互斥执行不正确,则可能形成死锁条件,这种条件下,任何线程都无法执行。 对于调试而言,死锁是特别难解决的问题。

Visual Studio 2012 提供了改进的 线程 窗口中,新 GPU 线程窗口、新的并行 " 监视 " 窗口及其他用户界面改进简化多线程调试更加容易。 最好的方法了解新的线程处理界面功能是通过执行演练。 请参见演练:调试多线程应用程序演练:调试 C++ AMP 应用程序

Visual Studio 还提供功能强大的断点和跟踪点,非常有用,在调试多线程应用程序时。 可以使用断点筛选器将断点置于单个线程上。 请参见如何:指定断点筛选器

调试具有用户界面的多线程应用程序可能会特别困难。 在这种情况下,可以考虑在另一台机器上运行应用程序并使用远程调试。 有关信息,请参见安装远程调试

本节内容

相关章节

请参见

其他资源

使用线程和进程

安装远程调试