Visual Studio 2010 上的 VC++:使用调试堆发布构建
Posted
技术标签:
【中文标题】Visual Studio 2010 上的 VC++:使用调试堆发布构建【英文标题】:VC++ on Visual Studio 2010: Release builds using debug heap 【发布时间】:2011-10-25 06:46:20 【问题描述】:我正在对慢速 C++ 应用程序进行基准测试/优化,在拍摄一些堆栈快照时,我发现我的应用程序的发布版本正在使用调试堆,因为发现的一些堆栈跟踪表明:
ntdll.dll!string "Enabling heap debug options\n"() + 0x11056 bytes
这是一个在 Windows 7 上运行的 64 位应用程序。我在完全相同的在线环境中看到了两三个关于此问题的其他投诉,但没有任何响应。
有没有人知道为什么 Windows 或 Visual Studio 将调试堆用于发布构建 C++ 项目?
【问题讨论】:
+1 用于使用 stackshots。 【参考方案1】:The debug heap is used when a program is run under debugger(分析器通常表现为调试器)。为了绕过它,程序应该在没有调试的情况下启动,然后调试器应该附加到一个正在运行的进程。
【讨论】:
谢谢。我不知道我怎么从来不知道这一点,尽管我承认我没有看到强制发布应用程序使用调试堆的好处 - 不是发布点以尽可能接近真实世界情景!? @Mahmoud Al-Qudsi:这件事实际上并不那么出名,我也很惊讶知道它。好吧,调试堆有助于调试,而调试器有助于调试,所以我猜他们决定将它结合起来。此外,它不是由 Visual Studio 或类似的东西完成的 - 它是由 Windows 完成的。以上是关于Visual Studio 2010 上的 VC++:使用调试堆发布构建的主要内容,如果未能解决你的问题,请参考以下文章
在不安装 Visual Studio 2010 的情况下使用 vc100 平台工具集?
从 VC6 到 Visual Studio 2010 的 C++ 序列化
在 Visual Studio 2010 (utility.obj) 中使用带有 VC++ 的 QuickFix 时出错
在 Visual Studio 2010 (C++) 中集成 MATLAB 代码
串口通信IN C++(适用于Microsoft Visual Studio 2010/2012/2013 ,VC++6.0 )