summaryrefslogtreecommitdiff
path: root/README
blob: 43848442f1c9b1988e40580699636a5c2ab2cdee (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
100
101
102
103
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.9 or newer, compiled with profiling
  support, is required.

- GTK+ 2.6.0 or newer is required

- libglade 2.5.1 or newer 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

  If the module is compiled with a different compiler than the one 
  compiling the kernel, "modprobe sysprof-module" will produce this
  error message:

    insmod: error inserting './sysprof-module.o': -1 Invalid module format


Debugging symbols

- The programs and libraries you want to profile should have debugging
  symbols, or you won't get much usable information. On a Fedora Core system,
  installing the relevant <package>-debuginfo package should be sufficient.
  On Ubuntu and Debian, the debug packages are called <package>-dbg.

- 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 server you won't get any information about
  how time is spent inside the X server.

  On Ubuntu and Debian there is a package, xserver-xorg-dbg, containing a
  binary called Xorg-debug that is built in such a way that sysprof can use
  it. On other systems, to get an X server with usable symbols you
  have to compile your own:

  (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 6.9), then this is
	  already the default.

	- "make World"
	
	- Don't run "make install" yet. (See below).

  (2) Make sure the new X server can't see any old ".a" files lying 
      around. If you install on top of an existing installation, just do

	  find /usr/X11R6/lib/"*.a" | sudo xargs rm

      then run "make install" as root to 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:
      Lorenzo Colitti for writing the sysprof-text program
      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)