Подтвердить что ты не робот

Генерация DotPeek PDB для сборок без каталога отладки

Я пытаюсь использовать сервер символов JetBrains dotPeek 1.4, однако я столкнулся с некоторыми сторонними сборками, которые терпят неудачу, с статусом dotPeek:

Pdb has not been generated because assembly does not contain debug directory

Использование CFF Explorer. Я обнаружил, что эти сборки имеют пустые значения заголовка "Debug Directory" Portable Executable (PE).

Есть ли (простой) способ редактировать PE для добавления значений заголовка Debug Directory?

4b9b3361

Ответ 1

de4dot создает недопустимый исполняемый модуль .net в глазах dotPeek. Однако проблема dotPeek, а не de4dot. Но поскольку у нас нет источников dotPeek, мы должны изменить de4dot вместо этого, чтобы достичь интероперабельности. Modify: модуль de4dot.code/AssemblyModule.cs добавляет

writerOptions.WritePdb = true;
module.CreatePdbState();

to de4dot.code. Функция AssemblyModule.Save и вы заполняете действительную функцию pdb в модуле exe.

Чтобы сэкономить ваше время, вы можете использовать проект de4dot с моим патчем: https://github.com/earnol/de4dot/commit/24c6e696fb9251f7d048ac33c88c710013a649d6 Он добавит каталог отладки в исполняемый файл вывода. Просто удалите полученный PDB и снова запустите dotPeek. Он будет работать безупречно. Используйте что-то вроде: de4dot.exe -f filein.exe -o fileout.exe -fpdb