blob: 04ef77ce69bc20b9395a45eeeafddf64b47c1641 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
Sysprof is a sampling profiler that uses a kernel module to generate
stacktraces which are then interpreted by the userspace program
"sysprof".
See the Sysprof homepage:
http://www.daimi.au.dk/~sandmann/sysprof/
for more information
Please mail bug reports to
Soren Sandmann (sandmann@daimi.au.dk)
Also information about whether it works or doesn't work on your distribution
would be appreciated.
Requirements:
- A Linux kernel version 2.6.11 or newer is required.
Unlike Sysprof 0.9, this version should work fine on SMP systems.
- GTK+ 2.6.0 or newer is required
- libglade 2.5.1 is required
Compiling:
- Sysprof must be compiled with the same compiler that compiled the
kernel it is going to be used with. Usually this is just the the
system compiler, but if you have upgraded your kernel it is
possible that the new kernel was compiled with a different compiler
In that case, "modprobe sysprof-module" will produce this
error message:
insmod: error inserting './sysprof-module.o': -1 Invalid module format
Debugging symbols
- The programs you want to profile should have debugging symbols, or
you won't get much usable information. On a Fedora Core system,
installing the relevant -debuginfo package should be sufficient.
- X server.
The X server as shipped by most distributions uses its own home-rolled
module loading system and Sysprof has no way to deal with that, so if you
run sysprof with your normal X serverr you won't get any information about
how time is spent inside the X server.
To fix this you have to compile your own X server:
(1) Compile the X server to use ".so" modules:
- Uncomment the line "MakeDllModules Yes" in
xc/config/cf/xorgsite.def.
If you are compiling the CVS version of the X server
(the one that will eventually become 7.0), then this is
already the default.
- "make World"
(2) Install the X server making sure it can't see any ".a" files. If
you install on top of an existing installation, just do
find /usr/X11R6/lib/"*.a" | sudo xargs rm
and install the newly compiled X server.
If a ".so" X server finds .a files in its module path it will
try to load those in preference to .so files and this causes
symbol resolution problems
(3) Run your new X server
(4) Run sysprof as root. This is necessary because the X server binary
for security reasons is not readable by regular users. I could tell
you why, but then I'd have to kill you.
Credits:
Diana Fong for the icon
Mike Frysinger for x86-64 support
Kristian Høgsberg for the first port to the 2.6 kernel.
Owen Taylor for the symbol lookup code in memprof
Søren (sandmann@daimi.au.dk)
|