CLRMD架构MisMatch

时间:2016-10-02 23:13:52

标签: c# clrmd

我正在研究CLRMD库并尝试加载转储。我在这个过程和dac之间得到了不匹配的架构。控制台应用程序是x86应用程序,它创建一个字符串数组。

1.2

我使用32Bit TaskManager创建转储,当我加载转储时,我得到架构不匹配错误。

enter image description here

dataTarget.Architecture是Amd64和PointerSize 8.

enter image description here

但是当附加相同的应用程序进程时,dataTarget.Architecture是x86,Pointersize是4.

enter image description here

不知道何时出现这种差异。我在收集转储时错过了什么。请告诉我如何将转储加载到CLRMD

提前感谢。

1 个答案:

答案 0 :(得分:1)

这是一个非常简单的不匹配,您的程序作为32位进程运行,但minidump是从64位进程创建的。 DAC不支持混音。

您必须删除抖动强制,以便您的程序也以64位进程运行。项目>属性>构建选项卡,将平台目标设置更改为AnyCPU并取消勾选“首选32位”复选框。重复发布配置。

请注意,解决方案平台名称与此设置无关,这可能是您的测试控制台应用程序被证明是64位进程的可能原因,即使您认为它是针对x86的。您可以使用任务管理器,详细信息选项卡仔细检查,添加“平台”列。