[英]How do I dump the .NET process so that Visual Studio 2008 will load it as a managed dump?
[英]How do I take a good crash dump for .NET?
我捕获了在64位Windows操作系统上运行的32位.NET应用程序的故障转储。 在分析过程中,有人发现我有一个64位转储并告诉我由于错误的位数而无法分析这个转储。
使用Windows任务管理器创建转储时,我不知道我做错了什么。 这始终适用于32位操作系统。
我怎样才能为.NET提供良好的转储,尤其是正确的位数?
对于.NET应用程序而言,这一点很重要,原因如下:
将转储从64位转换为32位是不可能的,尽管理论上它应该包含所有必要的信息。
如果你感到幸运,你也可以尝试一些指示
如果你不知道它的位数,你可以这样找到它:
Windows 7任务管理器在进程上显示*32
:
在Windows 8任务管理器中,转到“ Details
选项卡并添加名为“ Platform
的列:
Visual Studio在附加到进程时显示位数:
可以将Process Explorer配置为显示“ Image Type
列:
自动检测位数的程序:
捕获具有特定位数的转储的工具:
-64
命令行开关运行 只需根据您的应用选择位数,而不是根据操作系统。
对于.NET,您需要一个完整的内存转储,否则您无法弄清楚对象的内容。 要包含完整内存,请执行以下操作:
.dump
时指定/ma
-ma
命令行开关 DumpType
设置为2
我发现很多开发人员甚至都不知道Visual Studio可以创建转储。 原因可能是菜单长时间不可见。 这些是步骤:
可能仅用于调试WoW64层本身。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.