Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I emit debug symbols from my Delphi application that Process Explorer can use?

I'm investigating a performance issue with my application written in Delphi 2010. Does Delphi emit symbols that Process Explorer can use when viewing the currently running threads so I can see the function names?

I've blocked out the name of my executable, but you can see it only gives me the memory address of the function, and I'd like to have the resolved function name if possible (like I have for ole32.dll and ntdll.dll because I am using the MS symbol server).

I know this can be done for VC++ applications and WinDbg...can it be done with Delphi applications and Process Explorer?

enter image description here

like image 863
Mick Avatar asked Jan 14 '12 16:01

Mick


1 Answers

Yep, what you need to do is make sure the project is compiled with debug info and that the linker emits a detailed map file (project link options). Not sure, but you may also have to check the "include remote debug symbols" on the linker options.

When you have that, you can use a utility to convert the map to the dbg format that ProcessExplorer uses.

We do this at work whenever we need to get a stack trace on a hung thread on one of our testservers.

The Map2Dbg utility we use: https://github.com/andremussche/map2dbg

like image 158
Marjan Venema Avatar answered Oct 25 '22 22:10

Marjan Venema