Как проанализировать файл дампа из DLL-файла Delphi?
-
11-09-2019 - |
Вопрос
Я инженер по эскалации в продукте, который использует оба C# и код Delphi 2006.
В большинстве случаев проблемы с C # отлаживаются с помощью ВинДбг и проблемы Delphi 2006 с ЭврекаЛог.
Но когда проблема связана с использованием памяти Delphi, EurekaLog не предоставляет достаточно информации для устранения проблемы, и единственное, что у меня есть для отладки, это файл полного дампа памяти.
Я не могу (или я не знаю, как это сделать) загрузить файл символов в WinDbg, потому что это .map
файл, а не .pdb
файл.
Итак, мои вопросы таковы:
Как мне загрузить символы из файла .map в WinDbg?(Преобразование
.map
Для.pdb
или другое.)Существует ли инструмент для анализа файла дампа для приложения Delphi?
Решение
Для преобразования символов Карты в Dbg:
- Получить Map2Dbg.exe от http://code.google.com/p/map2dbg/
- Поместите Map2dbg в ту же папку, что и YourApp.exe и его файл карты
- Выполнить:map2dbg.exe YourApp.exe
Вы должны получить файл YourApp.dbg для использования с инструментами Microsoft....
Другие советы
Помимо tds2pdb (см. Мой комментарий к map2dbg), вы также можете использовать мой просмотрщик minidump в программах Delphi:https://github.com/andremussche/asmprofiler/blob/master/Source/MiniDumpReader/ViewMinidump.exe.
Тогда вам не нужно конвертировать в .dbg или .pdb, но он напрямую считывает различные файлы отладки Delphi (.map, .tds /.td32 и j.dbg).
Последняя версия cv2pdb инструмент может конвертировать DBGS, созданные с помощью map2dbg, в PDB-файлы.
Итак, если вы ранее создавали свои DBGS таким образом:map2dbg карта 2dbg App.exe
Просто добавьте эту команду позже:cv2pdb -ы.App.exe
-с.параметр необходим для отделения имен методов от имен классов точкой.
cv2pdb, созданный для Win32 на основе текущих исходных текстов, можно загрузить с здесь.