【发布时间】:2013-02-01 06:47:47
【问题描述】:
背景
我正在尝试追踪内存泄漏问题,我知道(从 _CRT_DEBUG_MALLOC 和 MFC 以及 CRT 的泄漏检测)内存泄漏的特定行,但由于此行经常被调用,我不知道知道哪个调用实际泄漏。并且分配编号 + __p__crtBreakAlloc() 没有帮助,因为每次运行的分配编号不同。
无论如何,到目前为止的背景。如果您认为我应该使用其他工具,请发表评论。如果答案集中在实际问题上而不是我的潜在问题上,我将不胜感激,因为我发现这比泄漏本身更有趣(我最终会通过足够多的戳来发现)。
问题
在 WinDbg 中(我很确定它不在 VS 中)是否有可能有一个具有以下属性的断点:
- 它不会中断。 (所以它是一个“跟踪点”)
- 命中时,记录调用堆栈(直到一定深度)
- 它还应该记录一些全局状态(变量,可能只是内存地址的原始值)
这可能吗?怎么样?
【问题讨论】:
-
您所描述的内容听起来像是一种非常低效的泄漏定位方法。您是否尝试过使用UMDH tool?您可以使用 UMDH 轻松获取泄漏分配的调用堆栈。
标签: memory-leaks windbg breakpoints visual-studio-debugging callstack