在 Visual Studio 中调试多线程应用程序

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

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

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

用于调试多线程应用的工具

Visual Studio 提供不同的工具用于调试多线程应用程序。

Visual Studio 还提供了功能强大的断点和跟踪点,在调试多线程应用程序时,它们十分有用。 使用断点条件和筛选器可将断点置于单个线程上。 使用跟踪点可以在不中断的情况下跟踪程序的执行,以研究诸如死锁之类的问题。 有关详细信息,请参阅断点操作和跟踪点

调试具有用户界面的多线程应用程序可能会特别困难。 可以考虑在另一台计算机上运行应用程序并使用远程调试。 有关详细信息,请参阅远程调试

有关调试多线程应用的文章