首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找堆损坏

查找堆损坏
EN

Stack Overflow用户
提问于 2011-03-18 22:00:09
回答 3查看 1.7K关注 0票数 2

这是我之前问题的扩展,Application crash with no explanation

我有很多可能是由应用程序服务器上的堆损坏引起的崩溃。这些崩溃仅在生产环境中发生;它们不能在测试环境中重现。

我在找一种方法来追踪这些撞车事故。

建议使用应用程序验证器,这很好,但它不能用于我们的生产服务器。当我们尝试使用应用程序验证器在生产环境中启动它时,它变得如此缓慢,以至于完全无法使用,尽管这是一个相当强大的服务器(64位应用程序,16 GB内存,8个处理器)。在没有应用程序验证器的情况下运行它,它只使用大约1 GB的内存,并且不超过任何处理器周期的10-15%。

有没有其他工具可以帮助发现堆损坏,而不会增加巨大的开销?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-24 20:54:46

使用Microsoft运行时库的调试版本。打开红色分区,在初始化期间调用一次_CrtSetDbgFlag(),每128次(比如说)堆操作自动检查一次堆。

_CRTDBG_DELAY_FREE_MEM_DF对于查找释放内存后使用的but非常有用,但是在使用它时,堆大小会不断增长。

票数 3
EN

Stack Overflow用户

发布于 2011-03-18 22:23:52

将其虚拟化并拍摄计划的快照有什么好处吗?这样您就有希望在它真正崩溃之前获得快照。然后拍摄崩溃前的快照并在实验室环境中启动它。如果你能让它再次崩溃,重新启动快照并开始检查你的服务器进程。

票数 1
EN

Stack Overflow用户

发布于 2011-03-24 20:35:31

和GCC一起的Mudflap。它为生产代码做代码插装。

你必须用-fmudflap编译你的软件。它将检查是否有任何错误指针访问(堆/堆栈/静态)。它被设计用于稍微慢一点的生产代码(从x1.5到x5)。您还可以禁用读取访问时检查以提高速度。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5353057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档