Архитектура 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, добавить столбец "Платформа".

Другие вопросы по тегам