调试多线程应用程序

对于多线程应用程序的调试 ,各开发工具都有良好的支持,使用广泛的为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++ 程序员的线程处理概念和示例代码。

如何:调试远程群集应用程序

有关如何为运行于高性能群集上的应用程序设置远程调试的说明。

“折叠”图像请参见

概念

使用线程和进程

安装远程调试

More:http://blog.donews.com/me1105/archive/2011/02/09/113.aspx

原文地址:https://www.cnblogs.com/me115/p/1950104.html