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 C++ Builder projects automatically generate debug information that provides symbols, filenames and line numbers.

 

However the release configurations of C++ Builder 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 C++ Builder

 

Project Configuration

 

Change your project settings to target 32 bit builds.

 

 CppBuilderRelease_x86

 

Compiler Settings

 

 CppBuilderCompilerOptions_x86

 

Linker Settings

 

 CppBuilderLinkerOptions_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 C++ Builder

 

Project Configuration

 

Change your project settings to target 64 bit builds.

 

 CppBuilderRelease_x64

 

Compiler Settings

 

 CppBuilderCompilerOptions_x64

 

Linker Settings

 

 CppBuilderLinkerOptions_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 C++ Builder.

 

Select the project configuration as shown in the Debugging Information section above, then modify the C++ Linker, Output settings.

 

Linker Settings

 

 CppBuilder_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 format and DWARF format debugging information both appear 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 C++ Builder will work, we strongly recommend that you use TDS debugging information (32 bit builds) and DWARF debugging information (64 bit builds).