题 我可以从我的Delphi应用程序中发出Process Explorer可以使用的调试符号吗?


我正在调查我在Delphi 2010中编写的应用程序的性能问题.Delphi是否会发出符号 Process Explorer 查看当前正在运行的线程时可以使用,所以我可以看到函数名称?

我已经阻止了我的可执行文件的名称,但是你可以看到它只给了我函数的内存地址,并且如果可能的话我想要解析的函数名称(就像我对ole32.dll和ntdll一样)。 dll,因为我使用的是MS符号服务器)。

我知道这可以做到 VC ++应用程序和WinDbg......可以用Delphi应用程序和Process Explorer完成吗?

enter image description here


17
2018-01-14 16:04


起源


看到 关于如何使用map2dbg的这个答案 - François


答案:


是的,您需要做的是确保使用调试信息编译项目并且链接器发出一个 详细 地图文件(项目链接选项)。不确定,但您可能还需要检查链接器选项上的“包含远程调试符号”。

如果有,可以使用实用程序将映射转换为ProcessExplorer使用的dbg格式。

每当我们需要在我们的一个测试服务器上的挂起线程上获取堆栈跟踪时,我们就会这样做。

我们使用的Map2Dbg实用程序: https://github.com/andremussche/map2dbg


15
2018-01-14 16:06



+1我不知道这个并且会发现它非常有用,而不是我的软件当然会挂起!! ;-) - David Heffernan
@DavidHeffernan:当然不是,我们也没有:-)它没有挂起,它只是暂停反思! - Marjan Venema
Delphi现在支持反射,还支持RTTI? - Martin James
@Martin no,Delphi中的运行时类型信息(RTTI)只是提供其他语言中所谓的反射(或内省)的数据 - mjn