Debug information is necessary to display human-readable code location descriptions. It's used by many debugging-related tools to show readable information instead of RAW pointers. There are different formats of debug information. Each tool understands some of these formats. Another tool may understand other formats. If particular tool doesn't understand debug information format of your executable - then it will not show any useful information. For example, Delphi and C++ Builder supports variety of debug formats: embedded dcu/obj, .map (output only), .tds (TD32), .rsm (remote debug), DWARF (currently: 64-bit C++ Builder only) - all of these (except for DWARF) are Borland/CodeGear/Embarcadero-centric. On the other hand, Microsoft tools support Microsoft formats: .dbg and .pdb. Obviously, Embarcadero and Microsoft tools do not understand each other.
You can use debug information converters to solve such issues. These converter tools will take some form of debug information as input and convert it into another form.
Process Explorer tool shows no useful information about Delphi project
The same project after its debug information converted to DBG format
Same project after enabling Microsoft debug information for system DLLs
There are tools (like map2dbg or tds2pdb) which are able to convert map/tds to dbg/pdb - to make integration with Microsoft tools possible (such as Process Explorer or WinDbg). Basically, such converter tools require executable and debug information source. You can call them after compilation of your project to convert debug information file. Therefore, your actions to integrate with debug information converter would be:
Example: Process Explorer and map2dbg tool
Notes:
If you've done everything correctly - you should see a information about your Delphi/C++ Builder project in Process Explorer tool. Run your application, launch Process Explorer, right-click on your project in Process Explorer and click on "Properties", switch to "Threads" tab, pick a thread and click on "Call stack" button. You should see readable locations about your code instead of just module name + RAW offset.
See also:
|