【问题标题】:Can I emit debug symbols from my Delphi application that Process Explorer can use?我可以从我的 Delphi 应用程序中发出 Process Explorer 可以使用的调试符号吗?
【发布时间】:2012-02-10 09:54:52
【问题描述】:

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

我已经屏蔽了我的可执行文件的名称,但你可以看到它只给了我函数的内存地址,如果可能的话,我希望得到解析的函数名称(就像我为 ole32.dll和 ntdll.dll,因为我使用的是 MS 符号服务器)。

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

【问题讨论】:

标签: delphi debugging winapi


【解决方案1】:

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

当你拥有它时,你可以使用一个实用程序将地图转换为 ProcessExplorer 使用的 dbg 格式。

每当我们需要在我们的一个测试服务器上的挂起线程上获取堆栈跟踪时,我们都会在工作中执行此操作。

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

【讨论】:

  • +1 我不知道这个并且会发现它非常有用,当然不是我的软件挂起! ;-)
  • @DavidHeffernan:当然不会,我们的也不会 :-) 它没有挂起,它只是暂停思考!
  • Delphi 现在支持反射,RTTI 也支持?
  • @Martin no,Delphi 中的运行时类型信息 (RTTI) 只是为其他语言中所谓的反射(或内省)提供数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 2015-11-28
  • 2014-03-10
  • 1970-01-01
  • 2013-01-05
相关资源
最近更新 更多