堆>某个限制时的条件断点

问题描述 投票:0回答:3

当附加进程分配的内存大于某个值时,是否可以中断调试器?

最好使用 Visual Studio 2005,但也可以选择其他 IDE/调试器。

visual-studio-2005 memory-leaks debugging
3个回答
2
投票

没有直接的方法可以做到这一点。另一种方法是在 CRT 分配代码中的某处设置普通断点,并在命中计数是 2000 的倍数时将其设置为中断。您将足够快地达到所需状态。


1
投票

我不知道 Visual Studio 中有任何直接的方法,但是当内存提交阈值达到某个值(-m 选项)时,您可以使用 ProcDump 创建故障转储。

然后您需要使用 WinDbg(Windows 调试工具的一部分)来检查堆。


0
投票

这个问题可能很旧,但仍然相关。

您可以使用此功能检查可用内存:

https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-globalmemorystatusex

然后,偶尔从主线程调用该函数,或者运行一个单独的线程来监视主线程。您可以在监控代码中设置断点,以便在内存使用超过定义的阈值时中断执行。

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