Next: Invocation, Previous: Summary, Up: Top [Contents][Index]
¤½¤Îµ¤¤Ë¤Ê¤ì¤Ð¡¢ ¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤ò»È¤Ã¤ÆGDB¤Î¤¹¤Ù¤Æ¤ò³Ø½¬¤¹¤ë¤³¤È¤â¤â¤Á¤í¤ó²Äǽ¤Ç¤¹¤¬¡¢ GDB¤ò»È¤¤»Ï¤á¤ë¤Ë¤Ï¡¢ ¤¤¤¯¤Ä¤«¤Î¥³¥Þ¥ó¥É¤òÃΤäƤ¤¤ì¤Ð½½Ê¬¤Ç¤¹¡£ ËܾϤǤϡ¢¤½¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£
ÈÆÍÑŪ¤Ê¥Þ¥¯¥í¡¦¥×¥í¥»¥Ã¥µ¤Ç¤¢¤ëGNU m4
¤Ë¤Ï¡¢
¤«¤Ä¤Æ¡¢
¤Þ¤ÀÀµ¼°¤Ê¥Ð¡¼¥¸¥ç¥ó¤¬¥ê¥ê¡¼¥¹¤µ¤ì¤ë°ÊÁ°¤Ë¡¢
¼¡¤Î¤è¤¦¤ÊÉÔ¶ñ¹ç¤¬¤¢¤ê¤Þ¤·¤¿¡£
°úÍѤòɽ¤ï¤¹Ê¸»úÎó¤ò¥Ç¥Õ¥©¥ë¥È¤È¤Ï°Û¤Ê¤ë¤â¤Î¤ËÊѹ¹¤¹¤ë¤È¡¢
¤¢¤ë¥Þ¥¯¥íÄêµÁ¤ÎÆâÉô¤ËÆþ¤ì»Ò¾õÂ֤ˤʤäƤ¤¤ë¾¤Î¥Þ¥¯¥íÄêµÁ¤ò¼è¤ê½Ð¤¹¤¿¤á¤Ë»È¤ï¤ì¤ë¥³¥Þ¥ó¥É¤¬¡¢
Àµ¤·¤¯Æ°ºî¤·¤Ê¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ë¡¢
¤È¤¤¤¦ÉÔ¶ñ¹ç¤Ç¤¹¡£
°Ê²¼¤Îû¤¤m4
¥»¥Ã¥·¥ç¥ó¤Ç¤Ï¡¢
0000
¤ËŸ³«¤µ¤ì¤ë¥Þ¥¯¥ífoo
¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£
¤µ¤é¤Ë¡¢
m4
¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥Édefn
¤ò»È¤Ã¤Æ¡¢
¥Þ¥¯¥íbar
¤ËƱ°ì¤ÎÄêµÁ¤òÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£
¤È¤³¤í¤¬¡¢
°úÍѤγ«»Ïʸ»úÎó¤ò<QUOTE>
¤Ë¡¢
°úÍѤνªÎ»Ê¸»úÎó¤ò<UNQUOTE>
¤Ë¤½¤ì¤¾¤ìÊѹ¹¤¹¤ë¤È¡¢
Á´¤¯Æ±°ì¤Î¼ê½ç¤Ç¿·¤·¤¤Æ±µÁ¸ìbaz
¤òÄêµÁ¤·¤è¤¦¤È¤·¤Æ¤â¡¢
¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¤Î¤Ç¤¹¡£
$ cd gnu/m4 $ ./m4 define(foo,0000) foo 0000 define(bar,defn(‘foo’)) bar 0000 changequote(<QUOTE>,<UNQUOTE>) define(baz,defn(<QUOTE>foo<UNQUOTE>)) baz C-d m4: End of input: 0: fatal error: EOF in string
¤³¤³¤ÇGDB¤ò»È¤Ã¤Æ¡¢ ²¿¤¬µ¯¤³¤Ã¤Æ¤¤¤ë¤Î¤«Ä´¤Ù¤Æ¤ß¤Þ¤·¤ç¤¦¡£
$ gdb m4 GDB is free software and you are welcome to distribute copies of it under certain conditions; type "show copying" to see the conditions. There is absolutely no warranty for GDB; type "show warranty" for details. GDB 4.18, Copyright 1999 Free Software Foundation, Inc... (gdb)
GDB¤Ï¡¢ ɬÍפʤȤ¤Ë¾¤Î¥·¥ó¥Ü¥ë¤ò¸«¤Ä¤±¤ë¤Î¤ËºÇÄã¸ÂɬÍפȤʤ륷¥ó¥Ü¥ë¾ðÊó¤·¤«ÆÉ¤ß¹þ¤ß¤Þ¤»¤ó¡£ ¤½¤Î·ë²Ì¡¢ ºÇ½é¤Î¥×¥í¥ó¥×¥È¤¬É½¼¨¤µ¤ì¤ë¤Þ¤Ç¤Î»þ´Ö¤¬¶Ë¤á¤ÆÃ»¤¤¤Î¤Ç¤¹¡£ ¤³¤³¤Ç¡¢ ½ÐÎϾðÊ󤬤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Î»æÉý¤Ë¼ý¤Þ¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¡¢ GDB¤ËÂФ·¤ÆÉ½¼¨Éý¤òÄ̾ï¤è¤ê¤â¶¹¤¯¤¹¤ë¤è¤¦»Ø¼¨¤ò½Ð¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
(gdb) set width 70
m4
¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥É¤Ç¤¢¤ëchangequote
¤¬¤É¤Î¤è¤¦¤Ëưºî¤¹¤ë¤Î¤«¤òÄ´¤Ù¤Æ¤ß¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¥½¡¼¥¹¤ò¸«¤ë¤È¡¢
´ØÏ¢¤¹¤ë¥µ¥Ö¥ë¡¼¥Á¥ó¤¬m4_changequote
¤Ç¤¢¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£
¤½¤³¤Ç¡¢
GDB¤Îbreak
¥³¥Þ¥ó¥É¤Ç¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤òÀßÄꤷ¤Æ¤ß¤Þ¤¹¡£
(gdb) break m4_changequote Breakpoint 1 at 0x62f4: file builtin.c, line 879.
run
¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¡¢
GDB¤Î´ÉÍý²¼¤Çm4
¤òÁö¤é¤»¤Þ¤¹¡£
m4_changequote
¥µ¥Ö¥ë¡¼¥Á¥ó¤ËÅþ㤹¤ë¤Þ¤Ç¤Ï¡¢
¥×¥í¥°¥é¥à¤ÏÄ̾ï¤É¤ª¤ê¤Îưºî¤ò¤·¤Þ¤¹¡£
(gdb) run Starting program: /work/Editorial/gdb/gnu/m4/m4 define(foo,0000) foo 0000
¥Ö¥ì¥¤¥¯¥Ý¥¤¥ó¥È¤Ç¥×¥í¥°¥é¥à¤òÄä»ß¤µ¤»¤ë¤¿¤á¤Ëchangequote
¤ò¼Â¹Ô¤¹¤ë¤È¡¢
GDB¤Ïm4
¤Î¼Â¹Ô¤òÄä»ß¤·¡¢
Ää»ß¤·¤¿²Õ½ê¤Î¥³¥ó¥Æ¥¥¹¥È¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£
changequote(<QUOTE>,<UNQUOTE>) Breakpoint 1, m4_changequote (argc=3, argv=0x33c70) at builtin.c:879 879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
¼¡¤Ën
¡Ênext
¡Ë¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢
¸½ºßÄä»ß¤·¤Æ¤¤¤ë´Ø¿ô¤ÎÃæ¤Ç1¹Ô¤À¤±½èÍý¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
(gdb) n 882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\ : nil,
set_quotes
¤È¤¤¤¦¤Î¤Ï¡¢
¤¤¤ï¤¯¤¢¤ê¤²¤Ê¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç¤¹¡£
next
¥³¥Þ¥ó¥É¤ÎÂå¤ï¤ê¤Ës
¡Êstep
¡Ë¥³¥Þ¥ó¥É¤ò»È¤¦¤³¤È¤Ç¡¢
¤³¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤ÎÃæ¤ËÆþ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
step
¥³¥Þ¥ó¥É¤Ï¡¢
¤½¤ì¤¬¤É¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤ÎÃæ¤Ë¤¢¤ë¤«¤È¤¤¤¦¤³¤È¤Ë¤«¤«¤ï¤ê¤Ê¤¯¡¢
¼¡¤Î1¹Ô¤Ë°Üư¤·¤Þ¤¹¡£
¤³¤Î¾ì¹ç¡¢
¼¡¤Î1¹Ô¤Ïset_quotes
¤ÎÃæ¤Ç¤¹¤«¤é¡¢
¤½¤³¤Ø°Üư¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
(gdb) s set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>") at input.c:530 530 if (lquote != def_lquote)
m4
¤¬¤½¤ÎÃæ¤Ç¸½ºßÄä»ß¤·¤Æ¤¤¤ë¥µ¥Ö¥ë¡¼¥Á¥ó
¡Ê¤ª¤è¤Ó¡¢¤½¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤Ø¤Î°ú¿ô¡Ë
¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤ò¥¹¥¿¥Ã¥¯¡¦¥Õ¥ì¡¼¥àɽ¼¨¤È¸Æ¤Ó¤Þ¤¹¡£
¤½¤ì¤Ï¡¢
¥¹¥¿¥Ã¥¯¤Î¾õÂÖ¤òÍ×Ìó¤·¤¿¾ðÊó¤òɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£
backtrace
¥³¥Þ¥ó¥É
¡Ê¤¢¤ë¤¤¤Ï¡¢
bt
¤È¾Êά¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡Ë
¤ò»È¤Ã¤Æ¡¢
¸½ºß¡¢
¥¹¥¿¥Ã¥¯Á´ÂΤÎÃæ¤Î¤É¤³¤Ë¤¤¤ë¤«¤òÃΤ뤳¤È¤â¤Ç¤¤Þ¤¹¡£
backtrace
¥³¥Þ¥ó¥É¤Ï¡¢
¥¢¥¯¥Æ¥£¥Ö¤Ê¥µ¥Ö¥ë¡¼¥Á¥ó¤Î¥¹¥¿¥Ã¥¯¡¦¥Õ¥ì¡¼¥à¤òɽ¼¨¤·¤Þ¤¹¡£
(gdb) bt #0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>") at input.c:530 #1 0x6344 in m4_changequote (argc=3, argv=0x33c70) at builtin.c:882 #2 0x8174 in expand_macro (sym=0x33320) at macro.c:242 #3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30) at macro.c:71 #4 0x79dc in expand_input () at macro.c:40 #5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
¼¡¤Ë¡¢2¡¢3¹ÔÀè¤Ë¿Ê¤ó¤Ç¡¢
²¿¤¬µ¯¤³¤Ã¤Æ¤¤¤ë¤Î¤«¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£
ºÇ½é¤Î2²ó¤Ï¡¢
‘s’¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
³¤¯2²ó¤Ï¡¢
xstrdup
¥µ¥Ö¥ë¡¼¥Á¥ó¤ÎÃæ¤ËÆþ¤Ã¤Æ¤·¤Þ¤¦¤Î¤òËɤ°¤¿¤á¤Ë¡¢
n
¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
(gdb) s 0x3b5c 532 if (rquote != def_rquote) (gdb) s 0x3b80 535 lquote = (lq == nil || *lq == '\0') ? \ def_lquote : xstrdup(lq); (gdb) n 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\ : xstrdup(rq); (gdb) n 538 len_lquote = strlen(rquote);
ºÇ¸å¤Ëɽ¼¨¤µ¤ì¤¿¹Ô¤Ï¡¢¾¯¤·Ì¯¤Ê´¶¤¸¤¬¤·¤Þ¤¹¡£
2¤Ä¤ÎÊÑ¿ôlquote
¡¢
rquote
¤òÄ´¤Ù¤Æ¡¢
ËÜÅö¤Ë¤½¤ì¤¬¡¢
¿·¤¿¤Ë»ØÄꤵ¤ì¤¿°úÍѳ«»Ïʸ»úÎó¡¢
°úÍѽªÎ»Ê¸»úÎó¤Ç¤¢¤ë¤«¤É¤¦¤«³Îǧ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
ÃͤòÄ´¤Ù¤ë¤Ë¤Ïp
¡Êprint
¡Ë¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Þ¤¹¡£
(gdb) p lquote $1 = 0x35d40 "<QUOTE>" (gdb) p rquote $2 = 0x35d50 "<UNQUOTE>"
lquote
¤Èrquote
¤Ï³Î¤«¤Ë°úÍѳ«»Ïʸ»úÎó¡¢
°úÍѽªÎ»Ê¸»úÎó¤Î¤è¤¦¤Ç¤¹¡£
Á°¸å´Ø·¸¤òÄ´¤Ù¤ë¤Ë¤Ï¡¢
l
¡Êlist
¡Ë¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¡¢
¸½ºßÄä»ß¤·¤Æ¤¤¤ë¹Ô¤òÃæ¿´¤Ë¤½¤ÎÁ°¸å10¹Ô¤òɽ¼¨¤·¤Þ¤¹¡£
(gdb) l 533 xfree(rquote); 534 535 lquote = (lq == nil || *lq == '\0') ? def_lquote\ : xstrdup (lq); 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\ : xstrdup (rq); 537 538 len_lquote = strlen(rquote); 539 len_rquote = strlen(lquote); 540 } 541 542 void
len_lquote
¤Èlen_rquote
¤ËÃͤòÀßÄꤷ¤Æ¤¤¤ë¹Ô¤ò¼Â¹Ô¤µ¤»¤Æ¤«¤é¡¢
¤½¤ì¤é¤ÎÃͤòÄ´¤Ù¤Æ¤ß¤Þ¤·¤ç¤¦¡£
(gdb) n 539 len_rquote = strlen(lquote); (gdb) n 540 } (gdb) p len_lquote $3 = 9 (gdb) p len_rquote $4 = 7
len_lquote
¤Èlen_rquote
¤¬¡¢
¤½¤ì¤¾¤ìlquote
¤Èrquote
¤ÎŤµ¤Ç¤¢¤ë¤È¤¹¤ë¤È¡¢
¤³¤³¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤ëÃͤÏÌÀ¤é¤«¤Ë¸í¤ê¤Ç¤¹¡£
p
¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¡¢
Àµ¤·¤¤ÃͤòÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
p
¥³¥Þ¥ó¥É¤Ë¤è¤Ã¤ÆÇ¤°Õ¤Î¼°¤ÎÃͤòɽ¼¨¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢
¤³¤³¤Ç¤¤¤¦¡Ö¼°¡×¤Ë¤Ï¡¢
¥µ¥Ö¥ë¡¼¥Á¥ó¤Î¸Æ¤Ó½Ð¤·¤ä¡¢
Ãͤγä¤êÅö¤Æ¤â´Þ¤Þ¤ì¤Þ¤¹¡£
(gdb) p len_lquote=strlen(lquote) $5 = 7 (gdb) p len_rquote=strlen(rquote) $6 = 9
¿·¤·¤¤°úÍÑʸ»úÎó¤ò¥»¥Ã¥È¤·¤¿¾õÂ֤ǡ¢
m4
¤ÎÁȤ߹þ¤ß¥³¥Þ¥ó¥Édefn
¤ò»ÈÍѤ·¤è¤¦¤È¤¹¤ë¤ÈȯÀ¸¤¹¤ëÌäÂê¤ò½¤Àµ¤¹¤ë¤Ë¤Ï¡¢
¤³¤ì¤À¤±¤Ç½½Ê¬¤Ç¤·¤ç¤¦¤«?
c
¡Êcontinue
¡Ë¥³¥Þ¥ó¥É¤ò»È¤¨¤Ð¡¢
m4
¤Ë½èÍý¤ò·Ñ³¤µ¤»¤Æ¡¢
¼ÂºÝ¤ËÌäÂê¤òȯÀ¸¤µ¤»¤Æ¤¤¤¿Îã¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
(gdb) c Continuing. define(baz,defn(<QUOTE>foo<UNQUOTE>)) baz 0000
º£Å٤Ϥ¦¤Þ¤¯¤¤¤¤Þ¤·¤¿¡£
¿·¤¿¤Ë¥»¥Ã¥È¤µ¤ì¤¿°úÍÑʸ»úÎó¤Ï¡¢
¥Ç¥Õ¥©¥ë¥È¤Î°úÍÑʸ»úÎó¤ÈƱ¤¸¤è¤¦¤Ëµ¡Ç½¤·¤Þ¤·¤¿¡£
ÌäÂê¤Î¸¶°ø¤Ï¡¢
¥×¥í¥°¥é¥àÆâ¤Î2²Õ½ê¤Î¥¿¥¤¥×¡¦¥ß¥¹¤Ç¡¢
Ťµ¤ÎÀßÄ꤬Àµ¤·¤¯¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤Ë¤¢¤Ã¤¿¤è¤¦¤Ç¤¹¡£
EOF¤òÆþÎϤ·¤Æ¡¢
m4
¤ò½ªÎ»¤µ¤»¤Þ¤·¤ç¤¦¡£
C-d Program exited normally.
‘Program exited normally.’¤È¤¤¤¦¥á¥Ã¥»¡¼¥¸¤Ï¡¢
GDB¤¬½ÐÎϤ·¤¿¤â¤Î¤Ç¡¢
m4
¤Î¼Â¹Ô¤¬½ªÎ»¤·¤¿¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£
GDB¤Î
quit
¥³¥Þ¥ó¥É¤Ç¡¢
GDB¥»¥Ã¥·¥ç¥ó¤ò½ªÎ»¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
(gdb) quit
Next: Invocation, Previous: Summary, Up: Top [Contents][Index]