¥H«ü¥O¦C¬°¥Dªº°£¿ù¨ç¼Æ¥i¥Î©ó¦UºØ¤£¦P¥¥x¡A¨ä¥\¯à¥i¦Cªí¦p¤U¡G
»yªk ¥\¯à dbstop at line# in filename ³]©w¤¤Â_ÂI¡]Break Points¡^
¡]line# ¥Nªí¦æ¸¹¡Afilename ¥NªíÀɮצWºÙ¡^dbclear at line# in filename ²M°£¤¤Â_ÂI
¡]line#¥Nªí¦æ¸¹¡Afilename ¥NªíÀɮצWºÙ¡^dbstop if warning Y¹J¨ì¤U¦C±¡ªp¡A«h¼È°±µ{¦¡°õ¦æ¡G
- ĵ§i¡]Warning¡^
- ¿ù»~¡]Error¡^
- «D¼ÆÈ/µL½a¤j¡]NaN/Inf¡^
dbstop if error dbstop if naninf dbstop if infnan dbcont ±q¼È°±ª¬ºAÄ~Äò°õ¦æ dbstack ¦C¥X¨ç¼Æ©I¥s¹Lµ{¤¤ªº°ïÅ| dbstatus filename ¦C¥X¬YÀɮתº©Ò¦³¤¤Â_ÂI
¡]filename ¥NªíÀɮצWºÙ¡^dbstep n °õ¦æ n ¦C«ü¥O dbtype filename ¦C¥XÀɮפº®e¡]¥]§t¨C¦C½s¸¹¡^
¡]filename ¥NªíÀɮצWºÙ¡^dbdown ¦V¤U¶i¤J§½³¡ªº¤u§@ªÅ¶¡ dbup ¦V¤W¶i¤J©I¥sºÝªº¤u§@ªÅ¶¡ dbquit Â÷¶}°£¿ù¼Ò¦¡ ¦b¤Wzªº°£¿ù«ü¥O¤¤¡A³Ì«nªº«ü¥O´N¬O dbstop¡A§ÚÌ¥i¥H§Q¥Î³oÓ«ü¥O¨Ó«ü©wµ{¦¡½Xªº¤¤Â_ÂI¡]Break Points¡^¡A¨Ï±o MATLAB ¥i¦b¤¤Â_ÂI«e°±¤î°õ¦æ¡A¥HÅý§Ú̯àÀˬd¦UÓ§½³¡ÅܼƪºÈ¡Cdbstop ªº¤@¯ë®æ¦¡¤Î¬ÛÃö»¡©ú¥i¦Cªí¦p¤U¡G
«ü¥O®æ¦¡ »¡©ú dbstop in filename at line# °±¤î°õ¦æ©ó¬YÀɮתº¬Y¦æ
¡]filename ¥NªíÀɮצWºÙ¡Aline#¥Nªí¦æ¸¹¡^dbstop in filename at subfunction °±¤î°õ¦æ©ó¬YÀɮתº¦¸¨ç¼Æ
¡]filename ¥NªíÀɮצWºÙ¡^dbstop in filename °±¤î°õ¦æ©ó¬YÀÉ®×
¡]filename ¥NªíÀɮצWºÙ¡^dbstop if error Y¥X²{¿ù»~¡A«h¼È°±µ{¦¡°õ¦æ¡A¨Ã°±¯d¦bµo¥Í¿ù»~ªº¤u§@ªÅ¶¡ dbstop if warning Y¥X²{ĵ§i¡A«h¼È°±µ{¦¡°õ¦æ¡A¨Ã°±¯d¦bµo¥Íĵ§iªº¤u§@ªÅ¶¡ dbstop if naninf Y¥X²{ nan ©Î inf¡A«h¼È°±µ{¦¡°õ¦æ¡A¨Ã°±¯d¦bµo¥Í nan ©Î infªº¤u§@ªÅ¶¡ dbstop if infnan ¡]¦P¤W¡^ ¦b¤Wªí¤¤¡Ain¡Bat ©M if ³£¥i¥H¬Ù²¤¡A©Ò¥H¡udbstop in testfunc at 15¡v¥i¥H²¼g¦¨¡udbstop testfunc 15¡v¡C
¤@¥¹µ{¦¡°±¤î°õ¦æ«á¡AMATLAB ´N¶i¤J©Ò¿×ªº ¡u°£¿ù¼Ò¦¡¡v¡]Debugging Mode¡^¡A«ü¥O¦C¤W·|¥X²{¡§k>>¡¨ªº´£¥Ü¸¹¡A¥Nªí¦¹®É¥i¥H±µ¨üÁä½L¿é¤J¡C¦pªG±z¨Ï¥Îªº¥¥x¬O PC ©Î MAC¡A¦P®É¤]·|¥X²{ M ÀÉ®×°£¿ù¾¹¡]M-file Debugger¡^¡A¥iª½±µÀ˵øµ{¦¡¥X¿ùªº³¡¤À¡C¦³Ãö©ó M ÀÉ®×°£¿ù¾¹ªº²Ó¸`¡A±N·|¦b¤U¤@¸`¸Ô²Ó¤¶²Ð¡A¥»¸`«h¥H¤¶²Ð«ü¥O¦Cªº°£¿ù«ü¥O¬°¥D¡C
¶i¤J°£¿ù¼Ò¦¡«á¡A§ÚÌ¥iÀˬd¥ô¦óÅܼƪºÈ¡A¤]¥i¥H°õ¦æ¨ä¥L¥ô¦ó«ü¥O©Î¤â½Z¡]Scripts¡^¡CÀˬd§¹²¦«á¡A¥i¯à±Ä¨úªº°Ê§@¥i¦CÁ|¦p¤U¡G
«ü¥O®æ¦¡ »¡©ú dbcont Ä~Äò°õ¦æµ{¦¡ dbstep n °õ¦æ n ¦Cµ{¦¡½X dbtype filename ¦C¥Xµ{¦¡½X
¡]filename ¥Nªíµ{¦¡ÀɮצWºÙ¡^dbdown ¦V¤U¤Á´«¦Ü¥t¤@Ó¤u§@ªÅ¶¡ dbup ¦V¤W¤Á´«¦Ü¥t¤@Ó¤u§@ªÅ¶¡ dbstack ¦C¥X¨ç¼Æ©I¥s¹Lµ{¤¤ªº°ïÅ| dbquit ¸õ¥X°£¿ù¼Ò¦¡ ¦b¤Wªí¤¤¡A³Ì±`¥Î¨ìªº«ü¥O¬O dbstep¡A¥i¥HÅý§Ṳ́@¦¸°õ¦æ¤@¦C©Î¦h¦Cµ{¦¡½X¡A©Î¬O¶i¤J©Î¸õ¥X¤@Ó«ü¥Oªº¤º³¡µ{¦¡½X¡A¨ä®æ¦¡¥i¦CÁ|¦p¤U¡G
«ü¥O®æ¦¡ »¡©ú dbstep °õ¦æ¤U¤@¦Cµ{¦¡½X dbstep n °õ¦æ¤U n ¦Cµ{¦¡½X dbstep in ¶i¤J¤U¤@¦C«ü¥Oªºµ{¦¡½X dbstep out ¸õ¥X¥Ø«e«ü¥Oªºµ{¦¡½X ¨ä¥L¦U°£¿ù«ü¥Oªº®æ¦¡¸û©T©w¡A±ý¨ú±o§ó¦h¸ê°T¡A¥i¥Ñ MATLAB ½u¤W¤ä´©¨ú±o¡C
¥t¥~¡Adbclear ¤Î dbstatus ¥i¥Î©ó¤@¯ë¼Ò¦¡¤Î°£¿ù¼Ò¦¡¡Cdbclear ¥Î©ó¨ú®ø¤¤Â_ÂI¡A©M dbstop ªº¥\¯à«ê¦n¬Û¤Ï¡Adbclear ªº¨Ï¥Î®æ¦¡¥i°Ñ¨£¥»¸`ªº²Ä¤@Óªí®æ¡]§Y dbstop ªº¨Ï¥Î®æ¦¡¡^¡A¥u»Ý±N©Ò¦³ªº dbstop §ï¬° dbclear §Y¥i¡C
¦¹¥~¡AYn²M°£©Ò¦³ªº¤¤Â_ÂI¡A¥i¥Î dbclear all¡C
dbstatus ¥i¦C¥X©Ò¦³ªº¤¤Â_ÂI¡A¨ä®æ¦¡¦p¤U¡G
«ü¥O®æ¦¡ »¡©ú dbstatus ¦C¥X©Ò¦³¤¤Â_ÂI dbstatus filename ¦C¥X¦b¤@Àɮפ¤ªº¤¤Â_ÂI
¡]filename ¥Nªíµ{¦¡ÀɮצWºÙ¡^s = dbstatus(¡K) ±N¤¤Â_ÂIªº¸ê°T¶Ç¦^ÅÜ¼Æ s ¥H¤U±N¥H¹ê¨Ò¨Ó»¡©ú³o¨Ç°£¿ù«ü¥Oªº¹B¥Î¡C
°²³]§ÚÌnpºâ¤@¦V¶qªºË¼Æ©M¡A¥i¨Ï¥Î¦WºÙ¬° recipsum.m ªº¨ç¼Æ¡A¦p¤U¡G
>> type recipsum function out = recipsum(x) recip = reciproc(x); out = sum(recip); function output = reciproc(input) output = 1./x; ¦¹¨ç¼Æ¥]§t¤@¿ù»~¡A°õ¦æ®É§Y·|¥X²{¡G
>> recipsum([1 2 3]) Undefined function or variable 'x'. Error in recipsum>reciproc (line 7) output = 1./x; Error in recipsum (line 3) recip = reciproc(x);
¦¹¿ù»~°T®§¬O¥Ñ¦¸¨ç¼Æ reciproc ©Ò²£¥Í¡C¬°¤F°»¿ù¤è«K¡A·í¿ù»~°T®§µo¥Í®É¡A§ÚÌ¥i¥HÅý MATLAB ¤´µM¯à°÷°±¯d¦b²£¥Í¿ù»~°T®§ªº¨ç¼Æ¡A©Ò¨Ï¥Îªº«ü¥O¦p¤U¡G
>> dbstop if error ¥i¥Î dbstop ¨Ó½T»{©Ò«Ø¥ßªº¤¤Â_±ø¥ó¡G
>> dbstatus Stop if error. ¦¹®É¥i¦A©I¥sì¨ç¼Æ¡G
>> recipsum([1 2 3]) MATLAB ³o¦¸·|°±¦b¿ù»~µo¥Íªºµ{¦¡½X¡A¨Ã±N¤§ÅV¥Ü©ó MATLAB °£¿ù¾¹¡]¤]¬O MATLAB ½s¿è¾¹¡^¡A¦p¤U¡G
¦¹®É§ÚÌ¥i¦b«ü¥Oµøµ¡¨Ï¥Î dbstack ¨ÓÅã¥Ü MATLAB ©Ò¦bªº¨ç¼Æ¡G
k>> dbstack > In recipsum>reciproc (line 7) In recipsum (line 3) ¥ç¥i¥Î dbtype ¨ÓÅã¥Üµ{¦¡½X¡G
k>> dbtype recipsum 1 function out = recipsum(x) 2 3 recip = reciproc(x); 4 out = sum(recip); 5 6 function output = reciproc(input) 7 output = 1./x; «Ü©úÅã¦a¡A¦b reciproc ¦¸¨ç¼Æ¤¤ªºÅÜ¼Æ x ¨Ã¥¼©w¸q¡A¦]¦¹§ÚÌ¥i¦b°£¿ù¾¹¤¤ª½±µ±N x §ï¦¨ input ¡A¨ÃÀx¦s¦¹Àɮשó recipsum1.m¡A´N§¹¦¨¤F°£¿ùªº¤u§@¡C¦¹®É¦A¶i¦æ¨ç¼Æ©I¥s¡A´N¥i±o¨ì¥¿½Tµª®×¡G
k>> dbquit % Â÷¶}°£¿ù¼Ò¦¡ >> recipsum1([1 2 3]) ans = 1.8333
¤W¨Òªº¿ù»~¬O¬Û·íÅã¦Ó©ö¨£¡A¦ý¦pªG¹J¨ì¸û½ÆÂø¿ù»~¡A´N¥²»Ý¦bµ{¦¡½X°±¤î«á¡A¦b«ü¥O¦C³v¤@Àˬd¥i¯à¥X°ÝÃDªºÅܼơAª½¨ì§ä¥X°ÝÃD©Ò¦b¤§«á¡A¦A¶i¦æµ{¦¡½Xªº×§ï¡G
- ª½±µ¨Ï¥Î MATLAB °£¿ù¾¹¡]¤]¬O½s¿è¾¹¡^¶i¦æ½sסC
- ¨Ï¥Î dbquit ¸õÂ÷°£¿ù¼Ò¦¡¡A¦A§Q¥Î¨ä¥L¤å¦r½s¿è³nÅé¶i¦æµ{¦¡×§ï¡C
¦¹¥~¡A·íµ{¦¡¼È°±°õ¦æ©ó¤@Ó¨ç¼Æ®É¡A§Ṳ́]¥i¥H¨Ï¥Î dbup ¤Î dbdown ¨Ó¸õ¨ì¤£¦Pªº¤u§@ªÅ¶¡¡A¥H«KÀ˵ø¦UÅܼơC
°²³]¦b recipsum.m ªº¿ù»~¤w×¥¿§¹²¦¡A×¥¿«áªºÀɮ׬O recipsum1.m¡A§ÚÌÁÙ¬O¥i¯à¹J¨ì¨ä¥L°ÝÃD¡A¨Ò¦p¡G
>> recipsum1([2 0 2]) ans = Inf ¦¹®É¶Ç¦^µª®×¬° Inf¡]µL½a¤j¡^¡A³o¨Ã¤£¬O§Ú̹w´Áªºµª®×¡]°²³]§Ų́èS¦³¹w´Á¨ì¨Ï¥ÎªÌ·|¿é¤J§t¦³ 0 ªº¦V¶q¡^¡C¬°±´¬d¿ù»~©Ò¦b¡A§Ú̳]¥ß¥t¤@Ó¤¤Â_±ø¥ó¡A¨Ã¦A¦¸©I¥s¨ç¼Æ¡G
>> dbstop if naninf >> recipsum1([2 0 2]) NaN/Inf breakpoint hit for recipsum1>reciproc on line 7. 7 output = 1./input; «Ü©úÅã¦a¡A¦bpºâ 0 ªºË¼Æ®É¡A¥X²{¤F Inf¡C§ÚÌ°²³]¦b¿é¤J¬° 0 ®É¡A¨ä˼Ƥ£p¡A«hµ{¦¡½X¥i×¥¿¦p¤U¡G
k>> dbquit % Â÷¶}°£¿ù¼Ò¦¡ >> type recipsum2 function out = recipsum(x) recip = reciproc(x); out = sum(recip); function output = reciproc(input) input(find(input==0)) = []; % Eliminate "0" elements output = 1./input; ¦¹®É¦A©I¥s¨ç¼Æ¡A´N¥i¥H²£¥Í§Ú̹w´Áªºµ²ªG¡G
>> recipsum2([2 0 2]) ans = 1
MATLABµ{¦¡³]p¡G¤Jªù½g![]()