Этот пост привел меня к chkmatch . На обработанной dll chkmatch показывает эту информацию:
Executable:
TimeDateStamp: 4a086937
Debug info: 2 ( CodeView )
TimeStamp: 4a086937 Characteristics: 0 MajorVer: 0 MinorVer: 0
Size: 123 RVA: 00380460 FileOffset: 00380460
CodeView signature: sUar
Debug information file:
Format: PDB 7.00
Result: unmatched (reason: incompatible debug information formats)
С тем же самым pdb против предварительно обработанной dll, он сообщает об этом:
Executable:
TimeDateStamp: 4a086937
Debug info: 2 ( CodeView )
TimeStamp: 4a086937 Characteristics: 0 MajorVer: 0 MinorVer: 0
Size: 123 RVA: 00380460 FileOffset: 00380460
CodeView format: RSDS
Signature: (my guid) Age: 19
PdbFile: (my path)
Debug information file:
Format: PDB 7.00
Signature: (my matching guid) Age: 19
Я открыл обе версии dll и пошел к смещению 00380460. В исходной версии достаточно ясно, я вижу имя pdb, но в постобработанной версии нет информации pdb с этим смещением. Я искал путь PDB и нашел точно такой же блок - только с другим смещением. Затем я сделал бин поиск байтов "38 00 60 04" в оригинальной DLL. Глядя на то же смещение в обработанной DLL, я нашел те же байты. Поэтому я скорректировал RVA и смещение (расположенное путем сопоставления байтов). Бинго! Теперь chkmatch сообщает о тех же самых результатах для обработанной dll, что и оригинал (за исключением RVA и FileOffset, которые я изменил).
Редактировать : подтверждено, теперь Visual Studio загружает символы для дампов, которые ссылаются на обработанную dll.