c# - 特定于系统的错误搜索?

标签 c# memory memory-leaks unmanaged-memory

我最近一直在搞SFML , 一个多媒体图书馆。我使用 C#,所以自然而然地选择了 .Net 绑定(bind),您可以从最新的 2.0 版本的 SVN 中获取它。弄乱了一段时间后,我注意到我的应用程序有时会在使用 Text 对象时挂起,该对象用于绘制纹理字体。

通过使用探查器和全能的 Windows 任务管理器进行的进一步调查显示,一个使用文本的简单应用程序似乎以某种方式泄漏了内存。然后我在 SFML 论坛上发了一个关于它的帖子 (the thread)。然而,SFML 的主要开发人员无法在他的机器上重现该错误。我想我不会疯了,就把它发给了一个 friend ,他说他确实看到了这件事。

我为 SFML 的开发者 Laurent 做了一个例子,但他仍然无法重现这个错误。我认为这可能与操作系统有关,所以我将文件发送给了所有可能的人,并询问了他们的操作系统。这是我的结果:

http://spreadsheets.google.com/ccc?key=0AhcHeJlLGEVUdG1TTi1mTkFxeFlHYVRISXhjbFBDUmc&hl=en

如您所见,Turc 和 K7 都具有相同的操作系统,但它不会在 K7 上崩溃(该表不完整,测试候选人尚未报告)。无论如何,这告诉我这显然不是操作系统问题。

所以我的实际问题是,除了操作系统或架构之外,还有哪些其他因素会影响像这样只出现在某些系统上的错误?

作为引用,这是我发给我 friend 的文件: http://dl.dropbox.com/u/3310651/MemLeak2.rar

以及我所做的分析的屏幕截图: http://dl.dropbox.com/u/3310651/sfml_memleak.png

谢谢!

最佳答案

我不确定是什么导致了差异,但如果您可以在您的机器上重现该问题,一种选择是调查为什么所有文本对象都在周围徘徊。您可以通过使用“sos”调试库并查询找出文本对象的根来执行此操作。提供了有关在 Visual Studio 中使用 sos 的很好的介绍 here .

如果您只有 Visual Studio 的 Express 版本,您可以使用 WinDbg 调试器中的 sos,它是 Debugging Tools for Windows 的一部分。 .可以找到另一个适合将 sos 与 WinDbg 结合使用的很好的概述 here .

关于c# - 特定于系统的错误搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2232002/

相关文章:

c# - 使用错误的 web.config 在 azure 中部署的应用程序

memory - 操作系统内存分配地址

c - 如何在C中对内存中的字节进行异或?

memory - 为什么 valgrind 在 64 位架构上限制为 32 Gb?

java - android中MessageQueue中的内存泄漏?

c# - 具有多个 XML 输入文件的 XSLT 转换

c# - 请求失败,HTTP 状态为 401 : Unauthorized IN SSRS

c# - 如何将面向数据类型的 DataTemplate 与 GridView 一起使用?

linux - 如何找到给定地址的 ptep?

java - SWIG java : releasing memory allocated in c++