Previous: Invoking the Debugger, Up: Debugger [Contents][Index]
ËÜÀá¤Ç¤Ï¡¢¥Ç¥Ð¥Ã¥¬¤¬ÆâÉôŪ¤Ë»ÈÍѤ¹¤ë´Ø¿ô¤äÊÑ¿ô¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤Þ¤¹¡£
¤³¤ÎÊÑ¿ô¤ÎÃͤϡ¢¥Ç¥Ð¥Ã¥¬¤òµ¯Æ°¤¹¤ë¤¿¤á¤Ë¸Æ¤Ó½Ð¤¹´Ø¿ô¤Ç¤¢¤ë¡£
¤½¤ÎÃͤϡ¢²ÄÊѸĿô¤Î°ú¿ô¤ò¼è¤ë´Ø¿ô¡Ê¤¢¤ë¤¤¤Ïŵ·¿Åª¤Ë¤Ï´Ø¿ô̾¡Ë¤Ç¤¢¤ë¤³¤È¡£
¤½¤Î´Ø¿ô¤Ç¤Ê¤ó¤é¤«¤Î¥Ç¥Ð¥Ã¥¬¤ËÆþ¤ë¤È²¾Äꤹ¤ë¡£
¤³¤ÎÊÑ¿ô¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤÏdebug
¡£
Lisp¤¬´Ø¿ô¤ËÅϤ¹ºÇ½é¤Î°ú¿ô¤Ç¡¢¸Æ¤Ó½Ð¤·¤¿Íýͳ¤òɽ¤¹¡£
°ú¿ô¤Îµ¬Ìó¤Ïdebug
¤Ëµ½Ò¤·¤Æ¤¢¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢¸½ºß³èÀ¤ÊLisp´Ø¿ô¸Æ¤Ó½Ð¤·¤Î¥È¥ì¡¼¥¹¤òɽ¼¨¤¹¤ë¡£
¤³¤ì¤Ï¡¢debug
¤¬¥Ð¥Ã¥Õ¥¡‘*Backtrace*’¤ò
Ëþ¤¿¤¹¤¿¤á¤ËÍѤ¤¤ë´Ø¿ô¤Ç¤¢¤ë¡£
¤É¤Î´Ø¿ô¸Æ¤Ó½Ð¤·¤¬³èÀ¤Ç¤¢¤ë¤«¤ò
ȽÃǤ¹¤ë¤¿¤á¤Ë¥¹¥¿¥Ã¥¯¤ò»²¾È¤¹¤ëɬÍפ¬¤¢¤ë¤¿¤áC¤Ç½ñ¤¤¤Æ¤¢¤ë¡£
Ìá¤êÃͤϤĤͤËnil
¡£
°Ê²¼¤ÎÎã¤Ç¤Ï¡¢Lisp¼°¤ÇÌÀ¼¨Åª¤Ëbacktrace
¤ò¸Æ¤Ó½Ð¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤ò¥¹¥È¥ê¡¼¥àstandard-output
¤Ë½ÐÎϤ¹¤ë¡£
¤³¤³¤Ç¤Ï¥Ð¥Ã¥Õ¥¡‘backtrace-output’¤Ë½ÐÎϤ¹¤ë¡£
¥Ð¥Ã¥¯¥È¥ì¡¼¥¹¤Î³Æ¹Ô¤Ï¡¢1¤Ä¤Î´Ø¿ô¸Æ¤Ó½Ð¤·¤òɽ¤¹¡£
´Ø¿ô¤Î°ú¿ôÃͤ¹¤Ù¤Æ¤¬È½¤ì¤Ð¤½¤ì¤é¤ò¹Ô¤Ëɽ¼¨¤¹¤ë¡£
¤½¤ì¤é¤¬·×»»ÅÓÃæ¤Ç¤¢¤ì¤Ð¡¢¤½¤Î»Ý¤ò¹Ô¤Ëɽ¼¨¤¹¤ë¡£
¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Î°ú¿ô¤Ï¾Êά¤¹¤ë¡£
(with-output-to-temp-buffer "backtrace-output" (let ((var 1)) (save-excursion (setq var (eval '(progn (1+ var) (list 'testing (backtrace)))))))) ⇒ nil
----------- Buffer: backtrace-output ------------ backtrace() (list ...computing arguments...)
(progn ...) eval((progn (1+ var) (list (quote testing) (backtrace)))) (setq ...) (save-excursion ...) (let ...) (with-output-to-temp-buffer ...) eval-region(1973 2142 #<buffer *scratch*>) byte-code("... for eval-print-last-sexp ...")
eval-print-last-sexp(nil) * call-interactively(eval-print-last-sexp) ----------- Buffer: backtrace-output ------------
ʸ»ú‘*’¤Ï¡¢ È´¤±½Ð¤ë¤È¤¤Ë¥Ç¥Ð¥Ã¥¬¤òµ¯Æ°¤¹¤ë°õ¤¬ÉÕ¤¤¤Æ¤¤¤ë¥Õ¥ì¡¼¥à¤òɽ¤¹¡£
¤³¤ÎÊÑ¿ô¤¬nil
°Ê³°¤Ç¤¢¤ë¤È¡¢
¤Ä¤®¤Ëeval
¡¢apply
¡¢funcall
¤ò¸Æ¤Ó½Ð¤¹¤Þ¤¨¤Ë
¥Ç¥Ð¥Ã¥¬¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤ò»ØÄꤹ¤ë¡£
¥Ç¥Ð¥Ã¥¬¤ËÆþ¤ë¤Èdebug-on-next-call
¤ònil
¤ËÀßÄꤹ¤ë¡£
¥Ç¥Ð¥Ã¥¬¤Î¥³¥Þ¥ó¥Éd¤Ï¡¢¤³¤ÎÊÑ¿ô¤òÀßÄꤹ¤ë¤³¤È¤Çưºî¤¹¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢level¤Î¿¼¤µ¤Î¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤Ë
ÃÍflag¤Ë±þ¤¸¤Æ¥Õ¥ì¡¼¥à¤«¤éÈ´¤±½Ð¤ë¤È¤¤Î¥Ç¥Ð¥Ã¥¬¸Æ¤Ó½Ð¤·¤Î°õ¤òÉÕ¤±¤ë¡£
flag¤¬nil
°Ê³°¤Ç¤¢¤ë¤È¡¢
¤Î¤Á¤ËÅö³º¥Õ¥ì¡¼¥à¤«¤éÈ´¤±¤ë¤È¥Ç¥Ð¥Ã¥¬¤ËÆþ¤ë¡£
Èó¥í¡¼¥«¥ë¤Êæ½Ð¤ÇÅö³º¥Õ¥ì¡¼¥à¤«¤éÈ´¤±¤ë¤È¤¤Ë¤â¥Ç¥Ð¥Ã¥¬¤ËÆþ¤ë¡£
¤³¤Î´Ø¿ô¤Ï¥Ç¥Ð¥Ã¥¬¤Î¤ß¤¬»ÈÍѤ¹¤ë¡£
¤³¤ÎÊÑ¿ô¤Ï¡¢¸½ºß¤ÎÂÐÏÃŪ¥³¥Þ¥ó¥É¤Î¥Ç¥Ð¥Ã¥°¾õ¶·¤òµÏ¿¤¹¤ë¡£
¥³¥Þ¥ó¥É¤¬ÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤¿¤Ó¤Ë¡¢
¤³¤ÎÊÑ¿ô¤Ïnil
¤Ë«Çû¤µ¤ì¤ë¡£
¥Ç¥Ð¥Ã¥¬¤Ï¤³¤ÎÊÑ¿ô¤ËÀßÄꤹ¤ë¤³¤È¤Ç¡¢
Ʊ¤¸¥³¥Þ¥ó¥É¤Îµ¯Æ°Ãæ¤Ë¥Ç¥Ð¥Ã¥¬¤¬¾Í赯ư¤µ¤ì¤¿¾ì¹ç¤ËÈ÷¤¨¤Æ
¾ðÊó¤ò»Ä¤¹¤³¤È¤¬¤Ç¤¤ë¡£
¥Ç¥Ð¥Ã¥¬¤Ë¤È¤Ã¤Æ¤Ï¡¢Ä̾ï¤Î¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤Ç¤Ï¤Ê¤¯¤³¤ÎÊÑ¿ô¤ò»È¤¦ÍøÅÀ¤Ï¡¢ °Ê¹ß¤Î¥³¥Þ¥ó¥Éµ¯Æ°¤Ë¥Ç¡¼¥¿¤¬·«¤ê±Û¤µ¤Ê¤¤¤³¤È¤Ç¤¢¤ë¡£
´Ø¿ôbacktrace-frame
¤Ï¡¢Lisp¥Ç¥Ð¥Ã¥¬¤Ç»È¤¦¤³¤È¤ò°Õ¿Þ¤·¤Æ¤¤¤ë¡£
¿¼¤µframe-number¤Î¥¹¥¿¥Ã¥¯¥Õ¥ì¡¼¥à¤Ç¿Ê¹ÔÃæ¤Î·×»»¤Ë´Ø¤¹¤ë¾ðÊó¤òÊÖ¤¹¡£
Åö³º¥Õ¥ì¡¼¥à¤Ç°ú¿ô¤Îɾ²Á¤ò´°Î»¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡Ê¤¢¤ë¤¤¤Ï¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¡Ë¡¢
ÃͤÏ(nil function arg-forms…)
¡£
Åö³º¥Õ¥ì¡¼¥à¤Ç°ú¿ô¤Îɾ²Á¤ò´°Î»¤·´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ì¤Ð¡¢
ÃͤÏ(t function arg-values…)
¡£
Ìá¤êÃͤˤª¤¤¤Æ¡¢function¤Ïɾ²Á¤·¤¿¥ê¥¹¥È¤ÎCAR¤Ç¤¢¤ë¤«¡¢
¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Ç¤Ïlambda
¼°¤Ç¤¢¤ë¡£
´Ø¿ô¤Ë°ú¿ô&rest
¤¬¤¢¤ì¤Ð¡¢¥ê¥¹¥Èarg-values¤Î»Ä¤ê¤Çɽ¸½¤µ¤ì¤ë¡£
frame-number¤¬Èϰϳ°¤Ç¤¢¤ë¤È¡¢backtrace-frame
¤Ïnil
¤òÊÖ¤¹¡£