|Valgrind 3.3 - Advanced Debugging and Profiling for GNU/Linux applications|
by J. Seward, N. Nethercote, J. Weidendorfer and the Valgrind Development Team
Paperback (6"x9"), 164 pages
RRP £12.95 ($19.95)
13.1.5 Name Compression
With the introduction of association specifications like calls it is needed to specify the same function or same file name multiple times. As absolute filenames or symbol names in C++ can be quite long, it is advantageous to be able to specify integer IDs for position specifications. Here, the term “position” corresponds to a file name (source or object file) or function name.
To support name compression, a position specification can be not only of the format ‘spec=name’, but also ‘spec=(ID) name’ to specify a mapping of an integer ID to a name, and ‘spec=(ID)’ to reference a previously defined ID mapping. There is a separate ID mapping for each position specification, i.e. you can use ID 1 for both a file name and a symbol name.
With string compression, the example from 1.4 looks like this:
events: Instructions fl=(1) file1.c fn=(1) main 16 20 cfn=(2) func1 calls=1 50 16 400 cfl=(2) file2.c cfn=(3) func2 calls=3 20 16 400 fn=(2) 51 100 cfl=(2) cfn=(3) calls=2 20 51 300 fl=(2) fn=(3) 20 700
As position specifications carry no information themselves, but only change the meaning of subsequent cost lines or associations, they can appear everywhere in the file without any negative consequence. Especially, you can define name compression mappings directly after the header, and before any cost lines. Thus, the above example can also be written as
events: Instructions # define file ID mapping fl=(1) file1.c fl=(2) file2.c # define function ID mapping fn=(1) main fn=(2) func1 fn=(3) func2 fl=(1) fn=(1) 16 20 ...
|ISBN 0954612051||Valgrind 3.3 - Advanced Debugging and Profiling for GNU/Linux applications||See the print edition|