Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v9 / man / man3 / Carp.3
CommitLineData
920dae64
AT
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "Carp 3"
132.TH Carp 3 "2001-09-21" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134carp \- warn of errors (from perspective of caller)
135.PP
136cluck \- warn of errors with stack backtrace
137 (not exported by default)
138.PP
139croak \- die of errors (from perspective of caller)
140.PP
141confess \- die of errors with stack backtrace
142.PP
143shortmess \- return the message that carp and croak produce
144.PP
145longmess \- return the message that cluck and confess produce
146.SH "SYNOPSIS"
147.IX Header "SYNOPSIS"
148.Vb 2
149\& use Carp;
150\& croak "We're outta here!";
151.Ve
152.PP
153.Vb 2
154\& use Carp qw(cluck);
155\& cluck "This is how we got here!";
156.Ve
157.PP
158.Vb 2
159\& print FH Carp::shortmess("This will have caller's details added");
160\& print FH Carp::longmess("This will have stack backtrace added");
161.Ve
162.SH "DESCRIPTION"
163.IX Header "DESCRIPTION"
164The Carp routines are useful in your own modules because
165they act like \fIdie()\fR or \fIwarn()\fR, but with a message which is more
166likely to be useful to a user of your module. In the case of
167cluck, confess, and longmess that context is a summary of every
168call in the call\-stack. For a shorter message you can use carp,
169croak or shortmess which report the error as being from where
170your module was called. There is no guarantee that that is where
171the error was, but it is a good educated guess.
172.PP
173You can also alter the way the output and logic of \f(CW\*(C`Carp\*(C'\fR works, by
174changing some global variables in the \f(CW\*(C`Carp\*(C'\fR namespace. See the
175section on \f(CW\*(C`GLOBAL VARIABLES\*(C'\fR below.
176.PP
177Here is a more complete description of how shortmess works. What
178it does is search the call-stack for a function call stack where
179it hasn't been told that there shouldn't be an error. If every
180call is marked safe, it then gives up and gives a full stack
181backtrace instead. In other words it presumes that the first likely
182looking potential suspect is guilty. Its rules for telling whether
183a call shouldn't generate errors work as follows:
184.IP "1." 4
185Any call from a package to itself is safe.
186.IP "2." 4
187Packages claim that there won't be errors on calls to or from
188packages explicitly marked as safe by inclusion in \f(CW@CARP_NOT\fR, or
189(if that array is empty) \f(CW@ISA\fR. The ability to override what
190\&\f(CW@ISA\fR says is new in 5.8.
191.IP "3." 4
192The trust in item 2 is transitive. If A trusts B, and B
193trusts C, then A trusts C. So if you do not override \f(CW@ISA\fR
194with \f(CW@CARP_NOT\fR, then this trust relationship is identical to,
195\&\*(L"inherits from\*(R".
196.IP "4." 4
197Any call from an internal Perl module is safe. (Nothing keeps
198user modules from marking themselves as internal to Perl, but
199this practice is discouraged.)
200.IP "5." 4
201Any call to Carp is safe. (This rule is what keeps it from
202reporting the error where you call carp/croak/shortmess.)
203.Sh "Forcing a Stack Trace"
204.IX Subsection "Forcing a Stack Trace"
205As a debugging aid, you can force Carp to treat a croak as a confess
206and a carp as a cluck across \fIall\fR modules. In other words, force a
207detailed stack trace to be given. This can be very helpful when trying
208to understand why, or from where, a warning or error is being generated.
209.PP
210This feature is enabled by 'importing' the non-existent symbol
211\&'verbose'. You would typically enable it by saying
212.PP
213.Vb 1
214\& perl -MCarp=verbose script.pl
215.Ve
216.PP
217or by including the string \f(CW\*(C`MCarp=verbose\*(C'\fR in the \s-1PERL5OPT\s0
218environment variable.
219.PP
220Alternately, you can set the global variable \f(CW$Carp::Verbose\fR to true.
221See the \f(CW\*(C`GLOBAL VARIABLES\*(C'\fR section below.
222.SH "GLOBAL VARIABLES"
223.IX Header "GLOBAL VARIABLES"
224.Sh "$Carp::CarpLevel"
225.IX Subsection "$Carp::CarpLevel"
226This variable determines how many call frames are to be skipped when
227reporting where an error occurred on a call to one of \f(CW\*(C`Carp\*(C'\fR's
228functions. For example:
229.PP
230.Vb 3
231\& $Carp::CarpLevel = 1;
232\& sub bar { .... or _error('Wrong input') }
233\& sub _error { Carp::carp(@_) }
234.Ve
235.PP
236This would make Carp report the error as coming from \f(CW\*(C`bar\*(C'\fR's caller,
237rather than from \f(CW\*(C`_error\*(C'\fR's caller, as it normally would.
238.PP
239Defaults to \f(CW0\fR.
240.Sh "$Carp::MaxEvalLen"
241.IX Subsection "$Carp::MaxEvalLen"
242This variable determines how many characters of a string-eval are to
243be shown in the output. Use a value of \f(CW0\fR to show all text.
244.PP
245Defaults to \f(CW0\fR.
246.Sh "$Carp::MaxArgLen"
247.IX Subsection "$Carp::MaxArgLen"
248This variable determines how many characters of each argument to a
249function to print. Use a value of \f(CW0\fR to show the full length of the
250argument.
251.PP
252Defaults to \f(CW64\fR.
253.Sh "$Carp::MaxArgNums"
254.IX Subsection "$Carp::MaxArgNums"
255This variable determines how many arguments to each function to show.
256Use a value of \f(CW0\fR to show all arguments to a function call.
257.PP
258Defaults to \f(CW8\fR.
259.Sh "$Carp::Verbose"
260.IX Subsection "$Carp::Verbose"
261This variable makes \f(CW\*(C`Carp\*(C'\fR use the \f(CW\*(C`longmess\*(C'\fR function at all times.
262This effectively means that all calls to \f(CW\*(C`carp\*(C'\fR become \f(CW\*(C`cluck\*(C'\fR and
263all calls to \f(CW\*(C`croak\*(C'\fR become \f(CW\*(C`confess\*(C'\fR.
264.PP
265Note, this is analogous to using \f(CW\*(C`use Carp 'verbose'\*(C'\fR.
266.PP
267Defaults to \f(CW0\fR.
268.SH "BUGS"
269.IX Header "BUGS"
270The Carp routines don't handle exception objects currently.
271If called with a first argument that is a reference, they simply
272call \fIdie()\fR or \fIwarn()\fR, as appropriate.