OLD | NEW |
---|---|
(Empty) | |
1 CygProfiler suite | |
Steve Block
2012/08/03 16:53:22
Is this file taken from upstream Cygprofile? If no
| |
2 ----------------- | |
3 | |
4 CygProfiler is a set of functions for use with gcc's | |
5 -finstrument-functions option. See info page of gcc for | |
6 details and description of this option. | |
7 | |
8 To use it, compile your program with -finstrument-functions | |
9 and link together with cyg-profile.c. Somewhere at the | |
10 beginning of the program call cygprofile_enable() to start | |
11 logging all function entries and exits into a logfile. | |
12 | |
13 By default the name of the logfile is cyglog.$PID, but you | |
14 can set a different one using cygprofile_setfilename(). | |
15 To get current logfile name use cygprofile_getfilename(). | |
16 To see if logging is enabled use cygprofile_isenabled(). | |
17 You can stop logging by calling cygprofile_disable(). | |
18 | |
19 Note that subsequent enabling of logging will overwrite the | |
20 previous log with the same name! | |
21 | |
22 After you have created a logfile run cyg-resolve.pl with the | |
23 program name that created the logfile as a first argument | |
24 and the logfile name as a second argument. On stdout you'll | |
25 see a log of all[1] functions invoked while logging was | |
26 enabled. | |
27 | |
28 Example for plain C: | |
29 $ gcc -finstrument-functions -o test test.c cyg-profile.c | |
30 $ ./test | |
31 Logfile: cyglog.1234 | |
32 $ cyg-progile.pl test cyglog.1234 | |
33 Loading symbols from test ... OK | |
34 Seen 65 symbols, stored 22 function offsets | |
35 Level correction set to 0 | |
36 + 0 0x80486a9 (from 0x804872f) function3() | |
37 + 1 0x804866d (from 0x80486c8) function2() | |
38 + 2 0x8048634 (from 0x804868c) function1() | |
39 done | |
40 | |
41 As you can see - "function3()" called "function2()" which then | |
42 called "function1()". Function "main()" isn't in the list, | |
43 because the profiling was not yet enabled at the time it was | |
44 called. | |
45 | |
46 Example for C++: | |
47 $ gcc -c cyg-profile.c | |
48 $ g++ -finstrument-functions -c test.cxx | |
49 $ g++ -o test test.o cyg-profile.o | |
50 $ ./test | |
51 Logfile: cyglog.1234 | |
52 $ ./cyg-resolve.pl test cyglog.1234 | |
53 Loading symbols from test ... OK | |
54 Seen 78 symbols, stored 25 function offsets | |
55 Level correction set to 1 | |
56 + 1 0x400d1c (from 0x400dcb) _ZN4test9function3Ec() | |
57 + 2 0x400cd4 (from 0x400d48) _ZN4test9function2Ei() | |
58 + 3 0x400c98 (from 0x400d01) _ZN4test9function1El() | |
59 + 0 0x400e3e (from 0x2a95ae2c8b) __tcf_0() | |
60 done | |
61 | |
62 The usage is similar to the plain C case. Unfortunately you'll | |
63 only see the mangled function names, e.g. "_ZN4test9function3Ec" | |
64 instead of "int test::function3(char c)". | |
65 | |
66 Michal Ludvig, <michal@logix.cz> | |
67 http://www.logix.cz/michal/devel | |
68 | |
69 ---- | |
70 [1] All means all functions, that were compiled with | |
71 -finstrument-functions. | |
OLD | NEW |