生成C ++进程的线程转储

问题描述 投票:2回答:2

我想调试并识别C ++进程中一个/某些线程中的内存泄漏。一旦内存使用率很高,我想获取该进程的线程转储。

我知道对于Java以下命令有效,'ki​​ll -3'[linux]或'sendsignal.exe'(http://www.latenighthacking.com/projects/2003/sendSignal/

有什么方法可以在Windows上为C ++进程获取线程转储。

此线程可以关联:How to programmatically cause a core dump in C/C++

谢谢。

c++ multithreading debugging memory-management memory-leaks
2个回答
5
投票

最小转储,而不是“线程转储”。它内置于适用于Vista和Win7的Taskmgr.exe中。在“进程”选项卡的“创建转储文件”中右键单击该进程。所有不同的方式都是listed here


1
投票

您还可以使用SysInternals中的procdump,基于性能计数器(句柄计数,内存消耗)自动生成内存转储(小型转储:http://technet.microsoft.com/en-us/sysinternals/dd996900

然后您可以在WinDbg中(或现在可以加载内存转储的VS2010中,加载并分析生成的文件)

© www.soinside.com 2019 - 2024. All rights reserved.