Архитектура CLRMD MisMatch
Я работаю над библиотекой CLRMD и пытаюсь загрузить дамп. Я получаю несоответствующую архитектуру между этим процессом и ЦАП. Консольное приложение, которое является приложением x86, которое создает массив строк.
static void Main(string[] args)
{
string[] strArray = null;
for (int i = 0; i < 100; i++)
{
strArray = new string[100];
strArray[i] = "One";
System.Threading.Thread.Sleep(1000);
Console.WriteLine(i);
}
Console.Read();
}
Я использовал 32-битный TaskManager для создания дампа, и при загрузке дампа я получаю ошибку несоответствия архитектуры.
dataTarget. Архитектура Amd64 и PointerSize 8.
Но когда присоединен тот же процесс приложения, dataTarget.Architecture - x86, а Pointersize - 4.
Не знаю, когда эта разница. я что-то упускаю, когда беру на свалку. Пожалуйста, дайте мне знать, как загрузить дамп в CLRMD
заранее спасибо.
1 ответ
Это очень прямое несоответствие, ваша программа работает как 32-битный процесс, но мини-дамп был создан из 64-битного процесса. ЦАП не поддерживает микширование.
Вы должны удалить форсирование джиттера, чтобы ваша программа также работала как 64-битный процесс. Project > Properties > вкладка Build, измените целевое значение Platform на AnyCPU и снимите флажок "Предпочитать 32-битный". Повторите для настройки выпуска.
Обратите внимание, что имя платформы решения не имеет отношения к этому параметру, возможно, по этой причине ваше тестовое консольное приложение оказалось 64-битным процессом, даже если вы думали, что оно предназначено для x86. Вы можете дважды проверить с помощью диспетчера задач, вкладка Details, добавить столбец "Платформа".