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

📄 perldebguts.1

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 1
📖 第 1 页 / 共 3 页
字号:
\&\& Enter h or \`h h\*(Aq for help.\&\& main::(\-e:1):   0\&   DB<1> sub foo { 14 }\&\&   DB<2> sub bar { 3 }\&\&   DB<3> t print foo() * bar()\& main::((eval 172):3):   print foo() + bar();\& main::foo((eval 168):2):\& main::bar((eval 170):2):\& 42.Ve.PPwith this one, once the \f(CW\*(C`o\*(C'\fRption \f(CW\*(C`frame=2\*(C'\fR has been set:.PP.Vb 11\&   DB<4> o f=2\&                frame = \*(Aq2\*(Aq\&   DB<5> t print foo() * bar()\& 3:      foo() * bar()\& entering main::foo\&  2:     sub foo { 14 };\& exited main::foo\& entering main::bar\&  2:     sub bar { 3 };\& exited main::bar\& 42.Ve.PPBy way of demonstration, we present below a laborious listingresulting from setting your \f(CW\*(C`PERLDB_OPTS\*(C'\fR environment variable tothe value \f(CW\*(C`f=n N\*(C'\fR, and running \fIperl \-d \-V\fR from the command line.Examples use various values of \f(CW\*(C`n\*(C'\fR are shown to give you a feelfor the difference between settings.  Long those it may be, thisis not a complete listing, but only excerpts..IP "1." 4.Vb 10\&  entering main::BEGIN\&   entering Config::BEGIN\&    Package lib/Exporter.pm.\&    Package lib/Carp.pm.\&   Package lib/Config.pm.\&   entering Config::TIEHASH\&   entering Exporter::import\&    entering Exporter::export\&  entering Config::myconfig\&   entering Config::FETCH\&   entering Config::FETCH\&   entering Config::FETCH\&   entering Config::FETCH.Ve.IP "2." 4.Vb 10\&  entering main::BEGIN\&   entering Config::BEGIN\&    Package lib/Exporter.pm.\&    Package lib/Carp.pm.\&   exited Config::BEGIN\&   Package lib/Config.pm.\&   entering Config::TIEHASH\&   exited Config::TIEHASH\&   entering Exporter::import\&    entering Exporter::export\&    exited Exporter::export\&   exited Exporter::import\&  exited main::BEGIN\&  entering Config::myconfig\&   entering Config::FETCH\&   exited Config::FETCH\&   entering Config::FETCH\&   exited Config::FETCH\&   entering Config::FETCH.Ve.IP "3." 4.Vb 10\&  in  $=main::BEGIN() from /dev/null:0\&   in  $=Config::BEGIN() from lib/Config.pm:2\&    Package lib/Exporter.pm.\&    Package lib/Carp.pm.\&   Package lib/Config.pm.\&   in  $=Config::TIEHASH(\*(AqConfig\*(Aq) from lib/Config.pm:644\&   in  $=Exporter::import(\*(AqConfig\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from /dev/null:0\&    in  $=Exporter::export(\*(AqConfig\*(Aq, \*(Aqmain\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from li\&  in  @=Config::myconfig() from /dev/null:0\&   in  $=Config::FETCH(ref(Config), \*(Aqpackage\*(Aq) from lib/Config.pm:574\&   in  $=Config::FETCH(ref(Config), \*(Aqbaserev\*(Aq) from lib/Config.pm:574\&   in  $=Config::FETCH(ref(Config), \*(AqPERL_VERSION\*(Aq) from lib/Config.pm:574\&   in  $=Config::FETCH(ref(Config), \*(AqPERL_SUBVERSION\*(Aq) from lib/Config.pm:574\&   in  $=Config::FETCH(ref(Config), \*(Aqosname\*(Aq) from lib/Config.pm:574\&   in  $=Config::FETCH(ref(Config), \*(Aqosvers\*(Aq) from lib/Config.pm:574.Ve.IP "4." 4.Vb 10\&  in  $=main::BEGIN() from /dev/null:0\&   in  $=Config::BEGIN() from lib/Config.pm:2\&    Package lib/Exporter.pm.\&    Package lib/Carp.pm.\&   out $=Config::BEGIN() from lib/Config.pm:0\&   Package lib/Config.pm.\&   in  $=Config::TIEHASH(\*(AqConfig\*(Aq) from lib/Config.pm:644\&   out $=Config::TIEHASH(\*(AqConfig\*(Aq) from lib/Config.pm:644\&   in  $=Exporter::import(\*(AqConfig\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from /dev/null:0\&    in  $=Exporter::export(\*(AqConfig\*(Aq, \*(Aqmain\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from lib/\&    out $=Exporter::export(\*(AqConfig\*(Aq, \*(Aqmain\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from lib/\&   out $=Exporter::import(\*(AqConfig\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from /dev/null:0\&  out $=main::BEGIN() from /dev/null:0\&  in  @=Config::myconfig() from /dev/null:0\&   in  $=Config::FETCH(ref(Config), \*(Aqpackage\*(Aq) from lib/Config.pm:574\&   out $=Config::FETCH(ref(Config), \*(Aqpackage\*(Aq) from lib/Config.pm:574\&   in  $=Config::FETCH(ref(Config), \*(Aqbaserev\*(Aq) from lib/Config.pm:574\&   out $=Config::FETCH(ref(Config), \*(Aqbaserev\*(Aq) from lib/Config.pm:574\&   in  $=Config::FETCH(ref(Config), \*(AqPERL_VERSION\*(Aq) from lib/Config.pm:574\&   out $=Config::FETCH(ref(Config), \*(AqPERL_VERSION\*(Aq) from lib/Config.pm:574\&   in  $=Config::FETCH(ref(Config), \*(AqPERL_SUBVERSION\*(Aq) from lib/Config.pm:574.Ve.IP "5." 4.Vb 10\&  in  $=main::BEGIN() from /dev/null:0\&   in  $=Config::BEGIN() from lib/Config.pm:2\&    Package lib/Exporter.pm.\&    Package lib/Carp.pm.\&   out $=Config::BEGIN() from lib/Config.pm:0\&   Package lib/Config.pm.\&   in  $=Config::TIEHASH(\*(AqConfig\*(Aq) from lib/Config.pm:644\&   out $=Config::TIEHASH(\*(AqConfig\*(Aq) from lib/Config.pm:644\&   in  $=Exporter::import(\*(AqConfig\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from /dev/null:0\&    in  $=Exporter::export(\*(AqConfig\*(Aq, \*(Aqmain\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from lib/E\&    out $=Exporter::export(\*(AqConfig\*(Aq, \*(Aqmain\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from lib/E\&   out $=Exporter::import(\*(AqConfig\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from /dev/null:0\&  out $=main::BEGIN() from /dev/null:0\&  in  @=Config::myconfig() from /dev/null:0\&   in  $=Config::FETCH(\*(AqConfig=HASH(0x1aa444)\*(Aq, \*(Aqpackage\*(Aq) from lib/Config.pm:574\&   out $=Config::FETCH(\*(AqConfig=HASH(0x1aa444)\*(Aq, \*(Aqpackage\*(Aq) from lib/Config.pm:574\&   in  $=Config::FETCH(\*(AqConfig=HASH(0x1aa444)\*(Aq, \*(Aqbaserev\*(Aq) from lib/Config.pm:574\&   out $=Config::FETCH(\*(AqConfig=HASH(0x1aa444)\*(Aq, \*(Aqbaserev\*(Aq) from lib/Config.pm:574.Ve.IP "6." 4.Vb 10\&  in  $=CODE(0x15eca4)() from /dev/null:0\&   in  $=CODE(0x182528)() from lib/Config.pm:2\&    Package lib/Exporter.pm.\&   out $=CODE(0x182528)() from lib/Config.pm:0\&   scalar context return from CODE(0x182528): undef\&   Package lib/Config.pm.\&   in  $=Config::TIEHASH(\*(AqConfig\*(Aq) from lib/Config.pm:628\&   out $=Config::TIEHASH(\*(AqConfig\*(Aq) from lib/Config.pm:628\&   scalar context return from Config::TIEHASH:   empty hash\&   in  $=Exporter::import(\*(AqConfig\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from /dev/null:0\&    in  $=Exporter::export(\*(AqConfig\*(Aq, \*(Aqmain\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from lib/Exporter.pm:171\&    out $=Exporter::export(\*(AqConfig\*(Aq, \*(Aqmain\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from lib/Exporter.pm:171\&    scalar context return from Exporter::export: \*(Aq\*(Aq\&   out $=Exporter::import(\*(AqConfig\*(Aq, \*(Aqmyconfig\*(Aq, \*(Aqconfig_vars\*(Aq) from /dev/null:0\&   scalar context return from Exporter::import: \*(Aq\*(Aq.Ve.PPIn all cases shown above, the line indentation shows the call tree.If bit 2 of \f(CW\*(C`frame\*(C'\fR is set, a line is printed on exit from asubroutine as well.  If bit 4 is set, the arguments are printedalong with the caller info.  If bit 8 is set, the arguments areprinted even if they are tied or references.  If bit 16 is set, thereturn value is printed, too..PPWhen a package is compiled, a line like this.PP.Vb 1\&    Package lib/Carp.pm..Ve.PPis printed with proper indentation..SH "Debugging regular expressions".IX Header "Debugging regular expressions"There are two ways to enable debugging output for regular expressions..PPIf your perl is compiled with \f(CW\*(C`\-DDEBUGGING\*(C'\fR, you may use the\&\fB\-Dr\fR flag on the command line..PPOtherwise, one can \f(CW\*(C`use re \*(Aqdebug\*(Aq\*(C'\fR, which has effects atcompile time and run time.  It is not lexically scoped..Sh "Compile-time output".IX Subsection "Compile-time output"The debugging output at compile time looks like this:.PP.Vb 10\&  Compiling REx \`[bc]d(ef*g)+h[ij]k$\*(Aq\&  size 45 Got 364 bytes for offset annotations.\&  first at 1\&  rarest char g at 0\&  rarest char d at 0\&     1: ANYOF[bc](12)\&    12: EXACT <d>(14)\&    14: CURLYX[0] {1,32767}(28)\&    16:   OPEN1(18)\&    18:     EXACT <e>(20)\&    20:     STAR(23)\&    21:       EXACT <f>(0)\&    23:     EXACT <g>(25)\&    25:   CLOSE1(27)\&    27:   WHILEM[1/1](0)\&    28: NOTHING(29)\&    29: EXACT <h>(31)\&    31: ANYOF[ij](42)\&    42: EXACT <k>(44)\&    44: EOL(45)\&    45: END(0)\&  anchored \`de\*(Aq at 1 floating \`gh\*(Aq at 3..2147483647 (checking floating) \&        stclass \`ANYOF[bc]\*(Aq minlen 7 \&  Offsets: [45]\&        1[4] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 5[1]\&        0[0] 12[1] 0[0] 6[1] 0[0] 7[1] 0[0] 9[1] 8[1] 0[0] 10[1] 0[0]\&        11[1] 0[0] 12[0] 12[0] 13[1] 0[0] 14[4] 0[0] 0[0] 0[0] 0[0]\&        0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 18[1] 0[0] 19[1] 20[0]  \&  Omitting $\` $& $\*(Aq support..Ve.PPThe first line shows the pre-compiled form of the regex.  The secondshows the size of the compiled form (in arbitrary units, usually4\-byte words) and the total number of bytes allocated for theoffset/length table, usually 4+\f(CW\*(C`size\*(C'\fR*8.  The next line shows thelabel \fIid\fR of the first node that does a match..PPThe.PP.Vb 2\&  anchored \`de\*(Aq at 1 floating \`gh\*(Aq at 3..2147483647 (checking floating) \&        stclass \`ANYOF[bc]\*(Aq minlen 7.Ve.PPline (split into two lines above) contains optimizerinformation.  In the example shown, the optimizer found that the match should contain a substring \f(CW\*(C`de\*(C'\fR at offset 1, plus substring \f(CW\*(C`gh\*(C'\fRat some offset between 3 and infinity.  Moreover, when checking forthese substrings (to abandon impossible matches quickly), Perl will checkfor the substring \f(CW\*(C`gh\*(C'\fR before checking for the substring \f(CW\*(C`de\*(C'\fR.  Theoptimizer may also use the knowledge that the match starts (at the\&\f(CW\*(C`first\*(C'\fR \fIid\fR) with a character class, and no string shorter than 7 characters can possibly match..PPThe fields of interest which may appear in this line are.ie n .IP """anchored""\fR \fI\s-1STRING\s0\fR \f(CW""at""\fR \fI\s-1POS\s0" 4.el .IP "\f(CWanchored\fR \fI\s-1STRING\s0\fR \f(CWat\fR \fI\s-1POS\s0\fR" 4.IX Item "anchored STRING at POS".PD 0.ie n .IP """floating""\fR \fI\s-1STRING\s0\fR \f(CW""at""\fR \fI\s-1POS1\s0..POS2" 4.el .IP "\f(CWfloating\fR \fI\s-1STRING\s0\fR \f(CWat\fR \fI\s-1POS1\s0..POS2\fR" 4.IX Item "floating STRING at POS1..POS2".PDSee above..ie n .IP """matching floating/anchored""" 4.el .IP "\f(CWmatching floating/anchored\fR" 4.IX Item "matching floating/anchored"Which substring to check first..ie n .IP """minlen""" 4.el .IP "\f(CWminlen\fR" 4.IX Item "minlen"The minimal length of the match..ie n .IP """stclass""\fR \fI\s-1TYPE\s0" 4.el .IP "\f(CWstclass\fR \fI\s-1TYPE\s0\fR" 4.IX Item "stclass TYPE"Type of first matching node..ie n .IP """noscan""" 4.el .IP "\f(CWnoscan\fR" 4.IX Item "noscan"Don't scan for the found substrings..ie n .IP """isall""" 4.el .IP "\f(CWisall\fR" 4.IX Item "isall"Means that the optimizer information is all that the regularexpression contains, and thus one does not need to enter the regex engine atall..ie n .IP """GPOS""" 4.el .IP "\f(CWGPOS\fR" 4.IX Item "GPOS"Set if the pattern contains \f(CW\*(C`\eG\*(C'\fR..ie n .IP """plus""" 4.el .IP "\f(CWplus\fR" 4.IX Item "plus"Set if the pattern starts with a repeated char (as in \f(CW\*(C`x+y\*(C'\fR)..ie n .IP """implicit""" 4.el .IP "\f(CWimplicit\fR" 4.IX Item "implicit"Set if the pattern starts with \f(CW\*(C`.*\*(C'\fR..ie n .IP """with eval""" 4.el .IP "\f(CWwith eval\fR" 4.IX Item "with eval"Set if the pattern contain eval-groups, such as \f(CW\*(C`(?{ code })\*(C'\fR and\&\f(CW\*(C`(??{ code })\*(C'\fR..ie n .IP """anchored(TYPE)""" 4.el .IP "\f(CWanchored(TYPE)\fR" 4.IX Item "anchored(TYPE)"If the pattern may match only at a handful of places, (with \f(CW\*(C`TYPE\*(C'\fRbeing \f(CW\*(C`BOL\*(C'\fR, \f(CW\*(C`MBOL\*(C'\fR, or \f(CW\*(C`GPOS\*(C'\fR.  See the table below..PPIf a substring is known to match at end-of-line only, it may befollowed by \f(CW\*(C`$\*(C'\fR, as in \f(CW\*(C`floating \`k\*(Aq$\*(C'\fR..PPThe optimizer-specific information is used to avoid entering (a slow) regexengine on strings that will not definitely match.  If the \f(CW\*(C`isall\*(C'\fR flagis set, a call to the regex engine may be avoided even when the optimizerfound an appropriate place for the match..PPAbove the optimizer section is the list of \fInodes\fR of the compiledform of the regex.  Each line has format.PP\&\f(CW\*(C`\*(C'\fR.Sh "Types of nodes".IX Subsection "Types of nodes"Here are the possible types, with short descriptions:.PP.Vb 1\&    # TYPE arg\-description [num\-args] [longjump\-len] DESCRIPTION\&\&    # Exit points\&    END         no      End of program.\&    SUCCEED     no      Return from a subroutine, basically.\&\&    # Anchors:\&    BOL         no      Match "" at beginning of line.\&    MBOL        no      Same, assuming multiline.\&    SBOL        no      Same, assuming singleline.\&    EOS         no      Match "" at end of string.\&    EOL         no      Match "" at end of line.\&    MEOL        no      Same, assuming multiline.\&    SEOL        no      Same, assuming singleline.\&    BOUND       no      Match "" at any word boundary\&    BOUNDL      no      Match "" at any word boundary\&    NBOUND      no      Match "" at any word non\-boundary\&    NBOUNDL     no      Match "" at any word non\-boundary\&    GPOS        no      Matches where last m//g left off.\&

⌨️ 快捷键说明

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