19

我是同时使用C#和 Delphi 2006 代码的产品的升级工程师。

在大多数情况下,使用WinDbg和 Delphi 2006 使用EurekaLog调试 C# 问题。

但是当问题是 Delphi 内存使用时,EurekaLog 没有提供足够的信息来解决这个问题,我唯一可以调试它的是一个完整的内存转储文件。

我不能(或者我不知道如何)在 WinDbg 中加载符号文件,因为它是.map文件而不是.pdb文件。

所以我的问题是:

  • 如何从 WinDbg 中的 .map 文件加载符号?(转换.map.pdb或其他。)

  • 是否有工具可以分析 Delphi 应用程序的转储文件?

4

3 回答 3

17

要将 Map 转换为 Dbg 符号: - 从http://code.google.com/p/map2dbg/
获取 Map2Dbg.exe - 将 Map2dbg 与 YourApp.exe 及其地图文件放在同一文件夹中 - 执行:map2dbg.exe YourApp 。可执行程序

您应该获得一个 YourApp.dbg 文件以与 Microsoft 工具一起使用……。

于 2009-08-06T18:04:14.613 回答
3

除了 tds2pdb(请参阅我对 map2dbg 的评论),您还可以在 Delphi 程序中使用我的 minidump 查看器: https ://github.com/andremussche/asmprofiler/blob/master/Source/MiniDumpReader/ViewMinidump.exe 。

那么就不需要转换成.dbg或者.pdb,而是直接读取各种Delphi调试文件(.map、.tds/.td32、j.dbg)。

于 2012-06-13T11:15:50.183 回答
1

最新版本的cv2pdb工具可以将使用 map2dbg 制作的 DBG 转换为 PDB 文件。

所以,如果你以前制作过这样的 DBG:map2dbg App.exe

之后只需添加此命令:cv2pdb -s。应用程序.exe

-s。参数是必要的,以用点分隔方法名称和类名称。

cv2pdb 在当前源上为 Win32 构建,可以从这里下载。

于 2018-04-01T04:14:43.807 回答