对于多线程应用程序的调试 ,各开发工具都有良好的支持,使用广泛的为windows下VS及unix下的GDB。
MS对VS调试多线程程序给出了详细的帮助手册,可以在MSDN中搜索:SetThreadName(设置线程名称)中找到相关顶级主题:调试多线程应用程序
MSDN中的地址:ms-help://MS.MSDNQTR.v90.chs/dv_vsdebug/html/9d175bc2-1d95-4c47-9bc3-9755af968a9c.htm
以下文字摘自MSDN:
线程是操作系统向其分配处理器时间的指令序列。在操作系统中运行的每个进程都包含至少一个线程。包含多个线程的进程称为多线程。
具有多个处理器、多核处理器或超线程进程的计算机可以同时运行多个线程。并行处理多个线程可以极大地提高程序性能,但是,由于需要跟踪多个线程,也使得调试更加困难。
此外,多线程处理会引入某些新类型的潜在 bug。例如,通常会有两个或更多线程必须访问同一资源,但是一次只能有一个线程可以安全地访问该资源。必须使用某种形式的互斥以确保一次仅有一个线程访问资源。如果互斥执行不正确,则可能形成死锁条件,这种条件下,任何线程都无法执行。对于调试而言,死锁是特别难解决的问题。
Visual Studio 2008 提供了改进的“线程”窗口及其他用户界面改进,旨在简化多线程调试。若要了解新的线程处理界面功能,最佳方式就是执行演练。请参见演练:调试多线程应用程序。
Visual Studio 还提供功能强大的断点和跟踪点,在调试多线程应用程序时,它们十分有用。可以使用断点筛选器将断点置于单个线程上。请参见 如何:指定断点筛选器
调试具有用户界面的多线程应用程序可能会特别困难。在这种情况下,可以考虑在另一台机器上运行应用程序并使用远程调试。有关信息,请参见安装远程调试。
本节内容
通过“线程”窗口调试线程的实用过程。
将调试上下文切换到其他线程的三种方法。
在调试过程中,标记要格外关注的线程,或为其设置标志。
为在“线程”窗口中查看的线程提供一个名称。
为在“线程”窗口中查看的线程提供一个名称。
一部关于线程调试功能的指导教程,重点介绍如何使用 Visual Studio 2008 的功能。
对运行于高性能群集上的应用程序进行调试的技术。
对于调试本机线程十分有用的简单技术。
相关章节
如果要将一个断点置于单个线程上,可以使用断点筛选器。
使用跟踪点可以在不中断的情况下跟踪程序的执行。对于研究死锁之类的问题,这一点十分有用。
托管线程处理
.NET Framework 编程中的线程处理概念,包括示例代码。
组件中的多线程处理
如何在 .NET Framework 组件中使用多线程处理。
多线程处理 (Visual Basic)
针对 Visual Basic 程序员的线程处理概念和示例代码。
使用线程处理(C# 编程指南)
针对 C# 程序员的线程处理概念和示例代码。
多线程处理
针对使用 MFC 的 C++ 程序员的线程处理概念和示例代码。
有关如何为运行于高性能群集上的应用程序设置远程调试的说明。