Please enable JavaScript to view this site.

Performance Validator Help

Debug information can be provided using two methods.

 

Debugging information (TDS or DWARF format)

 

MAP files

 

 

Debugging Information

 

Debug configurations of Delphi projects automatically generate debug information that provides symbols, filenames and line numbers.

 

However the release configurations of Delphi projects do not automatically generate debug information. You need to configure that yourself.
 
Here's how you do that. It's slightly different if you're building 32 bit applications rather 64 bit applications.

 

You need to set both compiler and linker settings to get debug information. Setting just one or the other will not give you debug information you can use.

 

 

32 bit Delphi

 

Project Configuration

 

Change your project settings to target 32 bit builds.

 

 DelphiRelease_x86

 

Compiler Settings

 

 DelphiCompilerOptions_x86

 

Linker Settings

 

 DelphiLinkerOptions_x86

 

 

When you have edited the project options you need to rebuild the software for the options to take effect and create the debug information.

 

 

64 bit Delphi

 

Project Configuration

 

Change your project settings to target 64 bit builds.

 

 DelphiRelease_x64

 

Compiler Settings

 

 DelphiCompilerOptions_x64

 

Linker Settings

 

 DelphiLinkerOptions_x64

 

 

When you have edited the project options you need to rebuild the software for the options to take effect and create the debug information.

 

 

MAP files

 

MAP files are not generated by default. You need to enable the option to generate a detailed map file.

 

The method is the same for 32 bit and 64 bit Delphi.

 

Select the project configuration as shown in the Debugging Information section above, then modify the Delphi Compiler, Linking settings.

 

Linker Settings

 

 Delphi_x64_Map

 

 

When you have edited the project options you need to rebuild the software for the options to take effect and create the debug information.

 

 

Debugging Information or MAP files?

 

If you can create both debugging information and MAP files which should I use?

 

Performance Validator uses this information to provide symbols, filenames and line numbers.
 
For the purposes of instrumenting your modules (EXE / DLL / etc) this information is used to identify functions and to identify line numbers.
 
For this purpose it does matter whether you use Debugging Information or MAP files.

 

Debugging Information

 

TDS debugging information appears to be accurate, in that they reflect the correct location of functions and line numbers in the module they represent.

 

Some additional data is present in the last symbol in any given source file. Our symbol reader handles this and removes the unwanted information.

 

MAP files

 

MAP file information does not appear accurate. It is good enough for resolving addresses into symbols, filenames and line numbers for creating callstacks and crash addresses, but it is not good enough for placing hooks at the correct place for every line in the module. Some modules get instrumented perfectly, while others fail for no apparent reason. Given the lack of information in a MAP file we can only assume that some of the data identified as lines indicating code are in fact lines indicating data in the code segment. Instrumenting data is not going to work - you're corrupting the data. This would explain why instrumenting these modules with MAP file information doesn't work.
 
Our recommendation

 
Although in some circumstances working with MAP file data from Delphi will work, we strongly recommend that you use TDS debugging information.