Como analisar um arquivo de despejo de um arquivo DLL Delphi?
-
11-09-2019 - |
Pergunta
Eu sou um engenheiro de escalonamento em um produto que uso tanto C # e Delphi 2006 código.
Na maioria dos casos C # questões são depurados com WinDbg e Delphi 2006 problemas com EurekaLog .
Mas quando o assunto é a utilização da memória Delphi, EurekaLog não dá informações suficientes para corrigir o problema, ea única coisa que eu tenho para depurá-lo é um arquivo de despejo de memória completo.
Eu não pode (ou não sei como) carregar o arquivo de símbolo no WinDbg, porque é um arquivo .map
e não um arquivo .pdb
.
Então, minhas perguntas são:
-
Como faço para carregar os símbolos de um arquivo .map no WinDbg? (Conversão
.map
para.pdb
ou outro.) -
Existe uma ferramenta para analisar o arquivo de despejo para uma aplicação Delphi?
Solução
Para converter de Mapa para símbolos DBG:
- Get Map2Dbg.exe de http://code.google.com/p/map2dbg/
- Coloque Map2dbg na mesma pasta como YourApp.exe e seu arquivo de mapa
- Executar: map2dbg.exe YourApp.exe
Você deve obter um arquivo YourApp.dbg para uso com ferramentas da Microsoft ....
Outras dicas
Além tds2pdb (ver o meu comentário sobre map2dbg) você também pode usar o meu visualizador de minidespejo em programas Delphi: https://github.com/andremussche/asmprofiler/blob/ master / Fonte / MiniDumpReader / ViewMinidump.exe .
Em seguida, você não precisa de se converter ao .dbg ou .pdb, mas ele lê diretamente vários arquivos de depuração Delphi (.map, .tds / .td32 e j.dbg).
A última versão do cv2pdb ferramenta pode converter os DBGS feitos com map2dbg em arquivos PDB.
Então, se você tiver feito previamente seus DBGS assim: map2dbg App.exe
Basta adicionar este comando depois: cv2pdb-s. App.exe
-s. parâmetro é necessário separar os nomes de métodos dos nomes de classe com um ponto.
cv2pdb construído para Win32 sobre as fontes atuais podem para baixado aqui .