File: dist.readme-developers.html

package info (click to toggle)
valgrind 1%3A3.7.0-6
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 58,060 kB
  • sloc: ansic: 396,820; xml: 18,453; cpp: 6,698; asm: 5,584; perl: 5,008; sh: 4,852; makefile: 3,965; exp: 625; haskell: 195
file content (221 lines) | stat: -rw-r--r-- 9,497 bytes parent folder | download
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>5.README_DEVELOPERS</title>
<link rel="stylesheet" href="vg_basic.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.readme-missing.html" title="4.README_MISSING_SYSCALL_OR_IOCTL">
<link rel="next" href="dist.readme-packagers.html" title="6.README_PACKAGERS">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div><table class="nav" width="100%" cellspacing="3" cellpadding="3" border="0" summary="Navigation header"><tr>
<td width="22px" align="center" valign="middle"><a accesskey="p" href="dist.readme-missing.html"><img src="images/prev.png" width="18" height="21" border="0" alt="Prev"></a></td>
<td width="25px" align="center" valign="middle"><a accesskey="u" href="dist.html"><img src="images/up.png" width="21" height="18" border="0" alt="Up"></a></td>
<td width="31px" align="center" valign="middle"><a accesskey="h" href="index.html"><img src="images/home.png" width="27" height="20" border="0" alt="Up"></a></td>
<th align="center" valign="middle">Valgrind Distribution Documents</th>
<td width="22px" align="center" valign="middle"><a accesskey="n" href="dist.readme-packagers.html"><img src="images/next.png" width="18" height="21" border="0" alt="Next"></a></td>
</tr></table></div>
<div class="chapter" title="5.README_DEVELOPERS">
<div class="titlepage"><div><div><h2 class="title">
<a name="dist.readme-developers"></a>5.README_DEVELOPERS</h2></div></div></div>
<div class="literallayout"><p><br>
<br>
Buildingandnotinstallingit<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
TorunValgrindwithouthavingtoinstallit,runcoregrind/valgrind<br>
withtheVALGRIND_LIBenvironmentvariableset,where&lt;dir&gt;istheroot<br>
ofthesourcetree(andmustbeanabsolutepath).Eg:<br>
<br>
VALGRIND_LIB=~/grind/head4/.in_place~/grind/head4/coregrind/valgrind<br>
<br>
Thisallowsyoutocompileandrunwith"make"insteadof"makeinstall",<br>
savingyoutime.<br>
<br>
Or,youcanusethe'vg-in-place'scriptwhichdoesthatforyou.<br>
<br>
Irecommendcompilingwith"make--quiet"tofurtherreducetheamountof<br>
outputspewedoutduringcompilation,lettingyouactuallyseeanyerrors,<br>
warnings,etc.<br>
<br>
<br>
Buildingadistributiontarball<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
Tobuildadistributiontarballfromthevalgrindsources:<br>
<br>
makedist<br>
<br>
Inadditiontocompiling,linkingandpackagingeverythingup,thecommand<br>
willalsobuildthedocumentation.Evenifallrequiredtoolsforbuildingthe<br>
documentationareinstalled,thisstepmaynotsucceedbecauseofhidden<br>
dependencies.E.g.onUbuntuyoumusthave"docbook-xsl"installed.<br>
Additionally,specifictoolversionsmaybeneeded.<br>
<br>
Ifyouonlywanttotestwhetherthegeneratedtarballiscompleteandruns<br>
regressiontestssuccessfully,buildingdocumentationisnotneeded.<br>
Editdocs/Makefile.am,searchforBUILD_ALL_DOCSandfollowinstructionsthere.<br>
<br>
<br>
Runningtheregressiontests<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
Tobuildandrunalltheregressiontests,run"make[--quiet]regtest".<br>
<br>
Torunasubsetoftheregressiontests,execute:<br>
<br>
perltests/vg_regtest&lt;name&gt;<br>
<br>
where&lt;name&gt;isadirectory(alltestswithinwillberun)orasingle<br>
.vgtesttestfile,orthenameofaprogramwhichhasalike-named.vgtest<br>
file.Eg:<br>
<br>
perltests/vg_regtestmemcheck<br>
perltests/vg_regtestmemcheck/tests/badfree.vgtest<br>
perltests/vg_regtestmemcheck/tests/badfree<br>
<br>
<br>
Runningtheperformancetests<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
Tobuildandrunalltheperformancetests,run"make[--quiet]perf".<br>
<br>
Torunasubsetoftheperformancesuite,execute:<br>
<br>
perlperf/vg_perf&lt;name&gt;<br>
<br>
where&lt;name&gt;isadirectory(alltestswithinwillberun)orasingle<br>
.vgperftestfile,orthenameofaprogramwhichhasalike-named.vgperf<br>
file.Eg:<br>
<br>
perlperf/vg_perfperf/<br>
perlperf/vg_perfperf/bz2.vgperf<br>
perlperf/vg_perfperf/bz2<br>
<br>
TocomparemultipleversionsofValgrind,usethe--vg=optionmultiple<br>
times.Forexample,ifyouhavetwoValgrindsnexttoeachother,onein<br>
trunk1/andoneintrunk2/,fromwithineithertrunk1/ortrunk2/dothisto<br>
comparethemonalltheperformancetests:<br>
<br>
perlperf/vg_perf--vg=../trunk1--vg=../trunk2perf/<br>
<br>
<br>
DebuggingValgrindwithGDB<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
Todebugthevalgrindlauncherprogram(&lt;prefix&gt;/bin/valgrind)just<br>
runitundergdbinthenormalway.<br>
<br>
Debuggingthemainbodyofthevalgrindcode(and/orthecodefor<br>
aparticulartool)requiresabitmoretrickerybutcanbeachieved<br>
withouttoomuchproblembyfollowingthesesteps:<br>
<br>
(1)SetVALGRIND_LAUNCHERtopointtothevalgrindexecutable.Eg:<br>
<br>
exportVALGRIND_LAUNCHER=/usr/local/bin/valgrind<br>
<br>
orforanuninstalledversioninasourcedirectory$DIR:<br>
<br>
exportVALGRIND_LAUNCHER=$DIR/coregrind/valgrind<br>
<br>
(2)Rungdbonthetoolexecutable.Eg:<br>
<br>
gdb/usr/local/lib/valgrind/ppc32-linux/lackey<br>
<br>
or<br>
<br>
gdb$DIR/.in_place/x86-linux/memcheck<br>
<br>
(3)Do"handleSIGSEGVSIGILLnostopnoprint"inGDBtopreventGDBfrom<br>
stoppingonaSIGSEGVorSIGILL:<br>
<br>
(gdb)handleSIGILLSIGSEGVnostopnoprint<br>
<br>
(4)Setanybreakpointsyouwantandproceedasnormalforgdb.The<br>
macroVG_(FUNC)isexpandedtovgPlain_FUNC,soIfyouwanttoset<br>
abreakpointVG_(do_exec),youcoulddolikethisinGDB:<br>
<br>
(gdb)bvgPlain_do_exec<br>
<br>
(5)Runthetoolwithrequiredoptions:<br>
<br>
(gdb)runpwd<br>
<br>
Steps(1)--(3)canbeputina.gdbinitfile,butanydirectorynamesmust<br>
befullyexpanded(ie.notanenvironmentvariable).<br>
<br>
Adifferentandpossiblyeasierwayisasfollows:<br>
<br>
(1)RunValgrindasnormal,butaddtheflag--wait-for-gdb=yes.This<br>
putsthetoolexecutableintoawaitloopsoonafteritgains<br>
control.Thisdelaysstartupforafewseconds.<br>
<br>
(2)Inadifferentshell,do"gdb/proc/&lt;pid&gt;/exe&lt;pid&gt;",where<br>
&lt;pid&gt;youreadfromtheoutputprintedby(1).Thisattaches<br>
GDBtothetoolexecutable,whichshouldbeintheabovementioned<br>
waitloop.<br>
<br>
(3)Do"cont"tocontinue.Aftertheloopfinishesspinning,startup<br>
willcontinueasnormal.Notethatcomment(3)aboverepassing<br>
signalsappliesheretoo.<br>
<br>
<br>
Self-hosting<br>
~~~~~~~~~~~~<br>
TorunValgrindunderValgrind:<br>
<br>
(1)Checkout2trees,"Inner"and"Outer".Innerrunstheapp<br>
directly.OuterrunsInner.<br>
<br>
(2)Configureinnerwith--enable-innerandbuild/installas<br>
usual.<br>
<br>
(3)ConfigureOuternormallyandbuild/installasusual.<br>
<br>
(4)Chooseaverysimpleprogram(date)andtry<br>
<br>
outer/.../bin/valgrind--sim-hints=enable-outer--trace-children=yes\<br>
--tool=cachegrind-vinner/.../bin/valgrind--tool=none-vprog<br>
<br>
Ifyouomitthe--trace-children=yes,you'llonlymonitorInner'slauncher<br>
program,notitsstage2.<br>
<br>
Thewholethingisfragile,confusingandslow,butitdoesworkwellenough<br>
foryoutogetsomeusefulperformancedata.Innerhasmostof<br>
itsoutput(ie.thoselinesbeginningwith"==&lt;pid&gt;==")prefixedwitha'&gt;',<br>
whichhelpsalot.<br>
<br>
Atthetimeofwritingtheallocatorisnotannotatedwithclientrequests<br>
soMemcheckisnotasusefulasitcouldbe.Italsohasnotbeentested<br>
much,sodon'tbesurprisedifyouhitproblems.<br>
<br>
Whenusingself-hostingwithanouterCallgrindtool,use'--pop-on-jump'<br>
(ontheouter).Otherwise,Callgrindhasmuchhighermemoryrequirements.<br>
<br>
<br>
Printingoutproblematicblocks<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
Ifyouwanttoprintoutadisassemblyofaparticularblockthat<br>
causesacrash,dothefollowing.<br>
<br>
Tryrunningwith"--vex-guest-chase-thresh=0--trace-flags=10000000<br>
--trace-notbelow=999999".Thisshouldprintonelineforeachblock<br>
translated,andthatincludestheaddress.<br>
<br>
Thenre-runwith999999changedtothehighestbbnumbershown.<br>
Thiswillprinttheonelineperblock,andalsowillprinta<br>
disassemblyoftheblockinwhichthefaultoccurred.<br>
<br>
</p></div>
</div>
<div>
<br><table class="nav" width="100%" cellspacing="3" cellpadding="2" border="0" summary="Navigation footer">
<tr>
<td rowspan="2" width="40%" align="left">
<a accesskey="p" href="dist.readme-missing.html">&lt;&lt;4.README_MISSING_SYSCALL_OR_IOCTL</a></td>
<td width="20%" align="center"><a accesskey="u" href="dist.html">Up</a></td>
<td rowspan="2" width="40%" align="right"><a accesskey="n" href="dist.readme-packagers.html">6.README_PACKAGERS&gt;&gt;</a>
</td>
</tr>
<tr><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td></tr>
</table>
</div>
</body>
</html>