gpt4 book ai didi

debugging - 减少托管程序的小型转储的大小,同时保留一些堆信息?

转载 作者:行者123 更新时间:2023-12-02 20:20:07 24 4
gpt4 key购买 nike

借助 .NET 4.0 中的转储调试支持,我们正在自动(当然是在询问用户之后:)创建 C# 程序崩溃的小型转储,并将其上传到我们的问题跟踪系统(以便小型转储可以帮助解决问题)崩溃的原因)。

使用 WithFullMemory 小型转储类型时一切正常。我们可以看到堆栈和堆变量。不幸的是,即使对于小型 C# 程序,(压缩的)转储也相当大。

如果我们使用“正常”小型转储类型,我们会得到一个非常小的转储,但托管调试器中甚至没有堆栈变量信息可用。事实上,任何小于 WithFullMemory 的东西在托管调试器中似乎都是毫无用处的。我们已经尝试使用 MINIDUMP_CALLBACK_ROUTINE 将包含的模块信息限制为我们自己的模块,但似乎它对托管转储几乎没有影响,但仍然设法破坏托管调试?

有人对如何修剪小型转储同时保持其对托管调试有用有任何提示吗?

最佳答案

我使用以下标志来节省空间,将为 C++ 应用程序生成有用的小型转储:

MiniDumpWithPrivateReadWriteMemory | 
MiniDumpWithDataSegs |
MiniDumpWithHandleData |
MiniDumpWithFullMemoryInfo |
MiniDumpWithThreadInfo |
MiniDumpWithUnloadedModules

标志值在 DbgHelp.h 中指定,需要将其编码到 C# 中。通过指定 CallbackRoutine 进一步限制转储。

关于debugging - 减少托管程序的小型转储的大小,同时保留一些堆信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3344310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com