$B$=$N5$$K$J$l$P!"(B $B$3$N%^%K%e%"%k$r;H$C$F(BGDB$B$N$9$Y$F$r3X=,$9$k$3$H$b$b$A$m$s2DG=$G$9$,!"(B GDB$B$r;H$$;O$a$k$K$O!"(B $B$$$/$D$+$N%3%^%s%I$rCN$C$F$$$l$P==J,$G$9!#(B $BK\>O$G$O!"$=$N$h$&$J%3%^%s%I$K$D$$$F@bL@$7$^$9!#(B
GDB$B$N=PNO>pJs$H$N6hJL$,MF0W$K$D$/$h$&$K!"(B $B$3$N%5%s%W%k!&%;%C%7%g%s$G$O!"(B $B%f!<%6$NF~NO$r(B input $B$N$h$&$KB@;z$GI=$o$7$^$9!#(B
$BHFMQE*$J%^%/%m!&%W%m%;%C%5$G$"$k(BGNU
$B$3$3$G(BGDB$B$r;H$C$F!"(B
$B2?$,5/$3$C$F$$$k$N$+D4$Y$F$_$^$7$g$&!#(B
GDB$B$O!"(B
$BI,MW$J$H$-$KB>$N%7%s%\%k$r8+$D$1$k$N$K:GDc8BI,MW$H$J$k%7%s%\%k>pJs$7$+FI$_9~$_$^$;$s!#(B
$B$=$N7k2L!"(B
$B:G=i$N%W%m%s%W%H$,I=<($5$l$k$^$G$N;~4V$,6K$a$FC;$$$N$G$9!#(B
$B$3$3$G!"(B
$B=PNO>pJs$,$3$N%^%K%e%"%k$N;fI}$K<}$^$k$h$&$K$9$k$?$a$K!"(B
GDB$B$KBP$7$FI=<(I}$rDL>o$h$j$b69$/$9$k$h$&;X<($r=P$7$F$_$^$7$g$&!#(B
$B%V%l%$%/%]%$%s%H$G%W%m%0%i%`$rDd;_$5$;$k$?$a$K(B
$Bn$B!J(B
$B`s'$B%3%^%s%I$r;H$$$^$9!#(B
$BB3$/(B2$B2s$O!"(B
$B:G8e$KI=<($5$l$?9T$O!">/$7L/$J46$8$,$7$^$9!#(B
2$B$D$NJQ?t(B
$B?7$7$$0zMQJ8;zNs$r%;%C%H$7$?>uBV$G!"(B
$B:#EY$O$&$^$/$$$-$^$7$?!#(B
$B?7$?$K%;%C%H$5$l$?0zMQJ8;zNs$O!"(B
$B%G%U%)%k%H$N0zMQJ8;zNs$HF1$8$h$&$K5!G=$7$^$7$?!#(B
$BLdBj$N860x$O!"(B
$B%W%m%0%i%`Fb$N(B2$B2U=j$N%?%$%W!&%_%9$G!"(B
$BD9$5$N@_Dj$,@5$7$/9T$o$l$F$$$J$$$3$H$K$"$C$?$h$&$G$9!#(B
EOF$B$rF~NO$7$F!"(B
`Program exited normally.'$B$H$$$&%a%C%;!<%8$O!"(B
GDB$B$,=PNO$7$?$b$N$G!"(B
m4
$B$K$O!"(B
$B$+$D$F!"(B
$B$^$@@5<0$J%P!<%8%g%s$,%j%j!<%9$5$l$k0JA0$K!"(B
$BuBV$K$J$C$F$$$kB>$N%^%/%mDj5A$r0000
$B$KE83+$5$l$k%^%/%m(Bfoo
$B$rDj5A$7$F$$$^$9!#(B
$B$5$i$K!"(B
m4
$B$NAH$_9~$_%3%^%s%I(Bdefn
$B$r;H$C$F!"(B
$B%^%/%m(Bbar
$B$KF10l$NDj5A$rM?$($F$$$^$9!#(B
$B$H$3$m$,!"(B
$B0zMQ$N3+;OJ8;zNs$r(B<QUOTE>
$B$K!"(B
$B0zMQ$N=*N;J8;zNs$r(B<UNQUOTE>
$B$K$=$l$>$lJQ99$9$k$H!"(B
$BA4$/F10l$N
$ 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 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 5.0, Copyright 1999 Free Software Foundation, Inc...
(gdb)
(gdb) set width 70
m4
$B$NAH$_9~$_%3%^%s%I$G$"$k(Bchangequote
$B$,$I$N$h$&$KF0:n$9$k$N$+$rD4$Y$F$_$kI,MW$,$"$j$^$9!#(B
$B%=!<%9$r8+$k$H!"(B
$B4XO"$9$k%5%V%k!<%A%s$,(Bm4_changequote
$B$G$"$k$3$H$,J,$+$j$^$9!#(B
$B$=$3$G!"(B
GDB$B$N(Bbreak
$B%3%^%s%I$G%V%l%$%/%]%$%s%H$r@_Dj$7$F$_$^$9!#(B
(gdb) break m4_changequote
Breakpoint 1 at 0x62f4: file builtin.c, line 879.
run
$B%3%^%s%I$r;H$C$F!"(B
GDB$B$N4IM}2<$G(Bm4
$B$rAv$i$;$^$9!#(B
m4_changequote
$B%5%V%k!<%A%s$KE~C#$9$k$^$G$O!"(B
$B%W%m%0%i%`$ODL>o$I$*$j$NF0:n$r$7$^$9!#(B
(gdb) run
Starting program: /work/Editorial/gdb/gnu/m4/m4
define(foo,0000)
foo
0000
changequote
$B$r
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))
next
$B!K%3%^%s%I$rset_quotes
$B$H$$$&$N$O!"(B
$B$$$o$/$"$j$2$J%5%V%k!<%A%s$G$9!#(B
next
$B%3%^%s%I$NBe$o$j$K(Bs
$B!J(Bstep
$B!K%3%^%s%I$r;H$&$3$H$G!"(B
$B$3$N%5%V%k!<%A%s$NCf$KF~$k$3$H$,$G$-$^$9!#(B
step
$B%3%^%s%I$O!"(B
$B$=$l$,(B$B$I$N(B$B%5%V%k!<%A%s$NCf$K$"$k$+$H$$$&$3$H$K$+$+$o$j$J$/!"(B
$Bl9g!"(B
$Bset_quotes$B$NCf$G$9$+$i!"(B
$B$=$3$X0\F0$9$k$3$H$K$J$j$^$9!#(B
(gdb) s
set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
at input.c:530
530 if (lquote != def_lquote)
m4
$B$,$=$NCf$G8=:_Dd;_$7$F$$$k%5%V%k!<%A%s(B
$B!J$*$h$S!"$=$N%5%V%k!<%A%s$X$N0z?t!K(B
$B$,I=<($5$l$F$$$^$9!#(B
$B$3$l$r%9%?%C%/!&%U%l!<%`I=<($H8F$S$^$9!#(B
$B$=$l$O!"(B
$B%9%?%C%/$N>uBV$rMWLs$7$?>pJs$rI=<($7$F$$$^$9!#(B
backtrace
$B%3%^%s%I(B
$B!J$"$k$$$O!"(B
bt
$B$H>JN,$9$k$3$H$b$G$-$^$9!K(B
$B$r;H$C$F!"(B
$B8=:_!"(B
$B%9%?%C%/A4BN$NCf$N$I$3$K$$$k$+$rCN$k$3$H$b$G$-$^$9!#(B
backtrace
$B%3%^%s%I$O!"(B
$B8D!9$N%"%/%F%#%V$J%5%V%k!<%A%s$N%9%?%C%/!&%U%l!<%`$rI=<($7$^$9!#(B
(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
xstrdup
$B%5%V%k!<%A%s$NCf$KF~$C$F$7$^$&$N$rKI$0$?$a$K!"(B
n
$B%3%^%s%I$r;H$$$^$9!#(B
(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);
lquote
$B!"(B
rquote
$B$rD4$Y$F!"(B
$BK\Ev$K$=$l$,!"(B
$B?7$?$K;XDj$5$l$?0zMQ3+;OJ8;zNs!"(B
$B0zMQ=*N;J8;zNs$G$"$k$+$I$&$+3NG'$9$k$3$H$,$G$-$^$9!#(B
$BCM$rD4$Y$k$K$O(Bp
$B!J(Bprint
$B!K%3%^%s%I$r;HMQ$7$^$9!#(B
(gdb) p lquote
$1 = 0x35d40 "<QUOTE>"
(gdb) p rquote
$2 = 0x35d50 "<UNQUOTE>"
lquote
$B$H(Brquote
$B$O3N$+$K0zMQ3+;OJ8;zNs!"(B
$B0zMQ=*N;J8;zNs$N$h$&$G$9!#(B
$BA08e4X78$rD4$Y$k$K$O!"(B
l
$B!J(Blist
$B!K%3%^%s%I$r;H$C$F!"(B
$B8=:_Dd;_$7$F$$$k9T$rCf?4$K$=$NA08e(B10$B9T$rI=<($7$^$9!#(B
(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
$B$H(Blen_rquote
$B$KCM$r@_Dj$7$F$$$k9T$rlen_lquote
$B$H(Blen_rquote
$B$,!"(B
$B$=$l$>$l(Blquote
$B$H(Brquote
$B$ND9$5$G$"$k$H$9$k$H!"(B
$B$3$3$KI=<($5$l$F$$$kCM$OL@$i$+$K8m$j$G$9!#(B
p
$B%3%^%s%I$r;H$C$F!"(B
$B@5$7$$CM$r@_Dj$9$k$3$H$,$G$-$^$9!#(B
p
$B%3%^%s%I$K$h$C$FG$0U$N<0$NCM$rI=<($9$k$3$H$,$G$-$^$9$,!"(B
$B$3$3$G$$$&!V<0!W$K$O!"(B
$B%5%V%k!<%A%s$N8F$S=P$7$d!"(B
$BCM$N3d$jEv$F$b4^$^$l$^$9!#(B
(gdb) p len_lquote=strlen(lquote)
$5 = 7
(gdb) p len_rquote=strlen(rquote)
$6 = 9
m4
$B$NAH$_9~$_%3%^%s%I(Bdefn
$B$r;HMQ$7$h$&$H$9$k$HH/@8$9$kLdBj$r=$@5$9$k$K$O!"(B
$B$3$l$@$1$G==J,$G$7$g$&$+(B?
c
$B!J(Bcontinue
$B!K%3%^%s%I$r;H$($P!"(B
m4
$B$K=hM}$r7QB3$5$;$F!"(B
$Bm4
$B$r=*N;$5$;$^$7$g$&!#(B
C-d
Program exited normally.
m4
$B$N
(gdb) quit
[Contents] [Back] [Prev] [Up] [Next] [Forward]