⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perldebug.pod

📁 MSYS在windows下模拟了一个类unix的终端
💻 POD
📖 第 1 页 / 共 3 页
字号:
=head1 NAMEperldebug - Perl debugging=head1 DESCRIPTIONFirst of all, have you tried using the B<-w> switch?=head1 The Perl DebuggerIf you invoke Perl with the B<-d> switch, your script runs under thePerl source debugger.  This works like an interactive Perlenvironment, prompting for debugger commands that let you examinesource code, set breakpoints, get stack backtraces, change the values ofvariables, etc.  This is so convenient that you often fire upthe debugger all by itself just to test out Perl constructsinteractively to see what they do.  For example:    $ perl -d -e 42In Perl, the debugger is not a separate program the way it usually is in thetypical compiled environment.  Instead, the B<-d> flag tells the compilerto insert source information into the parse trees it's about to hand offto the interpreter.  That means your code must first compile correctlyfor the debugger to work on it.  Then when the interpreter starts up, itpreloads a special Perl library file containing the debugger.The program will halt I<right before> the first run-time executablestatement (but see below regarding compile-time statements) and ask youto enter a debugger command.  Contrary to popular expectations, wheneverthe debugger halts and shows you a line of code, it always displays theline it's I<about> to execute, rather than the one it has just executed.Any command not recognized by the debugger is directly executed(C<eval>'d) as Perl code in the current package.  (The debuggeruses the DB package for keeping its own state information.)For any text entered at the debugger prompt, leading and trailing whitespaceis first stripped before further processing.  If a debugger commandcoincides with some function in your own program, merely precede thefunction with something that doesn't look like a debugger command, suchas a leading C<;> or perhaps a C<+>, or by wrapping it with parenthesesor braces.=head2 Debugger CommandsThe debugger understands the following commands:=over 12=item h [command]Prints out a help message.If you supply another debugger command as an argument to the C<h> command,it prints out the description for just that command.  The specialargument of C<h h> produces a more compact help listing, designed to fittogether on one screen.If the output of the C<h> command (or any command, for that matter) scrollspast your screen, precede the command with a leading pipe symbol sothat it's run through your pager, as in    DB> |hYou may change the pager which is used via C<O pager=...> command.=item p exprSame as C<print {$DB::OUT} expr> in the current package.  In particular,because this is just Perl's own C<print> function, this means that nesteddata structures and objects are not dumped, unlike with the C<x> command.The C<DB::OUT> filehandle is opened to F</dev/tty>, regardless ofwhere STDOUT may be redirected to.=item x exprEvaluates its expression in list context and dumps out the resultin a pretty-printed fashion.  Nested data structures are printed outrecursively, unlike the real C<print> function in Perl.See L<Dumpvalue> if you'd like to do this yourself.The output format is governed by multiple options described underL<"Configurable Options">.=item V [pkg [vars]]Display all (or some) variables in package (defaulting to C<main>) using a data pretty-printer (hashes show their keys and values soyou see what's what, control characters are made printable, etc.).Make sure you don't put the type specifier (like C<$>) there, justthe symbol names, like this:    V DB filename lineUse C<~pattern> and C<!pattern> for positive and negative regexes.This is similar to calling the C<x> command on each applicable var.=item X [vars]Same as C<V currentpackage [vars]>.=item TProduce a stack backtrace.  See below for details on its output.=item s [expr]Single step.  Executes until the beginning of anotherstatement, descending into subroutine calls.  If an expression issupplied that includes function calls, it too will be single-stepped.=item n [expr]Next.  Executes over subroutine calls, until the beginningof the next statement.  If an expression is supplied that includesfunction calls, those functions will be executed with stops beforeeach statement.=item rContinue until the return from the current subroutine.Dump the return value if the C<PrintRet> option is set (default).=item <CR>Repeat last C<n> or C<s> command.=item c [line|sub]Continue, optionally inserting a one-time-only breakpointat the specified line or subroutine.=item lList next window of lines.=item l min+incrList C<incr+1> lines starting at C<min>.=item l min-maxList lines C<min> through C<max>.  C<l -> is synonymous to C<->.=item l lineList a single line.=item l subnameList first window of lines from subroutine.  I<subname> maybe a variable that contains a code reference.=item -List previous window of lines.=item w [line]List window (a few lines) around the current line.=item .Return the internal debugger pointer to the line lastexecuted, and print out that line.=item f filenameSwitch to viewing a different file or C<eval> statement.  If I<filename>is not a full pathname found in the values of %INC, it is considered a regex.C<eval>ed strings (when accessible) are considered to be filenames:C<f (eval 7)> and C<f eval 7\b> access the body of the 7th C<eval>ed string(in the order of execution).  The bodies of the currently executed C<eval>and of C<eval>ed strings that define subroutines are saved and thusaccessible.=item /pattern/Search forwards for pattern (a Perl regex); final / is optional.=item ?pattern?Search backwards for pattern; final ? is optional.=item LList all breakpoints and actions.=item S [[!]regex]List subroutine names [not] matching the regex.=item tToggle trace mode (see also the C<AutoTrace> option).=item t exprTrace through execution of C<expr>.See L<perldebguts/"Frame Listing Output Examples"> for examples.=item b [line] [condition]Set a breakpoint before the given line.  If I<line> is omitted, set abreakpoint on the line about to be executed.  If a conditionis specified, it's evaluated each time the statement is reached: abreakpoint is taken only if the condition is true.  Breakpoints mayonly be set on lines that begin an executable statement.  Conditionsdon't use C<if>:    b 237 $x > 30    b 237 ++$count237 < 11    b 33 /pattern/i=item b subname [condition]Set a breakpoint before the first line of the named subroutine.  I<subname> maybe a variable containing a code reference (in this case I<condition>is not supported).=item b postpone subname [condition]Set a breakpoint at first line of subroutine after it is compiled.=item b load filenameSet a breakpoint before the first executed line of the I<filename>,which should be a full pathname found amongst the %INC values.=item b compile subnameSets a breakpoint before the first statement executed after the specifiedsubroutine is compiled.=item d [line]Delete a breakpoint from the specified I<line>.  If I<line> is omitted, deletesthe breakpoint from the line about to be executed.=item DDelete all installed breakpoints.=item a [line] commandSet an action to be done before the line is executed.  If I<line> isomitted, set an action on the line about to be executed.The sequence of steps taken by the debugger is  1. check for a breakpoint at this line  2. print the line if necessary (tracing)  3. do any actions associated with that line  4. prompt user if at a breakpoint or in single-step  5. evaluate lineFor example, this will print out $foo every time line53 is passed:    a 53 print "DB FOUND $foo\n"=item a [line]Delete an action from the specified line.  If I<line> is omitted, deletethe action on the line that is about to be executed.=item ADelete all installed actions.=item W exprAdd a global watch-expression.  We hope you know what one of theseis, because they're supposed to be obvious.  B<WARNING>: It is fartoo easy to destroy your watch expressions by accidentally omittingthe I<expr>.=item WDelete all watch-expressions.=item O booloption ...Set each listed Boolean option to the value C<1>.=item O anyoption? ...Print out the value of one or more options.=item O option=value ...Set the value of one or more options.  If the value has internalwhitespace, it should be quoted.  For example, you could set C<Opager="less -MQeicsNfr"> to call B<less> with those specific options.You may use either single or double quotes, but if you do, you mustescape any embedded instances of same sort of quote you began with,as well as any escaping any escapes that immediately precede thatquote but which are not meant to escape the quote itself.  In otherwords, you follow single-quoting rules irrespective of the quote;eg: C<O option='this isn\'t bad'> or C<O option="She said, \"Isn'tit?\"">.For historical reasons, the C<=value> is optional, but defaults to1 only where it is safe to do so--that is, mostly for Booleanoptions.  It is always better to assign a specific value using C<=>.The C<option> can be abbreviated, but for clarity probably shouldnot be.  Several options can be set together.  See L<"Configurable Options"> for a list of these.=item < ? List out all pre-prompt Perl command actions.=item < [ command ]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -