Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
Published by the Free Software Foundation
59 Temple Place - Suite 330,
Boston, MA 02111-1307 USA
Printed copies are available for $20 each.
ISBN 1-882114-11-6
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
GDB°°Àº µð¹ö°ÅÀÇ ¸ñÀûÀº ÇÁ·Î±×·¥ ½ÇÇൿ¾È ÇÁ·Î±×·¥ ³»ºÎ¿¡¼ ÁøÇàµÇ°í ÀÖ´Â °ÍÀÌ ¹«¾ùÀÎÁö¸¦ ¿©·¯ºÐÀÌ ¾Ëµµ·Ï Çϴµ¥¿¡ ÀÖ´Ù. -- ¶Ç´Â ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ Á×´Â ¼ø°£¿¡ ¹«¾ùÀ» Çß´ÂÁö.
GDB´Â ¿©·¯ºÐÀÌ ¹ö±×¸¦ Àâµµ·Ï µµ¿ÍÁÖ´Â 4 Á¾·ùÀÇ Àϵé(¶Ç À̰͵éÀ» Áö¿øÇÏ´Â ´Ù¸¥ °Íµé)À» ÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀº C³ª C++·Î ¾²¿©Áø ÇÁ·Î±×·¥À» µð¹ö±ëÇϱâ À§ÇØ GDB¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù. ´õ ¸¹Àº Á¤º¸¸¦ À§Çؼ, C ±×¸®°í C++ ¼½¼ÇÀ» ÂüÁ¶Çضó.
Modula-2 ¿Í Chill´Â ºÎºÐÀûÀ¸·Î Áö¿øÇÑ´Ù. Modula-2¿¡ °üÇÑ Á¤º¸¸¦ À§Çؼ, Modula-2 ¼½¼ÇÀ» ÂüÁ¶Çضó. Chill¿¡ °üÇÑ ¹®¼´Â ¾ÆÁ÷ ¾ø´Ù.
sets, subranges, ÆÄÀÏ º¯¼öµé ¶Ç´Â ÁßøµÈ ÇÔ¼öµéÀ» »ç¿ëÇÏ´Â Pascal ÇÁ·Î±×·¥¿¡ ´ëÇÑ µð¹ö±ëÀº ÇöÀç ÀÛµ¿µÇÁö ¾Ê´Â´Ù. GDB´Â Ç¥Çö½Ä µé¾î°¡±â, °ª Ãâ·Â, ¶Ç´Â Pascal ¹®¹ýÀ» »ç¿ëÇÏ´Â ºñ½ÁÇÑ Æ¯Â¡µéÀº Áö¿øÇÏÁö ¾Ê´Â´Ù.
ºñ·Ï Ç¥Çö½Ä µé¾î°¡±â, °ª Ãâ·Â, ¶Ç´Â Fortran ¹®¹ý¿¡¼ »ç¿ëÇÏ´Â ºñ½ÁÇÑ Æ¯Â¡µéÀ» ¾ÆÁ÷ Áö¿øÇÏÁö ¾Ê¾Æµµ GDB´Â FortranÀ¸·Î Â¥¿©Áø ÇÁ·Î±×·¥À» µð¹ö±ëÇϱâ À§ÇØ »ç¿ë µÉ¼ö ÀÖ´Ù. Áß¿ä ºÎºÐÀ» ÃßÀûÇϱâ À§ÇØ ¸î¸î º¯¼ö¸¦ ÂüÁ¶Çϴ°ÍÀÌ ÇÊ¿äÇÏ´Ù.
GDB´Â GNU General Public License(GPL)¿¡ ÀÇÇØ º¸È£µÇ´Â ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î ÀÌ´Ù. GPLÀº ¶óÀ̼¾½ºµÈ ÇÁ·Î±×·¥À» º¹»çÇϰųª »ç¿ëÇϴ°ÍÀÌ ÀÚÀ¯½º·´´Ù. -- ±×·¯³ª º¹»çº»À» °¡Áø ¸ðµç »ç¶÷Àº ¶ÇÇÑ ±× º¹»çº»(¼Ò½º Äڵ忡 Á¢±ÙÇÒ¼ö ÀÖ´Ù´Â ÀǹÌ)À» ¼öÁ¤Çϱâ À§ÇÑ ÀÚÀ¯¸¦ °¡Áö¸ç ±× º¹»çº»À» ¹èÆ÷Çϴ°͵µ ÀÚÀ¯ÀÌ´Ù. ÀüÇüÀûÀÎ ¼ÒÇÁÆ®¿þ¾î ȸ»çµéÀº ¿©·¯ºÐÀÇ ÀÚÀ¯¸¦ Á¦ÇÑÇϱâ À§ÇØ ÀúÀÛ±ÇÀ» »ç¿ëÇÑ´Ù; Free Software FoundationÀº À̵é ÀÚÀ¯¸¦ º¸È£Çϱâ À§ÇØ GPLÀ» »ç¿ëÇÑ´Ù.
±âº»ÀûÀ¸·Î, General Public License´Â ¿©·¯ºÐÀÌ ÀÌ·¯ÇÑ ÀÚÀ¯¸¦ °¡Áø´Ù´Â ¶óÀ̼¾½ºÀÌ°í ¿©·¯ºÐÀº ÀÌ·¯ÇÑ ÀÚÀ¯¸¦ ±×¹ÛÀÇ ´Ù¸¥ »ç¶÷¿¡°Ô¼ Á¦ÇÑÇÒ¼ö ¾ø´Ù.
Richard StallmanÀº GDBÀÇ ¿ø ÀúÀÚÀÌ¸ç ´Ù¸¥ ¸¹Àº GDBÇÁ·Î±×·¥ÀÇ ÀúÀÚÀ̱⵵ ÇÏ´Ù. ¸¹Àº ´Ù¸¥ »ç¶÷µéÀÌ ÀÌ °³¹ß¿¡ °øÇåÇÏ¿´´Ù. ÀÌ ¼½¼ÇÀº ÁÖ¿ä °øÇåÀÚµéÀ» ¹àÈ÷±â À§ÇÑ °ÍÀÌ´Ù. ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÇ ¹Ì´öÁß Çϳª´Â ¸ðµç »ç¶÷µéÀÌ ÇÁ·Î±×·¥¿¡ °øÇåÇϴ°ÍÀÌ ÀÚÀ¯¶ó´Â Á¡ÀÌ´Ù; À¯°¨½º·´°Ô, ¿ì¸®´Â ¿©±â¼ ¸ðµç»ç¶÷µéÀ» ¾Ë¸±¼ö ¾ø´Ù. GDB ¹èÆ÷ÆÇ¿¡ ÀÖ´Â `ChangeLog'´Â »ç°Çµé¿¡ ´ëÇØ ´ëü·Î Á¤È®È÷ ±â¼úÇÏ°í ÀÖ´Ù.
¹öÀü 2.0 ÀÌÀüÀÇ ¸¹Àº º¯ÈµéÀº ¿À·£ ½Ã°£¶§¹®¿¡ ÀÒ¾î¹ö·È´Ù.
º¯¸í: ÀÌ ¼½¼Ç¿¡ Ãß°¡ Çϴ°ÍÀº ºÎºÐÀûÀ¸·Î ȯ¿µÇÑ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀ̳ª ¿©·¯ºÐÀÇ Ä£±¸µé(¶Ç´Â Àû)ÀÌ ÀÌ ¸®½ºÆ®¿¡¼ ºüÁ®ÀÖ´Ù¸é ¿ì¸®´Â ¿©·¯ºÐÀÇ À̸§À» Ãß°¡ÇÏ±æ ¿øÇÑ´Ù.
À̵éÀº º¸´äÀÌ ¾ø´Â ¿À·£ ÀÛ¾÷À» ÇÏ¿´À¸¸ç, ¿ì¸®´Â ÁÖ¿ä ¸±¸®Áî ¹öÀü½Ã¿¡ GDB¸¦ µµ¿ÍÁØ À̵鿡°Ô °¨»çÇÑ´Ù.: Stan Shebs (release 4.14), Fred Fish (releases 4.13, 4.12, 4.11, 4.10, and 4.9), Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4), John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9); Jim Kingdon (releases 3.5, 3.4, and 3.3); and Randy Smith (releases 3.2, 3.1, and 3.0). ¾ó¸¶°£ÀÇ ±â°£µ¿¾È GDBÀÇ ÁÖ¿ä ¸ÞÀÎÅ×À̳ʷνá, °¢ °øÇåÀÚµéÀº ±¸Á¶¿Í ¾ÈÁ¤¼º ±×¸®°í Àüü µð¹ö°ÅÀÇ ´É·Â¿¡ ´ëÇØ °øÇåÇß´Ù.
Peter TerMaat, Chris Hanson, ±×¸®°í Richard Mlynarik °¡ ¿©·¯¹ø µµ¿ÍÁÖ¾úÀ¸¸ç Richard StallmanÀº 2.8±îÁö ¹öÀüÀ» °ü¸®Çß´Ù.
Michael TiemannÀº Áß¿äÇÑ °øÇåÀÚÀÎ Per Bothner¿Í ÇÔ²² GDB¿¡¼ GNU C++Áö¿øÀÇ ´ëºÎºÐÀÇ ÀúÀÚÀÌ´Ù. James Clark´Â C++ µð¸Í±Û·¯(demangler)¸¦ ½è´Ù. Ãʱâ C++ ÀÛµ¿Àº Peter TerMatt(3.0 ¸±¸®Áî½Ã ¸¹Àº ÀϹÝÀûÀÎ ¾÷µ¥ÀÌÆ® ÀÛ¾÷À» ÇÏ¿´´Ù.)¿¡ ÀÇÇؼÀÌ´Ù.
GDB 4´Â ´ÙÁß °´Ã¼-ÆÄÀÏ Æ÷¸ËÀ» °Ë»çÇϱâ À§ÇØ BFD ¼ºê·çƾ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¿´´Ù; BFD´Â David V.Henkel-Wallace, Rich Pixley, Steve Chamberlain, ±×¸®°í John GilmoreÀÇ °øµ¿ ÇÁ·ÎÁ§Æ®ÀÌ´Ù.
David JohnsonÀº ¿ø COFF Áö¿øÀ» ½è´Ù; Pace WillsonÀº ĸ½¶ÈµÈ COFF¸¦ Áö¿øÇß´Ù.
Harris Computer SystemsÀÇ Brent BensonÀº DWARF2 Áö¿øÀÇ °øÇåÀÚÀÌ´Ù.
Adam de Boor¿Í Bradley Davis´Â ISI Optimum V Áö¿ø¿¡ °øÇåÇß´Ù. Per Bothner, Noboyuki Hikichi, ±×¸®°í Alessandro Forin´Â MIPS Áö¿ø¿¡ °øÇåÇß´Ù. Jean-Daniel Fekete´Â Sun 386i Áö¿ø¿¡ °øÇåÇß´Ù. Chris Hanson ´Â HP9000 Áö¿øÀ» °³¼±Çß´Ù. Noboyuki Hikichi ±×¸®°í Tomoyuki Hasei´Â Sony/News OS 3 Áö¿ø¿¡ °øÇåÇß´Ù. David Johnson´Â Encore Umax Áö¿ø¿¡ °øÇåÇß´Ù. Jyrki Kuoppala´Â Altos 3068 Áö¿ø¿¡ °øÇåÇß´Ù. Jeff Law´Â HP PA ±×¸®°í SOM Áö¿ø¿¡ °øÇåÇß´Ù. Keith Packard´Â NS32K Áö¿ø¿¡ °øÇåÇß´Ù. Doug Rabson´Â Acorn Risc Machine Áö¿ø¿¡ °øÇåÇß´Ù. Bob Rusk´Â Harris Nighthawk CX-UX Áö¿ø¿¡ °øÇåÇß´Ù. Chris Smith´Â Convex Áö¿ø(±×¸®°í Æ÷Æ®¶õ µð¹ö±ë)¿¡ °øÇåÇß´Ù. Jonathan Stone´Â Pyramid Áö¿ø¿¡ °øÇåÇß´Ù. Michael Tiemann´Â SPARC Áö¿ø¿¡ °øÇåÇß´Ù. Tim Tucker´Â Gould NP1¿Í Gould Powernode Áö¿ø¿¡ °øÇåÇß´Ù. Pace Willison´Â Intel 386 Áö¿ø¿¡ °øÇåÇß´Ù. Jay Vosburgh´Â Symmetry Áö¿ø¿¡ °øÇåÇß´Ù.
Rich Schaefer ±×¸®°í Peter Schauer´Â SunOS °øÀ¯ ¶óÀ̺귯¸® Áö¿øÀ» µµ¿ÍÁÖ¾ú´Ù.
Jay Fenlason ±×¸®°í Roland McGrath´Â GDB¿Í GAS°¡ ¸î¸î ¸Ó½Å ¸í·É¾î ÁýÇÕ¿¡ ÀÏÄ¡Çϵµ·Ï È®½ÇÈ÷ ÇØÁÖ¾ú´Ù.
Patrick Duval, Ted Goldstein, Vikram Koka ±×¸®°í Glenn Engel´Â ¿ø°Ý µð¹ö±ë °³¹ßÀ» µµ¿Í ÁÖ¾ú´Ù. Intel Corporation, Wind River Systems, AMD, ±×¸®°í ARM´Â °¢°¢ i960, VxWorks, A29K UDI, ±×¸®°í RDI targets¸¦ À§ÇÑ ¿ø°Ý µð¹ö±ë ¸ðµâ¿¡ °øÇåÇß´Ù.
Brian Fox´Â ¸í·É¾î ¶óÀÎ ÆíÁý°ú ¸í·É¾î È÷½ºÅ丮¸¦ Á¦°øÇÏ´Â readline ¶óÀ̺귯¸®ÀÇ ÀúÀÚÀÌ´Ù.
SUNY BuffaloÀÇ Andrew Beers´Â ¾ð¾î-switch ÄÚµå, Modula-2 Áö¿ø ±×¸®°í ÀÌ ¸Å´º¾óÀÇ Language chapter¿¡ °øÇåÇß´Ù.
Fred Fish´Â Unix System Vr4 Áö¿øÀÇ ´ëºÎºÐÀ» ÀÛ¾÷Çß´Ù. ±â¸®°í C++ ¿À¹ö·Îµù ½Éº¼À» Áö¿øÇϱâ À§ÇØ ¸í·É¾î-¿Ï¼º¿¡ ´ëÇÑ Áö¿øÀ» °ÈÇß´Ù.
Hitachi America, Ltd. Hitachi microprocessors¸¦ Áö¿øÇϵµ·Ï ÈÄ¿øÇß´Ù.
Kung Hsu, Jeff Law, ±×¸®°í Rick Sladkey´Â Çϵå¿þ¾î watchpoints¿¡ ´ëÇÑ Áö¿øÀ» Ãß°¡Çß´Ù.
Michael Snyder´Â tracepoint Áö¿øÀ» Ãß°¡Çß´Ù.
Stu Grossman´Â gdbserver¸¦ ½è´Ù.
Jim Kingdon, Peter Schauer, Ian Taylor, ±×¸®°í Stu Grossman´Â ¸¹Àº ¹ö±×¸¦ °íÃÆÀ¸¸ç GDB¸¦ ±ò²ûÇÏ°Ô ÇØÁÖ¾ú´Ù.
Cygnus SolutionsÀº 1991³â ÀÌÈÄ GDB À¯Áö¿Í °³¹ßÀÇ ¸¹Àº°ÍÀ» Áö¿øÇß´Ù.
¿©·¯ºÐÀº GDB¿¡ °üÇÑ °ÍÀ» Àбâ À§ÇØ ¿©°¡½Ã°£¿¡ ÀÌ ¸Å´º¾óÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù. ±×·¯³ª, ¾à°£ÀÇ ¸í·É¾îµé·Î¸¸À¸·Îµµ µð¹ö°Å »ç¿ëÀ» ½ÃÀÛÇϴµ¥ ÃæºÐÇÏ´Ù. ÀÌ ÀåÀº ÀÌµé ¸í·É¾îµé¿¡ ´ëÇØ ±â¼úÇÑ´Ù.
ÀÌ ¿¹Á¦ ¼¼¼Ç¿¡¼, ¿ì¸®´Â ÁÖÀ§ Ãâ·Â°ú ½±°Ô ±¸º°Çϱâ À§ÇØ ´ÙÀ½Ã³·³ »ç¿ëÀÚ ÀÔ·ÂÀ» °Á¶ÇÑ´Ù:input,
GNU m4
(ÀÏ¹Ý ¸ÅÅ©·Î ÇÁ·Î¼¼¼)ÀÇ Ãʱ⠹öÀüÁß Çϳª´Â ´ÙÀ½°ú °°Àº ¹ö±×¸¦ °¡Áö°í
ÀÖ´Ù: °¡²û ¿ì¸®°¡ µðÆúÆ®¿¡¼ ÀÎ¿ë ¹®ÀÚ¿À» ¹Ù²Ü¶§, ÀÌ ¸í·É¾îµéÀº ´Ù¸¥ stop ÀÛ¾÷³»¿¡ ÀÖ´Â ÇϳªÀÇ
¸ÅÅ©·Î Á¤ÀǸ¦ ĸÃÄÇϱâ À§ÇØ »ç¿ëµÉ¼ö ÀÖ´Ù.
´ÙÀ½ÀÇ °£´ÜÇÑ m4
¼¼¼Ç¿¡¼, ¿ì¸®´Â 0000
·Î È®ÀåµÇ´Â
¸ÅÅ©·Î foo
¸¦ Á¤ÀÇÇÑ´Ù; ±×¸®°í °°Àº°ÍÀ¸·Î bar
¸¦ Á¤ÀÇ
Çϱâ À§ÇØ m4
³»Àå defn
¸¦ »ç¿ëÇÑ´Ù.
±×·¯³ª, ¿ì¸®°¡ <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 , Copyright 1995 Free Software Foundation, Inc... (gdb)
GDB´Â ¹ß°ßÇϱâ À§ÇÑ °÷ÀÌ ¾îµðÀÎÁö ¾Ë±â À§ÇØ ÇÊ¿äÇÑ ½Éº¼ µ¥ÀÌÅÍ ¸¸À» Àд´Ù.; °á°úÀûÀ¸·Î, óÀ½ ÇÁ·ÒÇÁÆ®´Â ¸Å¿ì »¡¸® ³ªÅ¸³´Ù. ¿ì¸®´Â Áö±Ý º¸Å뺸´Ù Á¼Àº µð½ºÇ÷¹ÀÌ ÆøÀ» »ç¿ëÇϵµ·Ï GDB¿¡°Ô ¸»ÇÑ´Ù. ±×·¡¼ ÀÌ ¿¹Á¦´Â ÀÌ ¸Å´º¾ó¿¡ Àû¿ë½ÃÄ×´Ù.
(gdb) set width 70
¿ì¸®´Â m4
³»Àå changequote
°¡ ÀÛµ¿ÇÏ´Â ¹æ¹ýÀ» ¾Ë ÇÊ¿ä°¡
ÀÖ´Ù. ¼Ò½º¸¦ º¸°í, ¿ì¸®´Â °ü·Ã ¼ºê·çƾÀÌ m4_changequote
À̶ó°í ¾Ë°í ÀÖÀ¸¹Ç·Î,
GDB break
¸í·É¾î·Î breakpoint¸¦ ¼³Á¤ÇÑ´Ù.
(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
breakpoint¸¦ Æ®¸®°ÅÇϱâ À§ÇØ, 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
)¸í·É¾î¸¦ »ç¿ëÇÑ´Ù.
(gdb) n 882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\ : nil,
set_quotes
´Â ¾à¼ÓµÈ ¼ºê·çƾó·³ º¸ÀδÙ. ¿ì¸®´Â next
´ë½Å¿¡ s
(step
) ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ÇØ´ç ¼ºê·çƾÀ¸·Î µé¾î°£´Ù.
step
´Â any ¼ºê·çƾ¿¡¼ ½ÇÇàµÇ±â À§ÇØ ´ÙÀ½ ¶óÀÎÀ¸·Î µé¾î
°£´Ù. ±×·¡¼ 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
¿ì¸®´Â ¹«¾ùÀÌ ÀϾ´ÂÁö¸¦ º¸±â À§ÇØ ¾à°£ ´õ ¸¹Àº ¶óÀÎÀ» ³ª¾Æ°£´Ù.
óÀ½ ¸î¹ø, ¿ì¸®´Â `s'¸¦ »ç¿ëÇÑ´Ù; ´ÙÀ½ µÎ¹ø, ¿ì¸®´Â 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);
¸¶Áö¸· ¶óÀÎÀº ¾à°£ ÀÌ»óÇÏ°Ô º¸ÀδÙ; ¿ì¸®´Â ±×°ÍµéÀÌ ¿ì¸®°¡ ÁöÁ¤ÇÑ ¿ÞÂÊ ±×¸®°í
¿À¸¥ÂÊ Àοë¾î±¸ÀÎÁö ¾Æ´ÑÁö¸¦ º¸±â À§ÇØ 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
¸í·É¾î¸¦ »ç¿ëÇÏ¿© ±×°ÍµéÀ» Àû´çÇÑ °ªÀ¸·Î ¼³Á¤ÇÒ¼ö ÀÖ´Ù.
¿Ö³ÄÇϸé ÀÌ ¸í·É¾î´Â ¾î¶² Ç¥Çö½ÄÀÇ °ªÀ» Ãâ·ÂÇÒ¼ö Àֱ⠶§¹®ÀÌ´Ù. -- ±×¸®°í
±× Ç¥Çö½ÄÀº ¼ºê·çƾ ÄÝ°ú ´ëÀÔÀ» Æ÷ÇÔÇÒ¼ö ÀÖ´Ù.
(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
¼º°ø! »õ·Î¿î Àοë¾î±¸´Â Áö±Ý ±âº»Ã³·³ ÀÛµ¿ÇÑ´Ù. ¹®Á¦´Â À߸øµÈ ±æÀ̸¦ Á¤ÀÇÇÑ µÎ ¿ÀŸ ¶§¹®ÀΰŠ°°´Ù. ¿ì¸®´Â ÀԷ¿¡ EOF¸¦ ÁÖ¾î m4
¸¦ Á¾·áÇÒ¼ö ÀÖ´Ù.
C-d Program exited normally.
¸Þ¼¼Áö `Program exited normally.'´Â GDB¿¡¼ ³ª¿Â°ÍÀÌ´Ù;
±×°ÍÀº m4
°¡ ½ÇÇàÀ» ¸¶Ãƴٴ°ÍÀ» °¡¸®Å²´Ù.
¿ì¸®´Â GDB quit
¸í·É¾î¸¦ °¡Áö°í GDB ¼¼¼ÇÀ» ¸¶Ä¥¼ö ÀÖ´Ù.
(gdb) quit
ÀÌ ÀåÀº GDB¸¦ ½ÃÀÛÇÏ´Â ¹æ¹ý°ú ³ª°¡´Â ¹æ¹ý¿¡ ´ëÇØ Åä·ÐÇÑ´Ù. ÇʼöÀûÀÎ °Íµé:
ÇÁ·Î±×·¥ gdb
¸¦ µ¹·Á GDB¸¦ ½ÇÇàÇضó. ÀÏ´Ü ½ÃÀÛÇϸé,
GDB´Â ¿©·¯ºÐÀÌ Á¾·á(exit)¸¦ ÇÒ¶§±îÁö Å͹̳ο¡¼ ¸í·É¾î¸¦ Àд´Ù.
¿©·¯ºÐÀº ¶ÇÇÑ ½ÃÀ۽à ¿©·¯ºÐÀÇ µð¹ö±ë ȯ°æÀ» ÁöÁ¤Çϱâ À§ÇØ ÀÎÀÚ¿Í ¿É¼ÇÀ» °¡Áö°í
gdb
¸¦ µ¹¸±¼ö ÀÖ´Ù.
¿©±â¼ ±â¼úÇÑ ¸í·É¾î-¶óÀÎ ¿É¼ÇµéÀº ¿©·¯»óȲÀ» ó¸®Çϵµ·Ï °í¿ÏµÇ¾ú´Ù.; ¸î¸î ȯ°æ¿¡¼, ÀÌµé ¿É¼Ç Áß ÀϺδ ȿ°úÀûÀ¸·Î ÀÌ¿ëÇÒ¼ö ¾ø´Ù.
GDB¸¦ ½ÃÀÛÇϱâ À§ÇÑ °¡Àå ÀϹÝÀûÀÎ ¹æ¹ýÀº ½ÇÇà ÇÁ·Î±×·¥À» ÁöÁ¤ÇÏ´Â ÀÎÀÚ 1°³¸¦ °¡Áö´Â °ÍÀÌ´Ù.
gdb program
¿©·¯ºÐÀº ¶ÇÇÑ ½ÇÇà ÇÁ·Î±×·¥°ú ÄÚ¾î(core) ÆÄÀÏÀ» ÁöÁ¤ÇÏ¿© ½ÃÀÛÇÒ¼ö ÀÖ´Ù:
gdb program core
´ë½Å¿¡ ¿©·¯ºÐÀº µ¹¾Æ°¡´Â ÇÁ·Î±×·¥À» µð¹ö±ëÇÏ±æ ¿øÇÑ´Ù¸é µÎ¹ø° ÀÎÀڷνá ÇÁ·Î¼¼½º ID¸¦ ÁöÁ¤Çضó.
gdb program 1234
ÇÁ·Î¼¼½º 1234
¿¡ GDB¸¦ ¿¬°áÇÑ´Ù.(¿©·¯ºÐÀÌ `1234'À̶ó´Â
À̸§ÀÇ ÆÄÀÏÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù¸é; GDB´Â ¿ì¼± ÄÚ¾îÆÄÀÏ À̸§À» üũÇÑ´Ù.)
µÎ¹ø° ¸í·É¾î ¶óÀÎ ¿É¼ÇÀ» ÀÌ¿ëÇϴ°ÍÀº ²Ï ¾ÈÀüÇÑ OS¸¦ ¿ä±¸ÇÑ´Ù.; ¿©·¯ºÐÀÌ bare º¸µå¿¡ ¿¬°áµÈ µð¹ö°Å·Î½á GDB¸¦ »ç¿ëÇÒ¶§, °Å±â¿¡´Â "ÇÁ·Î¼¼½º"¿¡ ´ëÇÑ °³³äÀÌ ¾øÀ» °ÍÀÌ´Ù. ±×¸®°í ÄÚ¾î ´ýÇÁ¸¦ °¡Áö±â À§ÇÑ ¹æ¹ýµµ ¾ø´Ù.
¿©·¯ºÐÀº -silent
¸¦ ÁöÁ¤ÇÏ¿© GDBÀÇ ¾ÕºÎºÐÀ» Ãâ·ÂÇÏÁö ¾Ê°í
gdb
¸¦ µ¹¸±¼ö ÀÖ´Ù.
gdb -silent
¿©·¯ºÐÀº ¸í·É¾î-¶óÀÎ ¿É¼ÇÀ» »ç¿ëÇÏ¿© GDB¸¦ ½ÃÀÛÇÏ´Â ¹æ¹ýÀ» Á¦¾îÇÒ¼ö ÀÖ´Ù. GDB´Â ±×°Í ÀÚü·Î »ç¿ëÇÒ¼ö ÀÖ´Â ¿É¼ÇµéÀ» ¾Ë·ÁÁÙ¼ö ÀÖ´Ù.
ÀÌ¿ëÇÒ¼ö ÀÖ´Â ¸ðµç ¿É¼Çµé°ú »ç¿ë¿¡ ´ëÇØ °£´ÜÇÑ ±â¼úÀ» º¸°íÀÚ Çϸé
gdb -help
¸¦ ŸÀÌÇÎÇضó.(`gdb -h'¿Í µ¿ÀÏÇÏ´Ù.)
¿©·¯ºÐÀÌ ÁØ ¸ðµç ¿É¼Ç°ú ¸í·É¾î ¶óÀÎ ÀÎÀÚµéÀº ¼øÂ÷ÀûÀ¸·Î 󸮵ȴÙ. `-x' ¿É¼ÇÀ» »ç¿ëÇÏ¸é ¼ø¼°¡ ´Þ¶óÁø´Ù.
GDB°¡ ½ÃÀÛÇÒ¶§, GDB´Â ½ÇÇàÆÄÀÏ°ú ÄÚ¾î ÆÄÀÏ(¶Ç´Â ÇÁ·Î¼¼½º ID)À» ÁöÁ¤ÇÏ´Â °Íó·³ ¿É¼ÇÀÌ¿ÜÀÇ ´Ù¸¥ ÀÎÀÚµéÀ» Àд´Ù. ÀÌ°ÍÀº ÀÎÀÚµéÀ» °¢°¢ `-se'°ú `-c'·Î ÁöÁ¤ÇÑ°Í°ú °°´Ù. (GDB´Â `-se'¿É¼Ç ´ÙÀ½¿¡ µû¸£´Â ÀÎÀÚ¿Í °°±â ¶§¹®¿¡ °ü·ÃµÈ ¿É¼Ç Ç÷¡±×¸¦ °¡Áö°í ÀÖÁö ¾Ê´Â ù¹øÀç ÀÎÀÚ¸¦ Àд´Ù; ±×¸®°í `-c' ¿É¼Ç ´ÙÀ½ÀÇ ÀÎÀÚ¿Í °°±â ¶§¹®¿¡ °ü·ÃµÈ ¿É¼Ç Ç÷¡±×¸¦ °¡ÁöÁö ¾Ê´Â µÎ¹ø° ÀÎÀÚ¸¦ Àд´Ù.)
¸¹Àº ¿É¼ÇµéÀº long°ú shortÇüŸ¦ °¡Áö°í ÀÖ´Ù; µÎ°³´Â ´ÙÀ½¸®½ºÆ®¿¡¼ º¸¿©Áø´Ù. GDB´Â ¶ÇÇÑ ¿É¼ÇÀÌ ¸ðÈ£ÇÏÁö ¾Ê´ÂÇÑ ¿©·¯ºÐÀÌ ÁÙ¿©µµ ±äÇüÅ·ΠÀνÄÇÒ¼öµµ ÀÖ´Ù. (¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº ¿ì¸®°¡ ´õ ÀϹÝÀûÀÎ º¯È¯À» ¼³¸íÇÏ´õ¶óµµ `-'º¸´Ù `--'·Î ¿É¼Ç ÀÎÀÚ¸¦ Ç÷¡±×È ÇÒ¼ö ÀÖ´Ù.)
-symbols file
-s file
-exec file
-e file
-se file
-core file
-c file
-c number
attach
¸í·É¾îó·³ ÇÁ·Î¼¼½º ID number¸¦ ¿¬°áÇضó.
(¸¸ÀÏ number À̸§ÀÇ ÄÚ¾î-´ýÇÁ Æ÷¸Ë ÆÄÀÏÀÌ ¾ø´Ù¸é,
ÀÌ°ÍÀº `-c'¿¡¼ Àбâ À§ÇÑ ÄÚ¾î ´ýÇÁ·Î½á ÆÄÀÏÀ» ÁöÁ¤ÇÑ °æ¿ìó·³)
-command file
-x file
-directory directory
-d directory
-m
-mapped
mmap
¸¦ ÅëÇØ ½Ã½ºÅÛ¿¡¼ ÀÌ¿ëÇÒ
¼ö ÀÖ´Ù¸é, ¿©·¯ºÐÀº ÇöÀç µð·ºÅ丮¿¡¼ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥À» ´Ù½Ã Àç»ç¿ëÇÒ¼ö ÀÖ´Â
ÆÄÀÏ¿¡ ½Éº¼µéÀ» ¾µ¼ö ÀÖ´Â ¿É¼ÇÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ µð¹ö±ëÇÏ´Â
ÇÁ·Î±×·¥ÀÌ `/tmp/fred'¶ó ºÒ¸°´Ù¸é, ´ëÀÀµÈ ½Éº¼ ÆÄÀÏÀº `./fred.syms'ÀÌ´Ù.
¾ÕÀ¸·Î GDB µð¹ö±ë ¼¼¼ÇµéÀº ÀÌ ÆÄÀÏÀÇ Á¸À縦 È®ÀÎÇÏ¸ç ½ÇÇà ÇÁ·Î±×·¥¿¡¼ ½Éº¼
ÆÄÀÏÀ» Àб⺸´Ù ÀÌ ÆÄÀÏ¿¡¼ ½Éº¼ Á¤º¸¸¦ ºü¸£°Ô ´ëÀÀ½ÃŲ´Ù.
`.syms'ÆÄÀÏÀº GDB°¡ µ¹¾Æ°¡°í Àִ ȣ½ºÆ® ¸Ó½Å¿¡ ÀÇÁ¸ÇÑ´Ù. ÀÌ°ÍÀº ³»ºÎ
GDB ½Éº¼ Å×À̺íÀÇ Á¤È®ÇÑ À̹ÌÁö¸¦ °¡Áø´Ù. ÀÌ°ÍÀº Å©·Î½º ´ÙÁß È£½ºÆ® Ç÷§Æû¿¡¼
°øÀ¯ µÉ¼ö ¾ø´Ù.
-r
-readnow
-mapped
¿Í -readnow
¿É¼ÇÀº ÀüÇüÀûÀ¸·Î ¿ÏÀüÇÑ ½Éº¼
Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â `.syms' ÆÄÀÏÀ» ¸¸µé±â À§ÇØ °áÇյȴÙ.
(Á¤º¸¸¦ À§Çؼ ÆÄÀÏÀ» ÁöÁ¤Çϱâ À§ÇÑ ¸í·É¾îµé¸¦
ÂüÁ¶Çضó.)
¾ÕÀ¸·ÎÀÇ »ç¿ëÀ» À§ÇØ ÆÄÀÏ `.syms'´Â:
gdb -batch -nx -mapped -readnow programname
¿©·¯ºÐÀº ´Ù¾çÇÑ ¼±Åà ¸ðµå¿¡¼ GDB¸¦ µ¹¸±¼ö ÀÖ´Ù--¿¹¸¦ µé¾î, ¹èÄ¡¸ðµå³ª Á¶¿ëÇÑ ¸ðµå
-nx
-n
-quiet
-q
-batch
0
»óÅ·ΠÁ¾·áµÈ´Ù.
¸¸ÀÏ ¿¡·¯°¡ ¸í·É¾î ÆÄÀϾȿ¡ ÀÖ´Â GDB¸í·É¾î¸¦ ½ÇÇàÇÏ´Â µ¿¾È ÀϾٸé 0ÀÌ ¾Æ´Ñ
»óÅ·ΠÁ¾·áµÈ´Ù.
¹èÄ¡ ¸ðµå´Â ´Ù¿î·Îµå³ª ´Ù¸¥ ÄÄÇ»ÅÍ¿¡¼ ÇÁ·Î±×·¥À» µ¹¸®±â À§ÇÑ ÇÊÅͷνá GDB¸¦
µ¹¸®´Âµ¥ À¯¿ëÇÏ´Ù.; ´õ À¯¿ëÇÏ°Ô ¸¸µé±â À§Çؼ ¸Þ¼¼Áö°¡ ¹èÄ¡¸ðµå¿¡¼ µ¹¾Æ°¥¶§´Â
³ªÅ¸³ªÁö ¾Ê´Â´Ù.
(º¸Åë GDBÁ¦¾îÇÏ¿¡¼ µ¹¾Æ°¡´Â ÇÁ·Î±×·¥ÀÌ ³¡³¯¶§ ³ªÅ¸³´Ù.)
Program exited normally.
-cd directory
-fullname
-f
-b bps
-tty device
quit
quit
(°£´ÜÈ÷ q
)¸¦ »ç¿ëÇضó.
¶Ç´Â EOF ¹®ÀÚ(º¸Åë C-d)¸¦ ŸÀÌÇÎÇضó.
¸¸ÀÏ ¿©·¯ºÐÀÌ expression¸¦ Á¦°øÇÏÁö ¾Ê´Â´Ù¸é, GDB´Â Á¤»óÀûÀ¸·Î
Á¾·áµÉ °ÍÀÌ´Ù; ±×·¸Áö ¾ÊÀ¸¸é ¿¡·¯ ÄÚµå·Î½á expressionÀÇ °á°ú¸¦
»ç¿ëÇÏ°í Á¾·áÇÒ °ÍÀÌ´Ù.
ÀÎÅÍ·´Æ®(ÀÚÁÖ C-c)´Â GDB¿¡¼ ³ª°¡Áö ¾ÊÁö¸¸ ó¸®ÁßÀÎ GDB¸í·É ÀÛµ¿À» ³¡³»¸ç GDB ¸í·É¾î ·¹º§·Î µ¹¾Æ¿Â´Ù. ¾î¶²¶§µçÁö ÀÎÅÍ·´Æ® ¹®ÀÚ¸¦ ŸÀÌÇÎÇϴ°ÍÀº º¸ÀåµÈ´Ù. ¿Ö³ÄÇϸé GDB´Â ¾ÈÀüÇÑ ½Ã°£ÀÌ µÉ¶§±îÁö È¿°ú¸¦ °¡Áöµµ·Ï Çã¿ëÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ¿¬°áµÈ ÇÁ·Î¼¼½º³ª µð¹ÙÀ̽º¸¦ Á¦¾îÇϱâ À§ÇØ GDB¸¦ »ç¿ëÇÑ´Ù¸é,
¿©·¯ºÐÀº detach
¸í·É¾î¸¦ °¡Áö°í ³õ¾ÆÁÖ¾î¾ß ÇÑ´Ù.
(ÀÌ¹Ì µ¹°í ÀÖ´Â ÇÁ·Î¼¼½º µð¹ö±ëÇϱ⼽¼ÇÀ»
ÂüÁ¶Çضó.)
¸¸ÀÏ ¿©·¯ºÐÀÌ µð¹ö±ë ¼¼¼Çµ¿¾È °æ¿ì¿¡ µû¶ó shell ¸í·É¾î¸¦ ½ÇÇàÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é,
GDB¸¦ ³ª°¡°Å³ª ÀϽÃÁßÁöÇÒ ÇÊ¿ä°¡ ¾ø´Ù; ¿©·¯ºÐÀº ´ÜÁö shell
¸í·É¾î¸¦
»ç¿ëÇÒ¼ö ÀÖ´Ù.
shell command string
SHELL
´Â ±âµ¿µÉ shellÀ»
°áÁ¤ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é GDB´Â /bin/sh
¸¦ »ç¿ëÇÑ´Ù.
make
´Â °³¹ß ȯ°æ¿¡¼ ÀÚÁÖ ÇÊ¿äÇÏ´Ù.
¿©·¯ºÐÀº GDB¿¡¼ ÀÌ ¸ñÀûÀ» À§ÇØ shell
¸í·É¾î¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø´Ù:
make make-args
make
ÇÁ·Î±×·¥À» ½ÇÇàÇضó.
ÀÌ°ÍÀº `shell make make-args'¿Í °°´Ù.
¿©·¯ºÐÀº Ãà¾àÇüÀÌ ¸ðÈ£ÇÏÁö ¾Ê´Ù¸é ¸í·É¾î À̸§ÀÇ Ã³À½ ¸îÀÚ·Î GDB ¸í·É¾î¸¦ Ãà¾àÇÒ¼ö ÀÖ´Ù; ±×¸®°í ¿©·¯ºÐÀº ´ÜÁö RET¸¦ ŸÀÌÇÎÇÏ¿© GDB ¸í·É¾î¸¦ ¹Ýº¹ÇÒ¼ö ÀÖ´Ù. ¿©·¯ºÐÀº ¶ÇÇÑ GDB ¸í·É¾î ´Ü¾îÀÇ ³ª¸ÓÁö¸¦ ä¿ì±â À§ÇØ TABÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.(¶Ç´Â ¸¸ÀÏ °Å±â¿¡ 1°³ ÀÌ»óÀÇ ´Ü¾î°¡ ÀÖ´Ù¸é, ¿©·¯ºÐÀÌ ¼±ÅÃÀûÀ¸·Î ÀÌ¿ëÇÒ¼ö ÀÖµµ·Ï º¸¿©ÁØ´Ù.)
GDB ¸í·É¾î´Â ´ÜÀÏ ¶óÀÎ ÀÔ·ÂÀÌ´Ù.
±æÀÌ¿¡ ´ëÇÑ Á¦ÇÑÀº ¾ø´Ù. ¸í·É¾î À̸§°ú ÇÔ²² ½ÃÀÛÇÏ¸ç ¸í·É¾î À̸§¿¡ ÀÇÁ¸ÇÏ´Â
Àǹ̰¡ ÀÖ´Â ÀÎÀÚ°¡ µÚµû¶ó ¿Â´Ù. ¿¹¸¦ µé¾î, step
¸í·É¾î´Â
`step 5'ó·³ ½ºÅÜÀ» À§ÇÑ °¹¼ö¸¦ ¹Þ´Â´Ù.
¿©·¯ºÐÀº ¶ÇÇÑ ÀÎÀÚ ¾øÀÌ step
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù. ¸î¸î ¸í·É¾î À̸§µéÀº
¾î¶² ÀÎÀÚµµ Çã¿ëÇÏÁö ¾Ê´Â´Ù.
GDB´Â Ãà¾àÇüÀÌ ¸ðÈ£ÇÏÁö ¾Ê´Ù¸é Ç×»ó ¸í·É¾îÀ̸§À» Ãà¾àÇÑ´Ù.
´Ù¸¥ °¡´ÉÇÑ ¸í·É¾î Ãà¾àÇüµéÀº ¹®¼¾È¿¡ ³ª¿ µÇ¾î ÀÖ´Ù. ¸î¸î °æ¿ì¿¡´Â,
¸ðÈ£ÇÑ Ãà¾àÇüÁ¶Â÷ Çô¿ëµÈ´Ù.; ¿¹¸¦ µé¾î, s
´Â ºñ·Ï s
·Î
½ÃÀÛÇÏ´Â ´Ù¸¥ ¸í·É¾îµéÀÌ ÀÖ´ÙÇÒÁö¶óµµ step
¿Í °°Àº °ÍÀ¸·Î½á
Ưº°È÷ Á¤ÀǵǾî ÀÖ´Ù. ¿©·¯ºÐÀº help
¸í·É¾î¿¡ ÀÎÀڷνá À̰͵éÀ»
»ç¿ëÇÏ¿© Ãà¾àÇüÀ» Å×½ºÆ®ÇÒ¼ö ÀÖ´Ù.
GDB¿¡ ÀÔ·ÂÀ¸·Î½á ºó ¶óÀÎ(´ÜÁö RET¸¦ ŸÀÌÇÎÇϴ°Í)Àº Àü ¸í·É¾îÀÇ
¹Ýº¹À» ÀǹÌÇÑ´Ù. ¾î¶°ÇÑ ¸í·É¾î(¿¹¸¦ µé¾î, run
)´Â ÀÌ ¹æ¹ýÀ¸·Î
¹Ýº¹µÇÁö ¾Ê´Â´Ù; ÀÌµé ¸í·É¾î´Â ¹®Á¦¸¦ ¾ß±âÇÒ¼ö ÀÖ°í ¹Ýº¹À» ¿øÇÏÁö ¾Ê´Â ¸í·É¾îµéÀÌ´Ù.
list
¿Í x
¸í·É¾î´Â ¿©·¯ºÐÀÌ RET·Î ¹Ýº¹ÇÒ¶§,
ŸÀÌÇÎó·³ Á¤È®È÷ ¹Ýº¹ÇÏ´Â°Í ÀÌ¿Ü¿¡ »õ·Î¿î ÀÎÀÚ¸¦ ¸¸µç´Ù.
ÀÌ°ÍÀº ¼Ò½º³ª ¸Þ¸ð¸®¸¦ ½±°Ô ½ºÄÉ´×Çϴ°ÍÀ» Çã¿ëÇÑ´Ù.
GDB´Â ¶ÇÇÑ ´Ù¸¥ ¹æ¹ýÀ¸·Î RET¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù: more
¿Í
ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î Ãâ·Â ±æÀ̸¦ ºÐÇÒÇϱâ À§ÇØ »ç¿ëÇÒ¼ö ÀÖ´Ù.(Screen Å©±â¼½¼ÇÀ» ÂüÁ¶Çضó.) ÀÌ°ÍÀº ÀÌ »óȲ¿¡¼ ³Ê¹« ¸¹ÀÌ RET¸¦ ´©¸£±â
½±±â ¶§¹®¿¡, GDB´Â µð½ºÇ÷¹ÀÌÀÇ ¹üÀ§¸¦ ¸¸µå´Â ¸í·É¾îÈÄ ¸í·É¾î ¹Ýº¹À» ºÒ°¡´ÉÇÏ°Ô
ÇÑ´Ù.
#¿¡¼ ¶óÀγ¡±îÁöÀÇ ÅؽºÆ®´Â ÁÖ¼®ÀÌ´Ù; ¾Æ¹«°Íµµ ¾Æ´Ï¶ó´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ¸í·É¾î ÆÄÀϵ鿡¼ ¸Å¿ì À¯¿ëÇÏ´Ù.(¸í·É¾î ÆÄÀϵ鼽¼ÇÀ» ÂüÁ¶Çضó.)
GDB´Â ¸¸ÀÏ ÇÑ°¡ÁöÀÇ °¡´É¼º¸¸ ÀÖ´Ù¸é ¿©·¯ºÐÀ» À§ÇØ ¸í·É¾î ´Ü¾îÀÇ ³ª¸ÓÁö¸¦ ä¿öÁØ´Ù.; ¶ÇÇÑ ¾î¶²¶§µçÁö ¸í·É¾î¿¡¼ ´ÙÀ½ ´Ü¾î¸¦ À§ÇÑ °¡´ÉÇÑ ¸ðµç °æ¿ì¸¦ ¿©·¯ºÐ¿¡°Ô º¸¿©ÁØ´Ù. ÀÌ°ÍÀº GDB¸í·É¾î, GDB ÇÏÀ§ ¸í·É¾î, ±×¸®°í ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡¼ ½Éº¼µéÀÇ À̸§¿¡¼ ÀÛµ¿ÇÑ´Ù.
¿©·¯ºÐÀº ´Ü¾îÀÇ ³ª¸ÓÁö¸¦ ä¿ì±æ ¿øÇÒ¶§¸¶´Ù TABÅ°¸¦ ´·¯¶ó. ¸¸ÀÏ ÇÑ°¡ÁöÀÇ °¡´É¼º¸¸ ÀÖ´Ù¸é, GDB´Â ´Ü¾î¸¦ ä¿ì°í ¸í·É¾î¸¦ ³¡¸¶Ä¡±æ ±â´Ù¸°´Ù. (¶Ç´Â RET¸¦ ´·¯¶ó.) ¿¹¸¦ µé¾î ¿©·¯ºÐÀÌ ´ÙÀ½À» ÇÑ´Ù¸é,
(gdb) info bre TAB
GDB´Â `breakpoints' ´Ü¾îÀÇ ³ª¸ÓÁö¸¦ ä¿î´Ù. ¿Ö³ÄÇϸé
`bre'·Î ½ÃÀÛÇÏ´Â info
ÀÇ ÇÏÀ§ ¸í·É¾î´Â ÀÌ°Í»ÓÀ̱â
¶§¹®ÀÌ´Ù.
(gdb) info breakpoints
¿©·¯ºÐÀº ¿©±â¼ info breakpoints
¸í·É¾î¸¦ µ¹¸®±â À§ÇØ
RET¸¦ ´©¸£°Å³ª, ¸¸ÀÏ ¿©·¯ºÐÀÌ ¿¹»óÇÑ ´Ü¾î°¡ ¾Æ´Ï¶ó¸é backspace³ª
±×¹ÛÀÇ ´Ù¸¥ °ÍÀ» ´·¯¶ó.
(¸¸ÀÏ ¿©·¯ºÐÀÌ info breakpoints
¸¦ ¿øÇÏ´Â°Ô È®½ÇÇÏ´Ù¸é,
¿©·¯ºÐÀº ¸í·É¾î ¿Ï¼º ´ë½Å ¸í·É¾î Ãà¾àÇüÀ» ÀÌ¿ëÇϱâ À§ÇØ ´ÜÁö
`info bre'ÈÄ¿¡ Áï½Ã RET¸¦ Çصµ µÈ´Ù.)
¸¸ÀÏ ¿©·¯ºÐÀÌ TABÀ» ´©¸¦¶§ ´ÙÀ½ ´Ü¾îÀÇ °¡´É¼ºÀÌ ÇÑ°¡Áö ÀÌ»óÀ̶ó¸é GDB´Â º§¼Ò¸®¸¦ ¿ï¸°´Ù. ¿©·¯ºÐÀº ´õ ¸¹Àº ´Ü¾î¸¦ Á¦°øÇÏ°í ´Ù½Ã ½ÃµµÇϰųª ´ÜÁö 2¹ø TABÅ°¸¦ ´©¸¦¼ö ÀÖ´Ù.; GDB´Â ¸ðµç °¡´ÉÇÑ ¿Ï¼ºÇüÀ» º¸¿©ÁØ´Ù. ¿¹¸¦ µé¾î, ¿©·¯ºÐÀº `make_'·Î ½ÃÀÛÇÏ´Â À̸§ÀÇ ¼ºê·çƾ¿¡ breakpoint¸¦ ¼³Á¤Çϱ⠿øÇÒÁö ¸ð¸¥´Ù. ±×·¯³ª ¿©·¯ºÐÀÌ b make_TAB ¸¦ ÇÑ´Ù¸é GDB´Â ´ÜÁö º§¼Ò¸®¸¸À» ³½´Ù.TABÀ» ´Ù½Ã ŸÀÌÇÎÇϸé ÀÌ ¹®ÀÚµé·Î ½ÃÀÛÇÏ´Â ¸ðµç ÇÔ¼ö À̸§À» º¸¿©ÁØ´Ù. ¿¹¸¦ µé¾î:
(gdb) b make_ TAB GDB sounds bell; press TAB again, to see: make_a_section_from_file make_environ make_abs_section make_function_type make_blockvector make_pointer_type make_cleanup make_reference_type make_command make_symbol_completion_list (gdb) b make_
°¡´ÉÇÑ ¸ðµç °æ¿ì¸¦ Ãâ·ÂÇÑÈÄ, GDB´Â ¿©·¯ºÐÀÇ ºÎºÐÀûÀÎ ÀÔ·Â(¿¹¿¡¼ `b make_')À» º¹»çÇÏ°í ¸í·É¾î¸¦ ¸¶Ä¥¼ö ÀÖ´Ù.
¿©·¯ºÐÀÌ Ã³À½ À§Ä¡¿¡¼ ¼±Åà ¸®½ºÆ®µéÀ» º¸±æ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº TAB¸¦ µÎ¹ø ´©¸£±âº¸´Ù M-?¸¦ ´©¸¦¼ö ÀÖ´Ù. M-?´Â META ?¸¦ ÀǹÌÇÑ´Ù. ¿©·¯ºÐÀº Å°º¸µå¿¡¼ META shift °°Àº°ÍÀ¸·Î µðÀÚÀÎ µÈ Å°¸¦ ´©¸£°í ?¸¦ ŸÀÌÇÎ Çϰųª ESC ´ÙÀ½¿¡ ?¸¦ ´·¯ ÇÒ¼ö ÀÖ´Ù.
º¸Åë ´Ü¾î¶ó°í ÇÏ´Â ¿©·¯ºÐÀÌ ÇÊ¿äÇÑ ¹®ÀÚ¿Àº Áß°ýÈ£³ª ´Ü¾î °³³ä¿¡¼ Á¦¿ÜµÈ
´Ù¸¥ ´Ü¾î¸¦ Æ÷ÇÔÇÒÁöµµ ¸ð¸¥´Ù.
ÀÌ·± °æ¿ì ´Ü¾îÀÇ ¿Ï¼ºÇüÀ» ÀÌ·ç±â À§Çؼ´Â, ¿©·¯ºÐÀº GDB ¸í·É¾îµéÁß¿¡¼
'
(´ÜÀÏ ÀÎ¿ë ºÎÈ£)¾È¿¡ ´Ü¾î¸¦ ´Ý¾Æ¾ß ÇÑ´Ù.
¿©·¯ºÐÀÌ ÇÊ¿ä·Î ÇÏ´Â ´ëºÎºÐÀÇ »óȲÀº C++ ÇÔ¼ö À̸§À» ¾µ °æ¿ìÀÌ´Ù.
¿Ö³ÄÇϸé C++Àº ÇÔ¼ö ¿À¹ö·ÎµùÀ» Çã¿ëÇϱ⠶§¹®ÀÌ´Ù.(ÀÎÀÚ Å¸ÀÔ¿¡ ÀÇÇØ ±¸º°µÇ´Â
°°Àº ÇÔ¼öÀÇ ´ÙÁß Á¤ÀÇ) ¿¹¸¦ µé¾î, ¿©·¯ºÐÀÌ breakpoint¸¦ ¼³Á¤ÇÏ±æ ¿øÇÑ´Ù¸é,
¿©·¯ºÐÀº int
ÀÎÀÚ¸¦ °¡Áö´Â name(int)
¹öÀüÀÎÁö,
¶Ç´Â float
ÀÎÀÚ¸¦ °¡Áö´Â name(float)
¹öÀüÀÎÁö¸¦
±¸º°ÇØ¾ß ÇÑ´Ù.
´Ü¾î-¿Ï¼ºÇü±â´ÉÀ» »ç¿ëÇϱâ À§ÇØ, ÇÔ¼ö À̸§ ½ÃÀ۽à '
¸¦ ŸÀÌÇÎÇضó.
ÀÌ°ÍÀº ¿©·¯ºÐÀÌ TAB¸¦ ´©¸£°Å³ª ¿øÇÏ´Â ´Ü¾î ¿Ï¼ºÇüÀ» À§ÇØ
M-?¸¦ ´©¸¦¶§ º¸Å뺸´Ù ´õ ¸¹Àº Á¤º¸¸¦ °íÇôÇÒ ÇÊ¿ä°¡ ÀÖ´Ù´Â °ÍÀ»
GDB¿¡°Ô ¾Ë·Á ÁÖ´Â °ÍÀÌ´Ù.
(gdb) b 'bubble( M-? bubble(double,double) bubble(int,int) (gdb) b 'bubble(
¸î¸î °æ¿ì¿¡, GDB´Â ¿Ï¼ºµÈ À̸§ÀÌ Àο뱸 »ç¿ëÀ» ÇÊ¿ä·Î ÇÑ´Ù´Â °ÍÀ» ¾Ë·Á ÁÙ¼ö ÀÖ´Ù. ÀÌ·± °æ¿ì, GDB´Â ¸¸ÀÏ Ã³À½ À§Ä¡¿¡ Àο뱸¸¦ ŸÀÌÇÎÇÏÁö ¾Ê´Â´Ù¸é ¿©·¯ºÐÀ» À§ÇØ Àο뱸¸¦ ³Ö´Â´Ù.:
(gdb) b bub TAB GDB´Â ¿©·¯ºÐÀÇ ÀԷ¶óÀÎÀ» ´ÙÀ½Ã³·³ ¼öÁ¤ÇÏ°í º§À» ¿ï¸°´Ù. (gdb) b 'bubble(
ÀϹÝÀûÀ¸·Î, ¸¸ÀÏ ¿©·¯ºÐÀÌ ¿À¹ö·ÎµùµÈ ½Éº¼ÀÇ ¿Ï¼ºÇüÀ» ¿ä±¸ÇÒ¶§ ÀÎÀÚ ¸®½ºÆ®¸¦ ŸÀÌÇÎÇÏÁö ¾Ê¾Ò´Ù¸é, GDB´Â Àο뱸°¡ ÇÊ¿äÇÏ´Ù´Â°É ¸»ÇØ ÁÙ¼ö ÀÖ´Ù.
¿©·¯ºÐÀº help
¸í·É¾î¸¦ »ç¿ëÇÏ¿© ¸í·É¾î¿¡ ´ëÇÑ Á¤º¸¸¦ GDB¿¡°Ô
¿ä±¸ÇÒ¼ö ÀÖ´Ù.
help
h
help
(
°£´ÜÈ÷ h
)¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
(gdb) help List of classes of commands: running -- Running the program stack -- Examining the stack data -- Examining data breakpoints -- Making program stop at certain points files -- Specifying and examining files status -- Status inquiries support -- Support facilities user-defined -- User-defined commands aliases -- Aliases of other commands obscure -- Obscure features Type "help" followed by a class name for a list of commands in that class. Type "help" followed by command name for full documentation. Command name abbreviations are allowed if unambiguous. (gdb)
help class
status
Ŭ·¡½º¸¦ À§ÇÑ
µµ¿ò¸» Ãâ·ÂÀÌ ÀÖ´Ù.
(gdb) help status Status inquiries. List of commands: show -- Generic command for showing things set with "set" info -- Generic command for printing status Type "help" followed by command name for full documentation. Command name abbreviations are allowed if unambiguous. (gdb)
help command
help
ÀÎÀÚ¿¡ ¸í·É¾î À̸§À» ºÙÀ̸é, GDB´Â ±× ¸í·É¾î »ç¿ë ¹æ¹ý¿¡
´ëÇÑ °£´ÜÇÑ ´Ü¶ôÀ» Ãâ·ÂÇÑ´Ù.
complete args
complete args
¸í·É¾î´Â ¸í·É¾î ½ÃÀÛÀ» À§ÇØ °¡´ÉÇÑ
¿Ï¼ºÇüµé ¸ðµÎ¸¦ ³ª¿ÇÑ´Ù. ¿©·¯ºÐÀÌ ¿Ï¼ºÇÏ±æ ¿øÇÏ´Â ¸í·É¾îÀÇ ½ÃÀÛÀ» ÁöÁ¤Çϱâ
À§ÇØ args¸¦ »ç¿ëÇضó. ¿¹¸¦ µé¾î:
complete i°á°ú´Â:
info inspect ignoreÀÌ°ÍÀº GNU Emacs »ç¿ëÀ» À§ÇÑ °ÍÀÌ´Ù.
help
¿¡ Ãß°¡ÇÏ¿©, ¿©·¯ºÐÀº ÇÁ·Î±×·¥ÀÇ »óųª GDB ÀÚüÀÇ »óŸ¦ º¸±â
À§ÇØ GDB ¸í·É¾î info
¿Í show
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
°¢ ¸í·É¾î´Â ÁúÀǸ¦ À§ÇØ ¸¹Àº °ÍÀ» Á¦°øÇÑ´Ù; ÀÌ ¸Å´º¾óÀº Àû´çÇÑ ¹®¸Æ¿¡¼ °¢
¸í·É¾îµéÀ» ¼Ò°³ÇÑ´Ù. »öÀο¡¼ info
¿Í show
¾Æ·¡¿¡ ÀÖ´Â
¸®½ºÆ®µéÀº ¸ðµç ÇÏÀ§ ¸í·É¾îµéÀ» °¡¸®Å²´Ù.
»öÀÎ ¼½¼ÇÀ» ÂüÁ¶Çضó.
info
i
)´Â ÇÁ·Î±×·¥ÀÇ »óŸ¦ ±â¼úÇÑ´Ù. ¿¹¸¦ µé¾î,
¿©·¯ºÐÀº info args
·Î ÇÁ·Î±×·¥¿¡ ÁÖ¾îÁø ÀÎÀÚµéÀ» º¼¼ö ÀÖ°í,
info registers
¸¦ »ç¿ëÇÏ¿© ÇöÀçÀÇ ¸ðµç ·¹Áö½ºÅ͵éÀ» ³ª¿ÇÒ¼ö
ÀÖÀ¸¸ç, info breakpoints
À¸·Î ¼³Á¤ÇÑ breakpointµéÀ» º¼¼ö
ÀÖ´Ù.
¿©·¯ºÐÀº help info
·Î info
ÇÏÀ§ ¸í·É¾îÀÇ ¸ðµç
¸®½ºÆ®¸¦ º¼¼ö ÀÖ´Ù.
set
set
À» °¡Áö°í ȯ°æº¯¼ö¿¡ Ç¥Çö½ÄÀÇ °á°ú¸¦ ´ëÀÔÇÒ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î, ¿©·¯ºÐÀº GDB ÇÁ·ÒÇÁÆ®¸¦ set prompt $
¸¦ °¡Áö°í
$-signÀ¸·Î ¼³Á¤ÇÒ¼ö ÀÖ´Ù.
show
info
¿Í ´ëÁ¶ÀûÀ¸·Î, show
´Â GDB ÀÚüÀÇ »óŸ¦ ±â¼úÇÑ´Ù.
¿©·¯ºÐÀº ¿©·¯ºÐÀÌ show
ÇÒ¼ö ÀÖ´Â °ÍµéÀÇ ´ëºÎºÐÀ» set
¸í·É¾î¸¦ »ç¿ëÇÏ¿© ¹Ù²Ü¼ö ÀÖ´Ù; ¿¹¸¦ µé¾î, ¿©·¯ºÐÀº ¸î°³ÀÇ ½Ã½ºÅÛÀÌ
set radix
·Î Ãâ·ÂÀ» À§ÇØ »ç¿ëµÇ¾ú´ÂÁö, ¶Ç´Â
show radix
·Î ÇöÀç »ç¿ëµÈ ½Ã½ºÅÛ °¹¼ö¸¦ Á¶»çÇÒ¼ö ÀÖ´Ù.
¸ðµç ¼³Á¤ °¡´ÉÇÑ ÀÎÀÚµé°ú ÇöÀç °ªµéÀ» º¸¿©ÁÖ±â À§ÇØ, ¿©·¯ºÐÀº ÀÎÀÚ ¾øÀÌ
show
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù; ¿©·¯ºÐÀº ¶ÇÇÑ info set
µµ »ç¿ëÇÒ¼ö
ÀÖ´Ù. µÎ°³ÀÇ ¸í·É¾îµéÀº °°Àº Ãâ·ÂÀ» º¸¿©ÁØ´Ù.
¿©±â¿¡ set
¸í·É¾î¿Ü¿¡ 3°³ÀÇ ³ª¸ÓÁö show
ÇÏÀ§
¸í·É¾îµéÀÌ ÀÖ´Ù.
show version
show copying
show warranty
¿©·¯ºÐÀÌ GDB¿¡¼ ÇÁ·Î±×·¥À» µ¹¸±¶§, ¿ì¼± ¿©·¯ºÐÀº ¼Ò½º¸¦ ÄÄÆÄÀÏÇÒ¶§ µð¹ö±ë Á¤º¸¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. ¿©·¯ºÐÀº ¼±ÅÃÇÑ È¯°æ ÇÏ¿¡¼ ÀÎÀÚ¸¦ °¡Áö°í GDB¸¦ ½ÃÀÛÇÒ¼ö ÀÖ´Ù. ¿©·¯ºÐÀº ÇÁ·Î±×·¥ÀÇ ÀԷ°ú Ãâ·ÂÀ» ¸®´ÙÀÌ·º¼ÇÇÒ¼öµµ ÀÖ°í, ÀÌ¹Ì µ¹¾Æ°¡°í ÀÖ´Â ÇÁ·Î¼¼½º¸¦ µð¹ö±ëÇÒ¼öµµ ÀÖ°í, ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ Á×Àϼöµµ ÀÖ´Ù.
ÇÁ·Î±×·¥À» È¿À²ÀûÀ¸·Î µð¹ö±ëÇϱâ À§ÇØ, ¿©·¯ºÐÀº ¼Ò½º¸¦ ÄÄÆÄÀÏÇÒ¶§ µð¹ö±ë Á¤º¸¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ µð¹ö±ë Á¤º¸´Â ¿ÀºêÁ§Æ® ÆÄÀÏ¿¡ ÀúÀåµÈ´Ù; ±×°ÍÀº °¢ º¯¼öÀÇ µ¥ÀÌŸ ŸÀÔÀ̳ª ÇÔ¼ö¸¦ ±â¼úÇÑ´Ù. ±×¸®°í ¼Ò½º ¶óÀÎ ¼ö¿Í ½ÇÇà Äڵ峻¿¡¼ÀÇ ÁÖ¼Ò»çÀ̸¦ ´ëÀÀ½ÃŲ´Ù.
µð¹ö±ë Á¤º¸¸¦ À§ÇØ, ¿©·¯ºÐÀº ÄÄÆÄÀÏ·¯¸¦ µ¹¸±¶§ `-g' ¿É¼ÇÀ» ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
¸¹Àº C ÄÄÆÄÀÏ·¯´Â `-g' ¿Í `-O' ¿É¼ÇÀ» °°ÀÌ Ã³¸®ÇÒ¼ö ¾ø´Ù. À̵é ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÒ¶§, ¿©·¯ºÐÀº µð¹ö±ë Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â ÃÖÀûÈµÈ ½ÇÇà ÈÀÏÀ» ¸¸µé¼ö ¾ø´Ù.
GNU C CompilerÀÎ GCC´Â ÃÖÀûÈµÈ Äڵ带 µð¹ö±ëÇϴ°ÍÀÌ °¡´ÉÇϵµ·Ï ¸¸µé±â À§ÇØ `-g'¿¡ `-O'¸¦ °¡Áö°Å³ª °¡ÁöÁö ¾ÊÀº°ÍÀ» Áö¿øÇÑ´Ù. ¿ì¸®´Â ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÇÒ¶§¸¶´Ù `-g'¿É¼ÇÀ» »ç¿ëÇϱæ ÃßõÇÑ´Ù. ¿©·¯ºÐÀº ÇÁ·Î±×·¥ÀÌ Á¤È®ÇÏ´Ù°í »ý°¢ÇÒ¼ö ÀÖÁö¸¸, ¾Ë¼ö ¾ø´Â ¹®Á¦°¡ ÀÖÀ»¼ö ÀÖ´Ù.
¿©·¯ºÐÀÌ `-g -O'¸¦ °¡Áö°í ÄÄÆÄÀÏµÈ ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ¶§, ¿ÉƼ¸¶ÀÌÀú(optimizer)´Â ¿©·¯ºÐÀÇ Äڵ带 Àç¹è¿ÇÑ´Ù.; µð¹ö°Å´Â ¿©·¯ºÐ¿¡°Ô ¹«¾ùÀÌ ÀÖ´ÂÁö¸¦ º¸¿©ÁØ´Ù. ½ÇÇà °æ·Î°¡ Á¤È®È÷ ¿©·¯ºÐÀÇ ¼Ò½º ÆÄÀÏ°ú ÀÏÄ¡µÇÁö ¾Ê´Â´Ù°í ³Ê¹« ³î¶óÁö ¸¶¶ó! ±Ø´ÜÀûÀÎ ¿¹·Î: ¸¸ÀÏ ¿©·¯ºÐÀÌ º¯¼ö¸¦ Á¤ÀÇÇÏ¿´Áö¸¸ °áÄÚ ±×°ÍÀ» »ç¿ëÇÏÁö ¾Ê¾Ò´Ù¸é, GDB´Â °áÄÚ ±× º¯¼ö¸¦ º¸Áö ¸øÇÑ´Ù.--¿Ö³ÄÇϸé ÄÄÆÄÀÏ·¯´Â ±× º¯¼ö¸¦ Á¸Àç ÇÏÁö ¾Ê´Â°ÍÀ¸·Î ÃÖÀûÈ Çϱ⠶§¹®ÀÌ´Ù.
¸î¸î °æ¿ì¿¡ ƯÈ÷ ¸í·É¾î ½ºÄÉÁÙ¸µÀ» ÇÏ´Â ¸Ó½Å¿¡¼, `-g -O'´Â `-g'¸¸Å Àß ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. ¸¸ÀÏ Àǽɽº·´´Ù¸é, `-g'¸¸ °¡Áö°í Àç ÄÄÆÄÀÏ Çضó. ±×¸®°í ÀÌ°ÍÀÌ ¹®Á¦¸¦ ÇØ°áÇÑ´Ù¸é, ¹ö±×(Å×½ºÆ® °æ¿ì¸¦ Æ÷ÇÔÇÏ¿©!)¸¦ ¿ì¸®¿¡°Ô ¸®Æ÷ÆÃÇضó.
GNU C ÄÄÆÄÀÏ·¯ÀÇ ¿¹Àü ¹öÀüÀº µð¹ö±ë Á¤º¸¸¦ À§ÇÑ ´Ù¾çÇÑ ¿É¼Ç `-gg' ¸¦ Çã¿ëÇÑ´Ù. GDB´Â ´õÀÌ»ó ÀÌ Çü½ÄÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù; ¸¸ÀÏ ¿©·¯ºÐÀÇ GNU C ÄÄÆÄÀÏ·¯°¡ ÀÌ ¿É¼ÇÀ» °¡Áø´Ù¸é, ´õÀÌ»ó »ç¿ëÇÏÁö ¸¶¶ó.
run
r
run
¸í·É¾î¸¦ »ç¿ëÇضó.
¿©·¯ºÐÀº ¿ì¼± ÇÁ·Î±×·¥ À̸§(VxWorks¸¦ Á¦¿ÜÇÏ°í)À» ÁöÁ¤Çϰųª file
³ª exec-file
¸í·É¾î¸¦ »ç¿ëÇؼ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.(ÆÄÀÏÀ» ÁöÁ¤Çϱâ À§ÇÑ ¸í·É¾îµé ¼½¼ÇÀ» ÂüÁ¶Çضó.)
¸¸ÀÏ ¿©·¯ºÐÀÌ ÇÁ·Î¼¼½º¸¦ Áö¿øÇÏ´Â ½ÇÇà ȯ°æÇÏ¿¡¼ ÇÁ·Î±×·¥À» µ¹¸°´Ù¸é,
run
Àº ÇÏÀ§ ÇÁ·Î¼¼½º¸¦ ¸¸µé°í, ±× ÇÁ·Î¼¼½º°¡ ¿©·¯ºÐÀÇ
ÇÁ·Î±×·¥ÇÏ¿¡¼ µ¹¾Æ°¡µµ·Ï ¸¸µç´Ù.
(ÇÁ·Î¼¼½º°¡ ¾ø´Â ȯ°æ¿¡¼, run
Àº ÇÁ·Î±×·¥À» ½ÃÀÛÇϱâ À§ÇØ
À̵¿ÇÑ´Ù.)
ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀº »óÀ§ ÇÁ·Î¼¼½º¿¡¼ ¹ÞÀº Á¤º¸¿¡ ÀÇÇØ ¿µÇâÀ» ¹Þ´Â´Ù. GDB´Â ÀÌ Á¤º¸¸¦ Á¦°øÇϱâ À§ÇÑ ¹æ¹ýÀ» Á¦°øÇϸç, ¿©·¯ºÐÀº ÇÁ·Î±×·¥À» ½ÃÀÛÇϱâ Àü¿¡ ÇØ¾ß ÇÑ´Ù.(¿©·¯ºÐÀº ÇÁ·Î±×·¥À» ½ÃÀÛÇÑ ÈÄ ¹Ù²Ü¼ö ÀÖÁö¸¸, ±×·± º¯È´Â ÇÁ·Î±×·¥À» ½ÃÀÛÇÏ´Â ´ÙÀ½ ¹øºÎÅÍ ¿µÇâÀ» ÁØ´Ù.) ÀÌ Á¤º¸´Â 4°³ÀÇ ¹üÁÖ·Î ³ª´©¾î Áø´Ù.
run
¸í·É¾îÀÇ ÀÎÀڷνá ÇÁ·Î±×·¥¿¡ ÁÖ±â À§ÇÑ ÀÎÀÚ¸¦ ÁöÁ¤ÇÑ´Ù.
¸¸ÀÏ shellÀ» ¿©·¯ºÐÀÇ Å¸°Ù¿¡¼ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù¸é, shellÀº ÀÎÀÚ¸¦ Àü´ÞÇϱâ À§ÇØ
»ç¿ëµÇ¸ç ¿©·¯ºÐÀº ÀÎÀÚ¸¦ ±â¼úÇÒ¶§ ÆíÇÏ°Ô(wildcard È®ÀåÀ̳ª º¯¼ö ġȯ) »ç¿ëÇÒ¼ö
ÀÖ´Ù. Unix ½Ã½ºÅÛ¿¡¼, ¿©·¯ºÐÀº SHELL
ȯ°æ º¯¼ö¿¡¼ »ç¿ëµÈ
shellÀ» Á¦¾îÇÒ¼ö ÀÖ´Ù. ÇÁ·Î±×·¥ ÀÎÀÚµé ¼½¼ÇÀ»
ÂüÁ¶Çضó.
set environment
¿Í
unset environment
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
ÇÁ·Î±×·¥ ȯ°æ¼½¼ÇÀ» ÂüÁ¶Çضó.
cd
¸í·É¾î¸¦ »ç¿ëÇÏ¿© GDB ÀÛ¾÷ µð·ºÅ丮¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù.
ÇÁ·Î±×·¥ÀÇ ÀÛ¾÷ µð·ºÅ丮¼½¼ÇÀ» ÂüÁ¶Çضó.
run
¸í·É¾î ¶óÀο¡¼ Ç¥ÁØ ÀԷ°ú Ãâ·ÂÀ»
¸®´ÙÀÌ·º¼Ç ÇÒ¼ö ÀÖÀ¸¸ç ¿©·¯ºÐÀº ÇÁ·Î±×·¥¿¡ ´Ù¸¥ ÀåÄ¡¸¦ ¼³Á¤Çϱâ À§ÇØ
tty
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
ÇÁ·Î±×·¥ÀÇ ÀԷ°ú Ãâ·Â¼½¼ÇÀ» ÂüÁ¶Çضó.
°æ°í: ÀԷ°ú Ãâ·Â ¸®´ÙÀÌ·º¼ÇÀÌ ÀÛµ¿ÇÏ´Â µ¿¾È, ¿©·¯ºÐÀº ´Ù¸¥
ÇÁ·Î±×·¥À» µð¹ö±ëÇÏ´Â ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀ» Àü´ÞÇϱâ À§ÇØ ÆÄÀÌÇÁ¸¦ »ç¿ëÇÒ¼ö ¾ø´Ù.;
¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÌ°ÍÀ» ½ÃµµÇÑ´Ù¸é, GDB´Â ÇÁ·Î±×·¥À» À߸ø µð¹ö±ë Çϴ°ÍÀÌ µÈ´Ù.
¿©·¯ºÐÀÌ run
¸í·É¾î¸¦ »ç¿ëÇϸé, ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥Àº Áï½Ã
½ÇÇàµÈ´Ù. ÇÁ·Î±×·¥À» ¸ØÃß±â À§ÇØ Àç¹è¿ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ Åä·ÐÇÏ°íÀÚ Çϸé, ÁßÁö¿Í °è¼Ó ¼½¼ÇÀ» ÂüÁ¶Çضó.
ÀÏ´Ü ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ ÁßÁöÇÑ´Ù¸é, ¿©·¯ºÐÀº print
³ª
call
¸í·É¾î¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥³» ÇÔ¼ö¸¦ È£ÃâÇÒ¼ö ÀÖ´Ù.
µ¥ÀÌŸ °Ë»ç ¼½¼ÇÀ» ÂüÁ¶Çضó.
GDB°¡ ½Éº¼À» ÀÐÀº ¸¶Áö¸· ½Ã°£ÀÌÈÄ ½Éº¼ ÆÄÀÏÀÇ ¼öÁ¤ ½Ã°£ÀÌ ¹Ù²ï´Ù¸é, GDB´Â ±× ½Éº¼ Å×ÀÌºí ¹ö¸®°í ´Ù½Ã ÀоîµéÀδÙ. ½Éº¼À» ´Ù½Ã ÀÐÀ»¶§, GDB´Â ÇöÀç breakpoint¸¦ À¯ÁöÇÒ·Á°í ÇÑ´Ù.
¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ ÀÎÀÚµéÀº run
¸í·É¾îÀÇ ÀÎÀÚ¿¡ ÀÇÇØ ÁöÁ¤
µÈ´Ù. ÀÎÀÚµéÀº shell·Î Àü´ÞµÇ°í, wildcard ¹®ÀÚµé·Î È®ÀåµÇ°í I/OÀÇ ¸®´ÙÀÌ·º¼ÇÀ»
ÀÌÇàÇϸç ÇÁ·Î±×·¥¿¡ Àü´ÞµÈ´Ù.
¿©·¯ºÐÀÇ SHELL
ȯ°æ º¯¼ö(¸¸ÀÏ Á¸ÀçÇÑ´Ù¸é)´Â GDB°¡ ¹«½¼ shellÀ»
»ç¿ëÇÏ´ÂÁö¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ SHELL
À» Á¤ÀÇÇÏÁö ¾Ê¾Ò´Ù¸é,
GDB´Â /bin/sh
À» »ç¿ëÇÑ´Ù.
ÀÎÀÚ°¡ ¾ø´Â run
˼ ˟˂ run
¿¡ ÀÇÇØ »ç¿ëµÈ °°Àº ÀÎÀÚ³ª set args
¸í·É¾î¿¡ ÀÇÇØ ¼³Á¤µÈ ÀÎÀÚ¸¦ »ç¿ëÇÑ´Ù.
set args
set args
°¡ ÀÎÀÚ°¡ ¾ø´Ù¸é, run
Àº ÀÎÀÚ ¾øÀÌ
ÇÁ·Î±×·¥À» ½ÇÇà½ÃŲ´Ù. ÀÏ´Ü ¿©·¯ºÐÀÌ ÀÎÀÚ¸¦ °¡Áö°í ÇÁ·Î±×·¥À» µ¹¸±¶§
´ÙÀ½¹ø run
ÇϱâÀü¿¡ set args
À» »ç¿ëÇϴ°ÍÀº
ÀÎÀÚ ¾øÀÌ ´Ù½Ã µ¹¸®±â À§ÇÑ À¯ÀÏÇÑ ¹æ¹ýÀÌ´Ù.
show args
environment´Â ȯ°æ º¯¼öµéÇÏ°í °ªµé·Î ÀÌ·ç¾îÁø´Ù. ȯ°æ º¯¼öµéÀº ¿©·¯ºÐÀÇ »ç¿ëÀÚ À̸§, Ȩ µð·ºÅ丮, Å͹̳ΠŸÀÔ ±×¸®°í µ¹¸®´Â ÇÁ·Î±×·¥ÀÇ Å½»ö °æ·ÎµîÀ» ±â·ÏÇÑ´Ù. º¸Åë ¿©·¯ºÐÀº shell¿¡¼ ȯ°æ º¯¼ö¸¦ ¼³Á¤ÇÑ´Ù. ±×¸®°í ¿©·¯ºÐÀÌ µ¹¸®´Â ´Ù¸¥ ÇÁ·Î±×·¥ ¸ðµÎ¿¡ ÀÇÇØ »ó¼ÓµÈ´Ù. µð¹ö±ë¶§, ´Ù½Ã GDB¸¦ ½ÃÀÛ ÇÏ´Â°Í ¾øÀÌ ¼öÁ¤µÈ ȯ°æ º¯¼ö·Î ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥À» µ¹¸®´Âµ¥ À¯¿ëÇÏ´Ù.
path directory
PATH
ȯ°æ º¯¼ö(½ÇÇàÀ» À§ÇÑ Å½»ö
°æ·Î)¾Õ¿¡ directory¸¦ Ãß°¡ÇÑ´Ù.
¿©·¯ºÐÀº `:'³ª whitespace·Î ºÐ¸®µÇ´Â ¸î¸î µð·ºÅ丮 À̸§À»
ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
¸¸ÀÏ directory°¡ °æ·Î¿¡ ÀÌ¹Ì ÀÖ´Ù¸é, ¾ÕÀ¸·Î À̵¿½ÃÅ°°í »¡¸® ã°Ô
µÈ´Ù.
¿©·¯ºÐÀº GDB°¡ °æ·Î¸¦ Ž»öÇÒ¶§ ÇöÀç ÀÛ¾÷ µð·ºÅ丮°¡ ¹«¾ùÀÎÁö¸¦ ÂüÁ¶Çϱâ À§ÇØ
`$cwd'¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ `.'¸¦ »ç¿ëÇÑ´Ù¸é, ±×°ÍÀº ¿©·¯ºÐÀÌ path
¸í·É¾î¸¦ ½ÇÇàÇÏ´Â µð·ºÅ丮¸¦ °¡¸®Å²´Ù. GDB´Â Ž»ö °æ·Î¿¡ directory¸¦
Ãß°¡Çϱâ Àü¿¡ directory ÀÎÀÚ(ÇöÀç °æ·Î¸¦ °¡Áö°í ÀÖ´Â)¿¡ ÀÖ´Â
`.'¸¦ ¹Ù²Û´Ù.
show paths
PATH
ȯ°æ º¯¼ö)
show environment [varname]
env
·Î½á
environment
¸¦ Ãà¾àÇÒ¼ö ÀÖ´Ù.
set environment varname [=] value
set env USER = fooUnix ÇÁ·Î±×·¥¿¡°Ô »ç¿ëÀÚÀÇ À̸§Àº `foo'À̶ó°í ¸»ÇÏ´Â °ÍÀÌ´Ù. (`='±ÙóÀÇ ½ºÆäÀ̽º´Â ¿©±â¼ ¸íÈ®È÷ »ç¿ëµÇ¾ú´Ù; ±×µéÀº ½ÇÁ¦·Î ¿ä±¸µÇÁö´Â ¾Ê´Â´Ù.)
unset environment varname
unset environment
´Â ºó °ªÀ¸·Î ´ëÀÔÇϱ⺸´Ù´Â ȯ°æº¯¼ö¿¡¼
º¯¼ö¸¦ Á¦°ÅÇÑ´Ù.
°æ°í: ¸¸ÀÏ shellÀÌ Á¸ÀçÇÑ´Ù¸é(¶Ç´Â ¾ø´Ù¸é /bin/sh
)
GDB´Â SHELL
ȯ°æ º¯¼ö°¡ °¡¸®Å°´Â shellÀ» »ç¿ëÇÏ¿© ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥À»
µ¹¸°´Ù.
¿©·¯ºÐÀÇ SHELL
º¯¼ö´Â ÃʱâÈ ÆÄÀÏ¿¡¼ µ¹¸®´Â shellÀ̶ó¸é--C-shell
¿¡¼ `.cshrc', BASH¿¡¼ `.bashrc'--¿©·¯ºÐÀº ÇÁ·Î±×·¥¿¡
¿µÇâÀ» ÁÖ´Â ±× ÆÄÀÏ¿¡ º¯¼ö¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀº ȯ°æº¯¼öÀÇ ¼³Á¤À» `.login'³ª `.profile'°ú °°ÀÌ
·Î±×ÀÎÇÒ¶§ µ¹¾Æ°¡´Â ÆÄÀÏ·Î ¿Å±æ¼ö ÀÖ´Ù.
¿©·¯ºÐÀÌ run
·Î ÇÁ·Î±×·¥À» ½ÃÀÛÇÒ¶§¸¶´Ù, GDBÀÇ ÇöÀç ÀÛ¾÷µð·ºÅ丮¿¡¼
ÀÛ¾÷ µð·ºÅ丮¸¦ »ó¼Ó¹Þ´Â´Ù. GDB ÀÛ¾÷ µð·ºÅ丮´Â ºÎ¸ð ÇÁ·Î¼¼½º¿¡¼
»ó¼ÓµÇ´Â °ÍÀÌ ¹«¾ùÀ̵çÁö ÃʱâÈ ÇÏÁö¸¸, ¿©·¯ºÐÀº cd
¸í·É¾î·Î
GDB³»¿¡¼ »õ·Î¿î ÀÛ¾÷ µð·ºÅ丮¸¦ ÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
GDB ÀÛ¾÷ µð·ºÅ丮 ¶ÇÇÑ ÀÛ¾÷À» À§ÇØ GDB¿¡¼ ÆÄÀÏÀ» ÁöÁ¤ÇÏ´Â ¸í·É¾î¸¦ ±âº»ÀûÀ¸·Î Á¦°øµÈ´Ù. ÆÄÀÏÀ» ÁöÁ¤ÇÏ´Â ¸í·É¾îµé ¼½¼ÇÀ» ÂüÁ¶Çضó.
cd directory
pwd
±âº»ÀûÀ¸·Î, GDB¿¡¼ ¿©·¯ºÐÀÌ µ¹¸®´Â ÇÁ·Î±×·¥Àº GDB°¡ »ç¿ëÇÏ´Â °°Àº Å͹̳ο¡ ÀԷ°ú Ãâ·ÂÀ» ÇÑ´Ù. GDB´Â Å͹̳ÎÀ» ¿©·¯ºÐ°ú ´ëÈÇϱâ À§ÇÑ ¸ðµå·Î ¹Ù²Û´Ù. ±×·¯³ª GDB´Â ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â Å͹̳Π¸ðµå¸¦ ±â·ÏÇÑµÚ ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» ´Ù½Ã µ¹¸±¶§ ´Ù½Ã ¹Ù²Û´Ù.
info terminal
¿©·¯ºÐÀº run
¸í·É¾î½Ã °¡Áö´Â shell ¸®´ÙÀÌ·º¼ÇÀ» »ç¿ëÇÏ¿©
ÇÁ·Î±×·¥ÀÇ ÀԷ°ú Ãß·ÂÀ» ¸®´ÙÀÌ·º¼Ç ÇÒ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î,
run > outfile
ÇÁ·Î±×·¥À» ½ÃÀÛÇϸé, Ãâ·ÂÀ» `outfile'À¸·Î µ¹¸°´Ù.
ÇÁ·Î±×·¥ÀÇ ÀԷ°ú Ãâ·ÂÀ» ÁöÁ¤Çϱâ À§ÇÑ ¶Ç ´Ù¸¥ ¹æ¹ýÀº tty
¸í·É¾îÀÌ´Ù. ÀÌ ¸í·É¾î´Â ÀÎÀÚ·Î ÆÄÀÏ À̸§À» °¡Áö¸ç ´ÙÀ½ run
¸í·É¾î½Ã ±âº»ÀûÀ¸·Î ÀÌ ÆÄÀÏÀ» »ç¿ëÇÑ´Ù. ¶ÇÇÑ ÀÌ°ÍÀº ´ÙÀ½ run
¸í·É¾î¸¦ À§ÇØ,
ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ À§ÇÑ Å͹̳ΠÁ¦¾î¸¦ ¸®¼ÂÇÑ´Ù.
¿¹¸¦ µé¾î,
tty /dev/ttyb
¿¬¼ÓÀûÀÎ run
¸í·É¾î¸¦ °¡Áö°í ½ÃÀÛÇÏ´Â ÇÁ·Î¼¼½ºµéÀº Å͹̳Î
`/dev/ttyb'¿¡ ÀԷ°ú Ãâ·ÂÀ» Çϸç Á¦¾î ´Ü¸»±â·Î½á ÀÌ°ÍÀ» »ç¿ëÇÑ´Ù.
run
¿¡¼ÀÇ ¸í¹éÇÑ ¸®´ÙÀÌ·º¼ÇÀº tty
¸í·É¾î¸¦ ¹«È¿È
½ÃÅ°°í ÀÔÃâ°Ý ÀåÄ¡¿¡¼ È¿°úÀ» °¡Áø´Ù. ±×·¯³ª Á¦¾î ´Ü¸»±â¿¡¼³ È¿°ú°¡ ¾ø´Ù.
¿©·¯ºÐÀÌ tty
¸í·É¾î³ª run
¸í·É¾î¿¡¼ ÀÔ·ÂÀ» ¸®´ÙÀÌ·º¼Ç ½Ãų¶§,
¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¸¦ À§ÇÑ ÀԷ¸¸ÀÌ ¿µÇâÀ» ¹Þ´Â´Ù. GDB¿¡¼ÀÇ ÀÔ·ÂÀº ¿©ÀüÈ÷ ´Ü¸»±â¿¡¼ ³ª¿Â´Ù.
attach process-id
info files
´Â ¿©·¯ºÐÀÇ ¿¢Æ¼ºêµÈ Ÿ°ÙÀ» º¸¿©ÁØ´Ù.)
¸í·É¾î´Â ÇÁ·Î¼¼½º ID¸¦ ÀÎÀÚ·Î °¡Áø´Ù. Unix ÇÁ·Î¼¼½º Áß ÇÁ·Î¼¼½º ID¸¦ ã±â
À§ÇÑ ÀϹÝÀûÀÎ ¹æ¹ýÀº ps
¸¦ ÀÌ¿ëÇϰųª `jobs -l'
shell ¸í·É¾î¸¦ °¡Áö°í ÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ¸í·É¾î ½ÇÇàÈÄ 2¹ø RET¸¦ ´©¸¥´Ù¸é attach
´Â ¹Ýº¹ÇÏÁö ¾Ê´Â´Ù.
attach
¸¦ »ç¿ëÇϱâ À§ÇØ, ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥Àº ÇÁ·Î¼¼½º¸¦ Áö¿øÇÏ´Â
ȯ°æÇÏ¿¡¼ µ¹¾Æ°¡¾ß ÇÑ´Ù.; ¿¹¸¦ µé¾î, attach
´Â OS°¡ ¾ø´Â bare-º¸µå
Ÿ°ÙÀÇ ÇÁ·Î±×·¥¿¡¼´Â ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù. ¿©·¯ºÐÀº ¶ÇÇÑ ½ÅÈ£¸¦ º¸³»±â À§ÇÑ
Çã°¡±ÇÀÌ ÀÖ¾î¾ß ÇÑ´Ù.
attach
¸¦ »ç¿ëÇÒ¶§, ¿©·¯ºÐÀº ÇÁ·Î¼¼½º¿¡¼ µ¹¾Æ°¡´Â ÇÁ·Î±×·¥À»
ÁöÁ¤Çϱâ À§ÇØ file
¸í·É¾î¸¦ ¿ì¼± »ç¿ëÇØ¾ß ÇÑ´Ù. ±×¸®°í ½Éº¼
Å×À̺íÀ» ·ÎµåÇØ¾ß ÇÑ´Ù. ÆÄÀÏÀ» ÁöÁ¤Çϱâ À§ÇÑ ¸í·É¾î
¼½¼ÇÀ» ÂüÁ¶Çضó.
ÁöÁ¤µÈ ÇÁ·Î¼¼½º¸¦ µð¹ö±ëÇϱâ À§ÇØ Àç¹è¿ÈÄ GDB°¡ ÇؾßÇÒ Ã¹¹ø° ÀÏÀº ÇÁ·Î¼¼½º¸¦
¸ØÃß´Â °ÍÀÌ´Ù. ¿©·¯ºÐÀº run
À¸·Î ÇÁ·Î¼¼½º¸¦ µ¹¸±¶§ GDBÀÇ ¸ðµç
¸í·É¾î¸¦ °¡Áö°í ºÎÂøµÈ ÇÁ·Î¼¼½º¸¦ °Ë»çÇÏ°í ¼öÁ¤ÇÒ¼ö ÀÖ´Ù. ¿©·¯ºÐÀº breakpoint¸¦
¼³Á¤ÇÒ¼ö ÀÖ´Ù; ¿©·¯ºÐÀº step°ú continue¸¦ ÇÒ¼ö ÀÖ´Ù; ¿©·¯ºÐÀº ½ºÅ丮Áö¸¦ ¼öÁ¤
ÇÒ¼ö ÀÖ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ ÇÁ·Î¼¼½º°¡ °è¼Ó µ¹¾Æ°¡µµ·Ï ÇÒ·Á¸é, ÇÁ·Î¼¼½º¸¦ GDB¿¡
ºÎÂø½ÃŲÈÄ continue
¸í·É¾î¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
detach
detach
¸í·É¾î¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ÇÁ·Î¼¼½º¸¦ ¶¼¾î³»µµ ½ÇÇàÀº °è¼ÓµÈ´Ù. detach
¸í·É¾î ÈÄ, ÇÁ·Î¼¼½º¿Í GDB´Â ¿ÏÀüÈ÷ µ¶¸³ÀûÀÌµÇ¸ç ¿©·¯ºÐÀº
´Ù¸¥ ÇÁ·Î¼¼½º¸¦ attach
½ÃÅ°°Å³ª run
·Î ÇÁ·Î¼¼½º¸¦
½ÃÀÛÇÒ¼ö ÀÖ´Ù. ¿©·¯ºÐÀÌ ¸í·É¾î ½ÇÇàÈÄ ´Ù½Ã RET¸¦ ´©¸¥´Ù¸é
detach
´Â ¹Ýº¹µÇÁö ¾Ê´Â´Ù.
¿©·¯ºÐÀÌ GDB¸¦ ³ª°¡°Å³ª ºÎÂø½ÃŲ ÇÁ·Î¼¼½º¸¦ °¡Áö°í ÀÖ´Â µ¿¾È run
¸í·É¾î¸¦ »ç¿ëÇϸé, ¿©·¯ºÐÀº ±× ÇÁ·Î¼¼½º¸¦ Á׿©¾ß ÇÑ´Ù. ±âº»ÀûÀ¸·Î, GDB´Â
¿©·¯ºÐÀÌ À̰͵é Áß Çϳª¸¦ Çß´ÂÁö¸¦ È®½ÅÇϱâ À§ÇØ ÁúÀÇÇÑ´Ù.; ¿©·¯ºÐÀº set
confirm
¸í·É¾î¸¦ »ç¿ëÇÏ¿© È®½ÇÈ÷ ÇÒ ÇÊ¿ä°¡ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ Á¦¾îÇÒ¼ö
ÀÖ´Ù.(°æ°í ¿É¼Çµé°ú ¸Þ¼¼Áöµé ¼½¼ÇÀ»
ÂüÁ¶Çضó.)
kill
¸¸ÀÏ ¿©·¯ºÐÀÌ µ¹¾Æ°¡°í ÀÖ´Â ÇÁ·Î±×·¥ ´ë½Å ÄÚ¾î ´ýÇÁ¸¦ µð¹ö±ëÇÏ·Á°í ÇÑ´Ù¸é ÀÌ ¸í·É¾î´Â À¯¿ëÇÏ´Ù. GDB´Â ÇÁ·Î±×·¥ÀÌ µ¹¾Æ°¡°í ÀÖ´Â µ¿¾È ÄÚ¾î ´ýÇÁ ÆÄÀÏÀ» ¹«½ÃÇÑ´Ù.
¸î¸î OS¿¡¼, ¿©·¯ºÐÀÌ GDB³»¿¡¼ ÇÁ·Î±×·¥¿¡ breakpoint¸¦ °É¾îµÐ °æ¿ì
GDB¿Ü¿¡¼ ÀÌ ÇÁ·Î±×·¥À» ½ÇÇàÇÒ¼ö ¾ø´Ù. ¿©·¯ºÐÀº ÀÌ·± »óȲ¿¡¼ µð¹ö°Å ¹Û¿¡¼
ÀÌ ÇÁ·Î±×·¥À» µ¹¸±¼ö ÀÖµµ·Ï Çϱâ À§ÇØ kill
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» Àç ÄÄÆÄÀÏÇÏ°í ´Ù½Ã ¸µÅ©ÇÑ´Ù°í Çصµ kill
¸í·É¾î´Â À¯¿ëÇÏ´Ù. ¿Ö³ÄÇÏ¸é ¸¹Àº ½Ã½ºÅÛ¿¡¼ ÇÁ·Î¼¼½º°¡ µ¹¾Æ°¡´Â µ¿¾È ½ÇÇà
ÆÄÀÏÀ» ¼öÁ¤Çϴ°ÍÀÌ ºÒ°¡´ÉÇϱ⠶§¹®ÀÌ´Ù. ÀÌ·± °æ¿ì ´ÙÀ½ ¹ø run
¿¡¼, GDB´Â ÆÄÀÏÀÌ ¹Ù²î¾ú´Ù´Â
°ÍÀ» ÀνÄÇÏ¸ç ½Éº¼ Å×À̺íÀ» ´Ù½Ã Àд´Ù.
(¿©·¯ºÐÀÇ ÇöÀçÀÇ breakpoint ¼³Á¤°ªÀ» º¸Á¸ÇÒ·Á°í ½ÃµµÇÏ´Â µ¿¾È)
¸î¸î OS´Â ÆÄÀÏ ½Ã½ºÅÛ ¼ºê·çƾÀ» »ç¿ëÇÏ´Â ÀÛµ¿ÁßÀÎ ÇÁ·Î¼¼½ºÀÇ À̹ÌÁö¸¦ °Ë»çÇϱâ
À§ÇØ »ç¿ëµÉ¼ö ÀÖ´Â `/proc'À̶ó ºÒ¸®´Â ±â´ÉÀ» Á¦°øÇÑ´Ù.
¸¸ÀÏ GDB°¡ ÀÌ ±â´ÉÀ» °¡Áø OS¿¡¼ ÀÛµ¿ÁßÀ̶ó¸é, info proc
¸í·É¾î´Â
ÇÁ·Î±×·¥ÀÌ µ¹¾Æ°¡´Â ÇÁ·Î¼¼½º¿¡ °üÇÑ ¸î°¡Áö Á¤º¸¸¦ º¸°í Çϱâ À§ÇØ ÀÌ¿ëµÉ¼ö ÀÖ´Ù.
info proc
´Â procfs
¸¦ Áö¿øÇÏ´Â SVR4 ½Ã½ºÅÛ¿¡¼¸¸
ÀÛµ¿ÇÑ´Ù.
info proc
info proc mappings
info proc times
info proc id
info proc status
info proc all
¸î¸î OS¿¡¼, ´ÜÀÏ ÇÁ·Î±×·¥Àº ½ÇÇà½Ã ÇϳªÀÌ»óÀÇ ¾²·¹µå¸¦ °¡ÁúÁöµµ ¸ð¸¥´Ù. ¾²·¹µåÀÇ Á¤È®ÇÑ Àǹ̴ OS¸¶´Ù ´Ù¸£Áö¸¸, ÀϹÝÀûÀ¸·Î ´ÜÀÏ ÇÁ·Î±×·¥¿¡¼ ¾²·¹µå´Â ´ÙÁß ÇÁ·Î¼¼½º¿Í ºñ½ÁÇÏ´Ù.-- ÇϳªÀÇ ÁÖ¼Ò °ø°£À» °øÀ¯Çϴ°ÍÀ» Á¦¿ÜÇÏ°í(Áï, ±×µéÀº °°Àº º¯¼ö¸¦ °Ë»çÇÏ°í ¼öÁ¤ÇÑ´Ù.) ´Ù¸¥ ÇÑÆíÀ¸·Î, °¢ ¾²·¹µå´Â ÀÚ½ÅÀÇ ·¹Áö½ºÅÍ¿Í ½ÇÇེÅà ±×¸®°í °¢ÀÚÀÇ ¸Þ¸ð¸®¸¦ °¡Áø´Ù.
GDB´Â ´ÙÁß ¾²·¹µå ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù.
°æ°í: ÀÌ ±â´ÉÀº ¾²·¹µå¸¦ Áö¿øÇÏ´Â OSÇÏÀÇ ¸ðµç GDB ¼³Á¤¿¡¼ ÀÌ¿ëÇÒ¼ö Àִ°ÍÀº ¾Æ´Ï´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÇ GDB°¡ ¾²·¹µå¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù¸é, ÀÌµé ¸í·É¾î´Â È¿°ú°¡ ¾ø´Ù. ¿¹¸¦ µé¾î, ¾²·¹µå Áö¿øÀ» ÇÏÁö ¾Ê´Â ½Ã½ºÅÛÀº `info threads'½Ã Á¤º¸¸¦ º¸¿©ÁÖÁö ¾ÊÀ¸¸ç ´ÙÀ½°ú °°ÀÌ
thread
¸í·É½Ã À̸¦ °ÅÀýÇÑ´Ù.:(gdb) info threads (gdb) thread 1 Thread ID 1 not known. Use the "info threads" command to see the IDs of currently known threads.
GDBÀÇ ¾²·¹µå µð¹ö±ë ±â´ÉÀº ÇÁ·Î±×·¥À» µ¹¸®´Â µ¿¾È ¸ðµç ¾²·¹µå¸¦ °üÂûÇÒ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. --±×·¯³ª GDB°¡ Á¦¾î¸¦ °¡Áö°í ÀÖÀ»¶§´Â ¾ðÁ¦³ª, Ưº°È÷ ÇϳªÀÇ ¾²·¹µå°¡ µð¹ö±ëÀÇ Áß½ÉÀÌ´Ù. ÀÌ ¾²·¹µå´Â current thread¶ó ºÒ¸°´Ù. µð¹ö±ë ¸í·É¾î´Â ÇöÀç ¾²·¹µåÀÇ °üÁ¡¿¡¼ ÇÁ·Î±×·¥ Á¤º¸¸¦ º¸¿©ÁØ´Ù.
GDB°¡ ÇÁ·Î±×·¥¿¡¼ »õ·Î¿î ¾²·¹µå¸¦ ¹ß°ßÇÒ¶§¸¶´Ù, `[New systag]' ÇüÅ·Π¾²·¹µå¿¡ ´ëÇÑ Å¸°Ù ½Ã½ºÅÛ ½Äº°ÀÚ¸¦ º¸¿©ÁØ´Ù. systag´Â ¾²·¹µå ½Äº°ÀÚÀ̸ç ÇüÅ´ ½Ã½ºÅÛ¿¡ ÀÇÁ¸ÇÑ´Ù. ¿¹¸¦ µé¾î, LynxOS¿¡¼ ¿©·¯ºÐÀº ´ÙÀ½À» º¼°ÍÀÌ´Ù;
[New process 35 thread 27]
GDB°¡ »õ·Î¿î ¾²·¹µå¸¦ ¹ß°ßÇÒ¶§ º¼¼ö ÀÖ´Ù. ´ëÁ¶ÀûÀ¸·Î, SGI ½Ã½ºÅÛ¿¡¼ systag´Â ´Ü¼øÈ÷ `process 368'¿Í °°´Ù.
µð¹ö±ë ¸ñÀûÀ¸·Î, GDB´Â ÀÚ½ÅÀÇ ¾²·¹µå ¼ö--Ç×»ó ´ÜÀÏ Á¤¼ö--¸¦ °¡Áö°í ÀÖ´Ù.
info threads
(gdb) info threads 3 process 35 thread 27 0x34e5 in sigpause () 2 process 35 thread 23 0x34e5 in sigpause () * 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) at threadtest.c:68
thread threadno
(gdb) thread 2 [Switching to process 35 thread 23] 0x34e5 in sigpause ()`[New ...]'¸Þ¼¼Áö¿¡¼ ó·³, `Switching to'´ÙÀ½ÀÇ ÅؽºÆ®ÀÇ ÇüÅ´ ¾²·¹µå ½Äº°À» À§ÇÑ ½Ã½ºÅÛ Æí¸®¼º¿¡ ÀÇÁ¸ÇÑ´Ù.
thread apply [threadno] [all] args
thread apply
¸í·É¾î´Â ¿©·¯ºÐÀÌ Çϳª³ª ±× ÀÌ»óÀÇ ¾²·¹µå ¸í·É¾î¸¦
Àû¿ëÇÒ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù. ¿©·¯ºÐÀº ¸í·É¾î ÀÎÀÚ threadno·Î ¿µÇ⠹ޱ⸦
¿øÇÏ´Â ¾²·¹µåÀÇ ¼ö¸¦ ÁöÁ¤Çضó. threadno´Â `info threads'
Ãâ·ÂÀÇ Ã³À½ Çʵ忡¼ º¸¿©ÁØ°Íó·³ ³»ºÎ ¾²·¹µå ¼öÀÌ´Ù.
¸ðµç ¾²·¹µå¿¡ ¸í·É¾î¸¦ Àû¿ëÇϱâ À§ÇØ, thread apply all
args¸¦ »ç¿ëÇضó.
GDB°¡ breakpoint, signal ¶§¹®¿¡ ÇÁ·Î±×·¥À» ÁßÁö½Ãų¶§¸¶´Ù, GDB´Â ÀÚµ¿ÀûÀ¸·Î breakpoint³ª signalÀÌ ÀÏ¾î³ ¾²·¹µå¸¦ ¼±ÅÃÇÑ´Ù. GDB´Â ¾²·¹µå¸¦ ½Äº°Çϱâ À§ÇØ `[Switching to systag]' ÇüÅÂÀÇ ¸Þ¼¼Áö¸¦ °¡Áö°í ¹®¸Æ ±³È¯À» Çϵµ·Ï ÇØÁØ´Ù.
¿©·¯ºÐÀÌ ´ÙÁß ¾²·¹µå ÇÁ·Î±×·¥À» ¸ØÃß°í ½ÃÀÛÇÒ¶§ GDB°¡ ÇൿÇÏ´Â ¹æ¹ý¿¡ ´ëÇÏ¿© ´õ ¸¹Àº Á¤º¸¸¦ ¿øÇÑ´Ù¸é, ´ÙÁß ¾²·¹µå ÇÁ·Î±×·¥¿¡¼ ÁßÁö¿Í ½ÃÀÛ ¼½¼ÇÀ» ÂüÁ¶Çضó.
´ÙÁß ¾²·¹µå ÇÁ·Î±×·¥¿¡¼ watchpoint¿¡ °üÇÑ Á¤º¸¸¦ ¿øÇÑ´Ù¸é watchpoints ¼³Á¤ ¼½¼ÇÀ» ÂüÁ¶Çضó.
GDB´Â fork
ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Ãß°¡ÀûÀÎ ÇÁ·Î¼¼½º¸¦ ¸¸µå´Â ÇÁ·Î±×·¥À»
µð¹ö±ë Çϱâ À§ÇÑ Æ¯º°ÇÑ Áö¿øÀ» ÇÏÁö ¾Ê´Â´Ù. ÇÁ·Î±×·¥ÀÌ forkµÇ¾úÀ»¶§, GDB´Â ºÎ¸ð
ÇÁ·Î¼¼½º µð¹ö±ëÀ» °è¼ÓÇϸç ÀÚ½Ä ÇÁ·Î¼¼½º´Â Æ÷ÇÔÇÏ¿© µ¹¾Æ°¡Áö ¾Ê´Â´Ù.
¿©·¯ºÐÀÌ ÀÚ½ÄÀÌ ½ÇÇàÇÏ´Â ÄÚµåºÎºÐ¿¡ breakpoint¸¦ ¼³Á¤Çß´Ù¸é, ÀÚ½ÄÀº Á¾·á¸¦
¾ß±â½ÃÅ°´Â(½ÅÈ£¸¦ ÀâÁö ¾Ê´Â´Ù¸é) SIGTRAP
½ÅÈ£¸¦ °®´Â´Ù.
±×·¯³ª, ¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ µð¹ö±ëÇϱ⸦ ¿øÇÑ´Ù¸é, ±×·¸°Ô ÈûµéÁö´Â
¾Ê´Ù. forkÈÄ¿¡ ÀÚ½Ä ÇÁ·Î¼¼½º ÄÚµå ºÎºÐ¿¡ sleep
¸¦ È£ÃâÇÏ¿© ³õ¾Æ¶ó.
¾î¶² ȯ°æº¯¼ö°¡ ¼³Á¤µÇ¾ú°Å³ª ¾î¶² ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù¸é sleep½ÃÅ°´Â °ÍÀº À¯¿ëÇÏ´Ù.
ÀÚ½ÄÀÌ sleepÇÏ´Â µ¿¾È, ÇÁ·Î¼¼½º ID¸¦ °¡Áö±â À§ÇØ ps
¸¦ »ç¿ëÇضó.
±×¸®°í GDB(¸¸ÀÏ ¿©·¯ºÐÀÌ ºÎ¸ð ÇÁ·Î¼¼½º¸¦ µð¹ö±ë ÁßÀ̶ó¸é »õ·Î¿î GDB¸¦ ½ÇÇà)¿¡°Ô
ÀÚ½Ä ÇÁ·Î¼¼½º(ÀÌ¹Ì µ¹°í ÀÖ´Â ÇÁ·Î¼¼½º µð¹ö±ëÇϱâ
¼½¼ÇÀ» ÂüÁ¶Çضó.)¸¦ ¿¬°áÇ϶ó°í ¸»Çضó.
ÀÌ ½ÃÁ¡¿¡¼, ¿©·¯ºÐÀº ¿©·¯ºÐÀÌ ¿¬°áÇÑ ´Ù¸¥ ÇÁ·Î¼¼½º°°ÀÌ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ µð¹ö±ë
ÇÒ¼ö ÀÖ´Ù.
µð¹ö°Å¸¦ »ç¿ëÇÏ´Â ¿ø·¡ÀÇ ¸ñÀûÀº ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ Á¾·áÇϱâ Àü¿¡ ¸ØÃß°Ô ÇÒ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù.; ¶Ç ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡ ¹®Á¦°¡ ÀÖÀ» °æ¿ì, ¿Ö ±×·±Áö Á¶»çÇÏ°í ¹ß°áÇÒ¼ö ÀÖ´Ù.
GDB³»¿¡¼, ÇÁ·Î±×·¥Àº signal, breakpoint ¶Ç´Â step
°°Àº
GDB ¸í·É¾î ÈÄ ´º ¶óÀο¡ µµÂøÇßÀ»¶§¿Í °°Àº ¸î¸î ÀÌÀ¯·Î ¸ØÃâ¼ö ÀÖ´Ù.
±×¸®°í ¿©·¯ºÐÀº º¯¼ö¸¦ °Ë»çÇÏ°í ¹Ù²Ù°Å³ª »õ·Î¿î breakpoint¸¦ ¼³Á¤Çϰųª
¿¹Àü°ÍÀ» ¾ø¾Ö°í ½ÇÇàÀ» °è¼ÓÇÒ¼ö ÀÖ´Ù. º¸Åë, GDB°¡ º¸¿©ÁÖ´Â ¸Þ¼¼Áö´Â
ÇÁ·Î±×·¥ »óÅ¿¡ ´ëÇÑ ÃæºÐÇÑ ¼³¸íÀ» º¸¿©ÁØ´Ù.--±×·¯³ª ¿©·¯ºÐÀº ¶ÇÇÑ ¾î¶²¶§µçÁö
ÀÌ Á¤º¸¸¦ ¸í¹éÈ÷ ¿ä±¸ÇÒ¼ö ÀÖ´Ù.
info program
breakpoint´Â ÇÁ·Î±×·¥³» ¾î¶² À§Ä¡¿¡ µµÂøÇÒ¶§¸¶´Ù ¸ØÃß°Ô ÇÑ´Ù.
°¢ breakpoint¸¦ À§ÇØ ¿©·¯ºÐÀº ÇÁ·Î±×·¥ÀÌ ¾îµð¼ ¸ØÃâÁö¸¦ Á¦¾îÇϱâ À§ÇÑ Á¶°ÇµéÀ»
Ãß°¡ÇÒ¼ö ÀÖ´Ù. ¿©·¯ºÐÀº break
¸í·É¾î¿Í º¯¼ö(breakpoints ¼³Á¤¼½¼ÇÀ» ÂüÁ¶Çضó.)·Î breakpoint¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù. ±×¸®°í
¶óÀÎ ³Ñ¹ö¿Í ÇÔ¼ö À̸§ ¶Ç´Â Á¤È®ÇÑ ÁÖ¼Ò·Î ÇÁ·Î±×·¥ÀÌ ¸ØÃâ¼ö ÀÖ´Â À§Ä¡¸¦
ÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
¿¹¿Ü 󸮸¦ ÇÏ´Â ¾ð¾î(GNU C++ó·³)¿¡¼, ¿©·¯ºÐÀº ¶ÇÇÑ ¿¹¿Ü°¡ ÀϾ °÷¿¡(Breakpoints ±×¸®°í ¿¹¿Üµé¼½¼ÇÀ» ÂüÁ¶Çضó.) breakpoint¸¦
¼³Á¤ÇÒ¼ö ÀÖ´Ù.
SunOS 4.x, SVR4 ±×¸®°í Alpha OSF/1 ¼³Á¤¿¡¼, ¿©·¯ºÐÀº ½ÇÇàÀÌ µÇ±â Àü¿¡ °øÀ¯ ¶óÀ̺귯¸®¿¡ breakpoint¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù.
watchpoint´Â Ç¥Çö½Ä °ªÀÌ ¹Ù²ð¶§ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥À» ¸ØÃß°Ô Çϴ Ưº°ÇÑ breakpointÀÌ´Ù. ¿©·¯ºÐÀº watchpoint(watchpoints ¼³Á¤¼½¼ÇÀ» ÂüÁ¶Çضó.)¸¦ ¼³Á¤Çϱâ À§ÇÑ ´Ù¸¥ ¸í·É¾î¸¦ »ç¿ë ÇØ¾ß ÇÑ´Ù. ±×·¯³ª ±×°Í¿Ü¿¡ ¿©·¯ºÐÀº ´Ù¸¥ breakpoint°°ÀÌ watchpoint¸¦ °ü¸® ÇÒ¼ö ÀÖ´Ù: ¿©·¯ºÐÀº °°Àº ¸í·É¾î¸¦ »ç¿ëÇÏ¿© breakpoint¿Í watchpoint¸¦ °¡´ÉÇÏ°Ô, ºÒ°¡´ÉÇÏ°Ô ±×¸®°í Á¦°ÅÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀº GDB°¡ breakpoint¿¡¼ ¸ØÃ⶧¸¶´Ù ÀÚµ¿ÀûÀ¸·Î Ãâ·ÂµÈ °ªµéÀ» ¹è¿ÇÒ¼ö ÀÖ´Ù. ÀÚµ¿ µð½ºÇ÷¹À̼½¼ÇÀ» ÂüÁ¶Çضó.
GDB´Â ¿©·¯ºÐÀÌ ¸¸µé¶§¸¶´Ù breakpoint³ª watchpoint¿¡ ¼ýÀÚ¸¦ ´ëÀÔÇÑ´Ù; ÀÌµé ³Ñ¹ö´Â 1ºÎÅÍ ½ÃÀÛÇÏ´Â ¿¬¼ÓÀûÀÎ Á¤¼öÀÌ´Ù. breakpointÀÇ ´Ù¾çÇÑ Æ¯Â¡À» Á¦¾îÇϱâ À§ÇÑ ¸¹Àº ¸í·É¾î¿¡¼, ¿©·¯ºÐÀº º¯°æÀ» ¿øÇÏ´Â breakpoint¿¡ ¸»Çϱâ À§ÇØ breakpoint ¹øÈ£¸¦ »ç¿ëÇÑ´Ù. °¢ breakpoint´Â enabledµÇ°Å³ª disabledµÈ´Ù.;¸¸ÀÏ diabled µÈ´Ù¸é, breakpoint´Â ±×°Ô ´Ù½Ã °¡´ÉÇÏ°Ô µÉ¶§±îÁö ÇÁ·Î±×·¥¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù.
Breakpoint´Â break
¸í·É¾î(°£´ÜÈ÷ b
)·Î ¼³Á¤ÇÑ´Ù.
µð¹ö°Å Æí¸® º¯¼ö `$bpnum'´Â ¿©·¯ºÐÀÌ °¡Àå ÃÖ±Ù ¼³Á¤ÇÑ breakpointÀÇ
¼ö¸¦ ±â·ÏÇÑ´Ù; ¿©·¯ºÐÀÌ Æí¸®º¯¼ö °¡Áö°í ÇÒ¼ö ÀÖ´Â °ÍÀÌ ¹«¾ùÀÎÁö¸¦ Åä·ÐÇÏ±æ ¿øÇÑ´Ù¸é Æí¸® º¯¼ö ¼½¼ÇÀ» ÂüÁ¶Çضó.
¿©·¯ºÐÀº breakpoint°¡ ¾îµðÀÎÁö¸¦ ¸»Çϱâ À§ÇØ ¿©·¯°¡Áö ¹æ¹ýÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.
break function
break +offset
break -offset
break linenum
break filename:linenum
break filename:function
break *address
break
break
´Â ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓ¿¡¼ ½ÇÇàµÇ°í
ÀÖ´Â ´ÙÀ½ ¸í·É¾î¿¡ breakpoint¸¦ ¼³Á¤ÇÑ´Ù.(½ºÅà °Ë»çÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.) ¼±ÅÃµÈ ÇÁ·¹ÀÓ¿¡¼, ÀÌ°ÍÀº Á¦¾î°¡ ±× ÇÁ·¹ÀÓÀ¸·Î µ¹¾Æ¿ÀÀÚ
¸¶ÀÚ ÇÁ·Î±×·¥À» ¸ØÃßµµ·Ï ¸¸µç´Ù. ÀÌ°ÍÀº ¼±ÅÃµÈ ÇÁ·¹ÀÓ ³» ÇÁ·¹ÀÓ¿¡¼ finish
¸í·É¾î¿¡ ÀÇÇÑ °á°ú¿Í ºñ½ÁÇÏ´Ù.--ÀÌ finish
´Â breakpoint¸¦
È°¼ºÈ ½ÃÄÑ ³õÁö ¾Ê´Â´Ù´Â°ÍÀ» Á¦¿ÜÇÏ°í.
¸¸ÀÏ ¿©·¯ºÐÀÌ °¡Àå ³»ºÎ ÇÁ·¹ÀÓ¿¡ ÀÎÀÚ ¾øÀÌ break
¸¦ »ç¿ëÇÑ´Ù¸é,
GDB´Â ÇöÀç À§Ä¡¿¡ µµ´ÞÇÏ´Â ´ÙÀ½¹ø¿¡ ¸ØÃá´Ù; ÀÌ°ÍÀº ·çÇÁ³»¿¡¼ À¯¿ëÇÏ´Ù.
GDB´Â º¸Åë ½ÇÇàÀ» °è¼ÓÇÒ¶§ Àû¾îµµ ÇÑ°³ÀÇ ¸í·É¾î°¡ ½ÇÇàµÉ¶§±îÁö breakpoint¸¦
¹«½ÃÇÑ´Ù. ¸¸ÀÏ ÀÌ°ÍÀ» ÇÏÁö ¾Ê´Â´Ù¸é, ¿©·¯ºÐÀº breakpoint¸¦ disable ½ÃÅ°´Â°Í
¾øÀÌ brekapoint¸¦ ºü¸£°Ô ó¸®ÇÒ¼ö ¾ø´Ù.
ÀÌ ±ÔÄ¢Àº ÇÁ·Î±×·¥ÀÌ ¸ØÃ⶧ breakpoint°¡ ÀÌ¹Ì Á¸ÀçÇϵçÁö ¾ÈÇϵçÁö Àû¿ëµÈ´Ù.
break ... if cond
tbreak args
break
¸í·É¾î¿Í °°À¸¸ç, breakpoint´Â °°Àº ¹æ¹ýÀ¸·Î
¼³Á¤µÈ´Ù. ±×·¯³ª breakpoint´Â ÀÚµ¿ÀûÀ¸·Î ÇÁ·Î±×·¥ÀÌ Çѹø ¸ØÃá ´ÙÀ½¿¡ Áö¿öÁø´Ù.
breakpoints disableÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
hbreak args
break
¸í·É¾î¿Í
°°À¸¸ç breakpoint´Â °°Àº ¹æ¹ýÀ¸·Î ¼³Á¤µÈ´Ù. ±×·¯³ª breakpoint´Â Çϵå¿þ¾î Áö¿øÀ»
¿ä±¸ÇÏ¸ç ¸î¸î Çϵå¿þ¾î Ÿ°ÙÀº ÀÌ·¯ÇÑ Áö¿øÀ» ÇÏÁö ¾Ê´Â´Ù.
ÀÌ ¸í·É¾îÀÇ ÁÖ¿ä ¸ñÀûÀº EPROM/ROM ÄÚµå µð¹ö±ëÀ̸ç, ¿©·¯ºÐÀº ¸í·É¾î¸¦ ¹Ù²Ù´Â°Í
¾øÀÌ ¸í·É¾î¿¡ breakpoint¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù. ÀÌ ¸í·É¾î´Â SPARClite DSU°¡ Á¦°øÇÏ´Â
»õ·Î¿î trap-¹ß»ý½Ã »ç¿ëµÉ¼ö ÀÖ´Ù.
DSU´Â ÇÁ·Î±×·¥ÀÌ ¸î¸î µ¥ÀÌÅͳª ·¹Áö½ºÅ͸¦ µð¹ö±ëÇϱâ À§ÇØ ÇÒ´çµÈ ¸í·É¾î ÁÖ¼Ò¸¦
Á¢±ÙÇÒ¶§ trapÀ» ¹ß»ýÇÑ´Ù. ±×·¯³ª Çϵå¿þ¾î breakpoint ·¹Áö½ºÅÍ´Â µÎ°³ÀÇ µ¥ÀÌÅÍ
breakpoint¸¦ °¡Áö¸ç GDB´Â µÎ°³ ÀÌ»óÀÌ »ç¿ëµÈ´Ù¸é ÀÌ ¸í·É¾î¸¦ °ÅÀýÇÑ´Ù.
»õ·Î¿î °ÍÀ¸·Î ¼³Á¤Çϱâ Àü¿¡ »ç¿ëµÇÁö ¾Ê´Â Çϵå¿þ¾î breakpoint¸¦ delete Çϰųª
disable ÇÑ´Ù. Break conditions ¼½¼ÇÀ» ÂüÁ¶Çضó.
thbreak args
hbreak
¸í·É¾î¿Í °°À¸¸ç breakpoint´Â °°Àº ¹æ¹ýÀ¸·Î
¼³Á¤µÈ´Ù. ±×·¯³ª, tbreak
¸í·É¾îó·³, breakpoint´Â ÀÚµ¿ÀûÀ¸·Î ÇÁ·Î±×·¥ÀÌ
óÀ½ ¸ØÃá´ÙÀ½¿¡ Áö¿öÁø´Ù. ¶ÇÇÑ, hbreak
ó·³, breakpoint´Â Çϵå¿þ¾î
Áö¿øÀ» ¿ä±¸ÇÏ¸ç ¸î¸î Ÿ°Ù Çϵå¿þ¾î´Â ÀÌ·¯ÇÑ Áö¿øÀ» ÇÏÁö ¾Ê´Â´Ù.
breakpoints disableÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
¶ÇÇÑ, Break Á¶°Çµé ¼½¼ÇÀ» ÂüÁ¶Çضó.
rbreak regex
break
¸í·É¾î·Î ¼³Á¤µÈ breakpointó·³ ó¸®µÈ´Ù.
¿©·¯ºÐÀÌ ±×°ÍÀ» Áö¿ì°í, disableÇϰųª ´Ù¸¥ breakpointó·³ Á¶°ÇÀûÀÎ °°Àº ¹æ¹ýÀ¸·Î
¸¸µé¼ö ÀÖ´Ù.
C++ ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ¶§, rbreak
´Â ¾î¶² ƯÁ¤ Ŭ·¡½ºÀÇ ¸â¹ö°¡ ¾Æ´Ñ
¿À¹ö·ÎµùµÈ ÇÔ¼ö¿¡ breakpoint¸¦ ¼³Á¤ÇÒ¶§ À¯¿ëÇÏ´Ù.
info breakpoints [n]
info break [n]
info watchpoints [n]
info break
´Â ´ÙÀ½¿¡ ¿µÇâ ¹Þ´Â breakpointÀÇ
Á¶°ÇÀ» º¸¿©ÁØ´Ù.; ¾î¶²°ÍÀÌ ÀÖ´Ù¸é, breakpoint ¸í·É¾î´Â ±×°Í ´ÙÀ½¿¡ ³ª¿µÈ´Ù.
ÀÎÀÚ·Î breakpoint ³Ñ¹ö number n À» °¡Áö´Â
info break
´Â ±× breakpoint¿¡¼¸¸ ³ª¿µÈ´Ù.
Æí¸® º¯¼ö $_
°ú x
¸í·É¾î¸¦ À§ÇÑ ±âº» °Ë»ç-ÁÖ¼Ò´Â ³ª¿µÈ
¸¶Áö¸· breakpointÀÇ ÁÖ¼Ò·Î ¼³Á¤ÇÑ´Ù.
(¸Þ¸ð¸® °Ë»çÇϱâ. ¼½¼ÇÀ» ÂüÁ¶Çضó.)
info break
´Â breakpoint°¡ È÷Æ®µÈ ¼ö¸¦ Ãâ·ÂÇÑ´Ù.
ÀÌ°ÍÀº ƯÈ÷ ignore
¸í·É¾î¿Í ¿¬°áµÇ¾î »ç¿ëµÉ¶§ À¯¿ëÇÏ´Ù.
¿©·¯ºÐÀº breakpoint È÷Æ® ¼ö¸¦ ¹«½ÃÇÒ¼ö ÀÖÀ¸¸ç, breakpoint°¡ ¾ó¸¶³ª ¸¹ÀÌ È÷Æ®µÇ¾ú´ÂÁö
º¸±â À§ÇØ breakpoint info¸¦ º¼¼ö ÀÖÀ¸¸ç ±× ¼öº¸´Ù ÀÛÀº°ÍÀº ¹«½ÃÇÏ°í ´Ù½Ã
µ¹¸±¼ö ÀÖ´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀÌ ±× breakpoitnÀÇ ¸¶Áö¸· È÷Æ®¸¦ ºü¸£°Ô °¡Áö°Ô ÇÑ´Ù.
GDB´Â ÇÁ·Î±×·¥³» °°Àº °÷¿¡ ¿©·¯°³ÀÇ breakpoint¸¦ ¼³Á¤ÇÏ´Â°É Çã¿ëÇÑ´Ù. ÀÌ°ÍÀÌ ¾î¸®¼®°Å³ª Àǹ̾ø´Â°ÍÀº ¾Æ´Ï´Ù. breakpointµéÀÌ Ãß°¡µÉ¶§, ÀÌ°ÍÀº À¯¿ëÇÏ´Ù. (Break Á¶°Çµé ¼½¼ÇÀ» ÂüÁ¶Çضó.).
GDB´Â °¡²û longjmp
(C ÇÁ·Î±×·¥¿¡¼)ÀÇ Ã³¸® °°Àº Ưº°ÇÑ ¸ñÀûÀ» À§ÇØ
ÇÁ·Î±×·¥¿¡ breakpoint¸¦ ¼³Á¤ÇÑ´Ù.
ÀÌµé ³»ºÎ breakpointµéÀº -1
·Î ½ÃÀÛÇÏ¿© À½¼ö ³Ñ¹ö¸¦ ÇÒ´ç¹Þ´Â´Ù.;
`info breakpoints'´Â ±×°ÍµéÀ» Ãâ·ÂÇÏÁö ¾Ê´Â´Ù.
¿©·¯ºÐÀº GDB À¯Áö ¸í·É¾î `maint info breakpoints'·Î À̵é breakpointµéÀ» º¼¼ö ÀÖ´Ù.
maint info breakpoints
breakpoint
watchpoint
longjmp
longjmp
È£ÃâÀ» ÅëÇØ Á¤È®ÇÑ steppingÀ» ó¸®Çϱâ À§ÇØ »ç¿ëµÈ ³»ºÎ breakpoint
longjmp resume
longjmp
ÀÇ Å¸°Ù¿¡ ³»ºÎ breakpoint
until
until
¸í·É¾î¿¡ ÀÇÇØ »ç¿ëµÇ´Â Àӽà ³»ºÎ breakpoint.
finish
finish
¸í·É¾î¿¡ ÀÇÇØ »ç¿ëµÇ´Â Àӽà ³»ºÎ breakpoint.
¿©·¯ºÐÀÌ º¯È°¡ ÀϾ°÷À» ¿¹»óÇÏ´Â°Í ¾øÀÌ Ç¥Çö½Ä °ªÀÌ ¹Ù²ð¶§¸¶´Ù ½ÇÇàÀ» ¸ØÃß°íÀÚ Çϸé watchpoint¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
Watchpoint´Â ÇöÀç ´Ù¸¥ breakpointº¸´Ù ´õ õõÈ÷ 2¹èÀÇ ±Ô¸ð·Î ½ÇÇàµÈ´Ù. ±×·¯³ª ÀÌ°ÍÀº ÇÁ·Î±×·¥ÀÇ ¾î´À ºÎºÐÀÌ À߸øµÇ¾ú´ÂÁö ½Ç¸¶¸®¸¦ ÀâÁö ¸øÇÒ¶§ ¿¡·¯¸¦ Àâ±â À§ÇÑ ÃæºÐÇÑ °¡Ä¡°¡ ÀÖ´Ù.
watch expr
watch
¸í·É¾î·Î,
rwatch
¸í·É¾î·Î,
¶Ç´Â awatch
¸í·É¾î·Î µÎ°³ÀÇ watchpoint¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù.
±×·¯³ª ¿©·¯ºÐÀº ÇÑ ¸í·É¾î¾Æ ´Ù¸¥ À̸§À¸·Î ´Ù¸¥ ¸í·É¾î·Î ÇÑ°³ÀÇ watchpoint¸¦ ¼³Á¤ÇÒ¼ö
¾ø´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ watchpoint¸¦ ¼¯´Â´Ù¸é ¸í·É¾î´Â °ÅÀýµÉ °ÍÀÌ´Ù.
»õ·Î¿î °ÍÀ¸·Î ¼³Á¤ÇϱâÀü¿¡ »ç¿ëµÇÁö ¾ÊÀº watchpoint ¸í·É¾î¸¦ Áö¿ì°Å³ª disableÇضó.
rwatch expr
rwatch
¸í·É¾î·Î
¼³Á¤µÇ¾î¾ß ÇÑ´Ù.
awatch expr
awatch
¸í·É¾î·Î
¼³Á¤µÇ¾î¾ß ÇÑ´Ù.
info watchpoints
info break
¿Í °°´Ù.
°æ°í: ¸ÖƼ-¾²·¹µå ÇÁ·Î±×·¥¿¡¼, watchpoint´Â ±× À¯¿ë¼ºÀÌ Á¦ÇѵȴÙ. ÇöÀç watchpiont ¼öÇà¿¡¼, GDB´Â ´ÜÀÏ ¾²·¹µåÀÇ Ç¥Çö½Ä °ª¸¸À» º¼¼ö ÀÖ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ Ç¥Çö½ÄÀÌ ÇöÀç ¾²·¹µåÀÇ È°¼ºÈ(±×¸®°í ¸¸ÀÏ ¿©·¯ºÐÀÌ ¾î¶² ´Ù¸¥ ¾²·¹µåµµ ÇöÀç ¾²·¹µå°¡ µÉ¼ö ¾ø´Ù°í È®½ÅÇÑ´Ù¸é)¶§¹®¿¡ ¹Ù²ï´Ù°í È®½ÅÇÑ´Ù¸é, ¿©·¯ºÐÀº º¸Å붧ó·³ watchpoint¸¦ ¾µ¼ö ÀÖ´Ù. ±×·¯³ª, GDB´Â ÇöÀç ¾²·¹µå°¡ ¾Æ´Ñ ¾²·¹µåÀÇ È°¼ºÈ°¡ Ç¥Çö½ÄÀ» ¹Ù²Ü ¶§ ÀνÄÇÏÁö ¸øÇÑ´Ù.
GNU C++°°Àº ¸î¸î ¾ð¾î¿¡¼ ¿¹¿Ü 󸮸¦ ´Ù·é´Ù. ¿©·¯ºÐÀº ÇÁ·Î±×·¥¿¡¼ ¿¹¿Ü°¡ ÀÏ¾î³ ¿øÀΰú ÁÖ¾îÁø ½ÃÁ¡¿¡¼ ÇÁ·Î±×·¥ÀÌ Ã³¸®¸¦ ÁغñÇؾßÇÒ ¿¹¿ÜµéÀÇ ¸®½ºÆ®¸¦ °Ë»çÇϱâ À§ÇØ GDB¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
catch exceptions
catch
¸í·É¾î¸¦ »ç¿ëÇÏ¿© ½ÇÁ¦ ¿¹¿Ü 󸮱⿡ breakpoint¸¦
¼³Á¤ÇÒ¼ö ÀÖ´Ù. exceptions´Â Àâ¾Æ¾ßÇÒ ¿¹¿ÜµéÀÇ À̸§ ¸®½ºÆ®µéÀÌ´Ù.
¿©·¯ºÐÀº È°µ¿ÀûÀÎ ¿¹¿Ü Çڵ鷯À¸ ¸®½ºÆ®¸¦ À§ÇØ info catch
¸¦
»ç¿ëÇÒ¼ö ÀÖ´Ù. ÇÁ·¹ÀÓ¿¡ °üÇÑ Á¤º¸ ¼½¼ÇÀ»
ÂüÁ¶Çضó.
GDB³»¿¡ ¿¹¿Ü 󸮸¦ À§ÇØ ¸î¸î Á¦ÇѵéÀÌ ÀÖ´Ù.:
°¡²û catch
´Â ¿¹¿Ü 󸮱⸦ µð¹ö±ëÇϱâ À§ÇÑ ÃÖ¼±ÀÇ ¹æ¹ýÀÌ ¾Æ´Ï´Ù:
¸¸ÀÏ ¿©·¯ºÐÀÌ Á¤È®È÷ ¿¹¿Ü°¡ ÀÏ¾î³ °÷ÀÌ ¾îµðÀÎÁö¸¦ ¾Ë°íÀÚ ÇÑ´Ù¸é, ¿¹¿Ü 󸮱Ⱑ
È£ÃâµÇ±â before¿¡ ¸ØÃß°Ô Çϴ°ÍÀÌ ÁÁ´Ù. ¿Ö³ÄÇÏ¸é ±× ¹æ¹ýÀ¸·Î ¿©·¯ºÐÀº
ÀǵµÇÏÁö ¾ÊÀº ÀÏÀÌ ÀϾ±â ÀüÀÇ ½ºÅÃÀ» º¼¼ö Àֱ⠶§¹®ÀÌ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ
¿¹¿Ü ÇÚµé±â ´ë½Å¿¡ breakpoint¸¦ ¼³Á¤ÇÑ´Ù¸é, ¿¹¿Ü°¡ ÀÏ¾î³ °÷À» ¹ß°ßÇϱⰡ ½±Áö
¾Ê´Ù.
¿¹¿Ü ÇÚµé±â°¡ È£ÃâµÇ±â Àü¿¡ ¸ØÃß±â À§ÇØ, ¿©·¯ºÐÀº ¾à°£ÀÇ Áö½ÄÀÌ ÇÊ¿äÇÏ´Ù.
GNU C++ÀÇ °æ¿ì¿¡, ¿¹¿Ü´Â ´ÙÀ½°ú °°Àº ANSI C ÀÎÅÍÆäÀ̽º¸¦ °¡Áö°í ÀÖ´Â
__raise_exception
¶ó´Â À̸§ÀÇ ¶óÀ̺귯¸® ÇÔ¼ö È£Ãâ¿¡ ÀÇÇØ
¹ß»ýÇÑ´Ù.
/* addr is where the exception identifier is stored. ID is the exception identifier. */ void __raise_exception (void **addr, void *id);
ÀǵµÇÏÁö ¾ÊÀº ÀÏÀÌ ÀϾ±â Àü¿¡ ¸ðµç ¿¹¿ÜµéÀ» µð¹ö°ÅÇϵµ·Ï ¸¸µé±â À§ÇØ,
__raise_exception
¿¡ breakpoint¸¦ ¼³Á¤Çضó.
(Breakpoints, watchpoints, ±×¸®°í ¿¹¿Üµé¼½¼ÇÀ» ÂüÁ¶Çضó.)
id°ª¿¡ ÀÇÁ¸ÇÏ´Â Á¶°ÇÀû breakpoint(Break conditions¼½¼ÇÀ» ÂüÁ¶Çضó>)¸¦ °¡Áö°í, ¿©·¯ºÐÀº ƯÁ¤ ¿¹¿Ü°¡ ÀϾ¶§ ÇÁ·Î±×·¥À» ¸ØÃâ¼ö ÀÖ´Ù. ¿©·¯ºÐÀº ¿¹¿Ü ³Ñ¹öÁß Çϳª°¡ ÀϾÀ»¶§ ÇÁ·Î±×·¥À» ¸ØÃß±â À§ÇØ ´ÙÁß Á¶°Ç breakpoint¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
breakpoint³ª watchpoint°¡ ÀÛ¾÷À» ¸¶Ä¡°í ´õÀÌ»ó °Å±â¿¡¼ ¸ØÃß±æ ¿øÇÏÁö ¾Ê´Â´Ù¸é »èÁ¦Çϴ°ÍÀÌ °¡²û ÇÊ¿äÇÏ´Ù. ÀÌ°ÍÀ» breakpoint Áö¿ì±â¶ó°í ÇÑ´Ù. »èÁ¦µÈ breakpoint´Â ´õÀÌ»ó Á¸ÀçÇÏÁö ¾Ê´Â´Ù; ÀØÇôÁø´Ù.
clear
¸í·É¾î·Î ¿©·¯ºÐÀº ÇÁ·Î±×·¥¿¡ Àִ°÷¿¡ µû¶ó breakpoint¸¦
Áö¿ï¼ö ÀÖ´Ù. delete
¸í·É¾î·Î ¿©·¯ºÐÀº breakpoint³Ñ¹ö¸¦ ÁöÁ¤ÇÏ¿©
°³°³ÀÇ breakpoint³ª watchpoint¸¦ Áö¿ï¼ö ÀÖ´Ù.
¿¹Àü°ÍÀ» À§ÇØ brekapoint¸¦ Áö¿ï ÇÊ¿ä´Â ¾ø´Ù. GDB´Â ¿©·¯ºÐÀÌ ½ÇÇà ÁÖ¼Ò¸¦ ¹Ù²ÙÁö ¾Ê°í ½ÇÇàÀ» °è¼ÓÇÒ °æ¿ì ½ÇÇàÀÇ Ã³À½ ¸í·É¾î¿¡ ÀÖ´Â breakpoint¸¦ ÀÚµ¿ÀûÀ¸·Î ¹«½ÃÇÑ´Ù.
clear
clear function
clear filename:function
clear linenum
clear filename:linenum
delete [breakpoints] [bnums...]
set confirm off
¸¦
¼³Á¤ÇÏÁö ¾Ê¾Ò´Ù¸é GDB´Â È®ÀÎÀ» ¿ä±¸ÇÑ´Ù.) ¿©·¯ºÐÀº d
·Î ¸í·É¾î¸¦
Ãà¾àÇÒ¼ö ÀÖ´Ù.
breakpoint³ª watchpoint¸¦ Áö¿ì±â º¸´Ù, ¿©·¯ºÐÀº ±×°ÍµéÀ» disable ½ÃÅ°´Â °ÍÀÌ ´õ ÁÁ´Ù. ÀÌ°ÍÀº ¸¶Ä¡ Áö¿öÁø°Íó·³ breakpoint°¡ ÀÛµ¿ÇÏÁö ¾Êµµ·Ï ¸¸µç´Ù. ±×·¯³ª breakpoint¿¡ ´ëÇÑ Á¤º¸¸¦ ±â¾ïÇÑ´Ù. ±×·¡¼ ¿©·¯ºÐÀº ³ªÁß¿¡ ´Ù½Ã ±×°ÍÀ» enable ½Ãų¼ö ÀÖ´Ù.
¿©·¯ºÐÀº ¿É¼ÇÀ¸·Î ÀÎÀÚ·Î Çϳª³ª ±× ÀÌ»óÀÇ breakpoint¸¦ ÁöÁ¤ÇÏ¿©, enable
, disable
¸í·É¾î·Î breakpoint¿Í watchpoint¸¦ disable, enable
½Ãų¼ö ÀÖ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ »ç¿ëÇÏ°í ÀÖ´Â ³Ñ¹ö¸¦ ¾ËÁö ¸øÇÑ´Ù¸é, breakpoint³ª
watchpointÀÇ ¸®½ºÆ®¸¦ º¸±â À§ÇØ info break
³ª info watch
¸¦ »ç¿ëÇضó.
breakpoint³ª watchpoint´Â 4°¡ÁöÀÇ ´Ù¸¥ °¡´É »óŸ¦ °¡Áö°í ÀÖ´Ù.
break
·Î ¼³Á¤ÇÑ breakpoint
´Â ÀÌ»óÅ·Π½ÃÀÛÇÑ´Ù.
tbreak
¸¦ °¡Áö°í ¼³Á¤µÈ breakpoint´Â ÀÌ »óÅ·Π½ÃÀÛÇÑ´Ù.
¿©·¯ºÐÀº breakpoint¿Í watchpoint¸¦ enable, disable ½ÃÅ°±â À§ÇØ ´ÙÀ½ ¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù:
disable [breakpoints] [bnums...]
dis
·Î disable
¸¦ Ãà¾àÇÒ¼ö ÀÖ´Ù.
enable [breakpoints] [bnums...]
enable [breakpoints] once bnums...
enable [breakpoints] delete bnums...
tbreak
(Setting breakpoints¼½¼ÇÀ» ÂüÁ¶Çضó.)·Î ¼³Á¤µÈ breakpoint¸¦ Á¦¿ÜÇÏ°í, ¿©·¯ºÐÀÌ ¼³Á¤ÇÑ breakpoint´Â enable µÈ´Ù;
¿¬¼ÓÀûÀ¸·Î, À̰͵éÀº ¿©·¯ºÐÀÌ À§ÀÇ ¸í·É¾îÁß Çϳª¸¦ »ç¿ëÇÒ¶§ disableµÇ°Å³ª enable
µÈ´Ù.(¸í·É¾î until
´Â ÀÚ½ÅÀÇ breakpoint¸¦ ¼³Á¤ÇÏ°í Áö¿î´Ù. ±×·¯³ª
´Ù¸¥ breakpointÀÇ »óÅ´ ¹Ù²ÙÁö ¾Ê´Â´Ù; °è¼Ó°ú ÁßÁö ¼½¼ÇÀ» ÂüÁ¶Çضó.)
breakpointÀÇ °£´ÜÇÑ ¼ºÁúÀº ÇÁ·Î±×·¥ÀÌ ÁöÁ¤µÈ À§Ä¡¿¡ µµ´ÞÇÒ¶§¸¶´Ù ÁßÁöÇÑ´Ù´Â Á¡ÀÌ´Ù. ¿©·¯ºÐÀº breakpoint¸¦ À§ÇØ condition¸¦ ÁöÁ¤ÇÒ¼ö ÀÖ´Ù. Á¶°ÇÀº ÇÁ·Î±×·¥ ¾ð¾î¿¡¼ Boolean Ç¥ÇöÀÌ´Ù.(Ç¥Çö½Ä¼½¼ÇÀ» ÂüÁ¶Çضó.) Á¶°ÇÀ» °¡Áö°í ÀÖ´Â breakpoint´Â ÇÁ·Î±×·¥ÀÌ ±×°÷¿¡ µµÂøÇÒ¶§¸¶´Ù Ç¥Çö½ÄÀ» Æò°¡ÇÑ´Ù. ±×¸®°í ÇÁ·Î±×·¥Àº Á¶°ÇÀÌ trueÀÏ°æ¿ì ¸ØÃá´Ù.
ÀÌ°ÍÀº ÇÁ·Î±×·¥ À¯È¿¼ºÀ» À§ÇÑ °ÍÀÌ´Ù; ±× »óȲ¿¡¼, ¿©·¯ºÐÀº ÁÖÀåÇϴ°ÍÀÌ À§¹ÝÀÏ °æ¿ì ¸ØÃá´Ù. -- Áï, Á¶°ÇÀÌ °ÅÁþÀ϶§ÀÌ´Ù. C¿¡¼, ¸¸ÀÏ ¿©·¯ºÐÀÌ Á¶°Ç assertÀ¸·Î ÇØ´ç Á¶°ÇÀ» Å×½ºÆ®ÇÏ±æ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº Àû´çÇÑ breakpoint¿¡ `! assert'Á¶°ÇÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù.
Á¶°ÇµéÀº watchpoint¸¦ ¹Þ¾ÆµéÀδÙ.; watchpoint´Â ¾î¶µç Ç¥Çö½ÄÀÇ °ªÀ» Á¶»çÇϱ⠶§¹®¿¡ ¿©·¯ºÐµéÀº ±×°ÍµéÀÌ ÇÊ¿äÇÏÁö ¾Ê´Ù.--±×·¯³ª º¯¼öÀ̸§¿¡ watchpoint¸¦ ¼³Á¤Çϴ°ÍÀº °£´ÜÇÏ´Ù. ±×¸®°í »õ·Î¿î °ªÀÌ Èï¹Ì·Î¿î °ªÀÎÁö¸¦ °Ë»çÇϱâ À§ÇÑ Á¶°ÇµéÀ» ÁöÁ¤ÇÑ´Ù.
ÁßÁö Á¶°ÇµéÀº ¿ªÈ¿°ú¸¦ °¡Áú¼ö ÀÖ´Ù. ±×¸®°í ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥³» ÇÔ¼ö È£Ã⶧Á¶Â÷µµ °¡Áú¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ÇÁ·Î±×·¥ ÁøÇàÀ̳ª Ưº°ÇÑ µ¥ÀÌŸ ±¸Á¶ÇüÅ·ΠÇÔ¼ö¸¦ Ãâ·ÂÇÏ±æ ¿øÇÒ¶§ ÇÔ¼ö¸¦ È°¼ºÈÇϴµ¥ À¯¿ëÇÏ´Ù. °°Àº ÁÖ¼Ò¿¡ ´Ù¸¥ enableµÈ breakpoint¸¸ ¾ø´Ù¸é È¿°ú´Â ¿¹»óÇÏ´Â ´ë·ÎÀÌ´Ù.(±× °æ¿ì, GDB´Â ¿ì¼± ´Ù¸¥ breakpoint¸¦ º¸°í ÇØ´ç Á¶°ÇÀ» °Ë»çÇÏÁö ¾Ê°í ÇÁ·Î±×·¥À» ¸ØÃá´Ù.) breakpoint¸í·É¾î´Â º¸Åë breakpoint°¡ µµÂøÇÒ¶§ ¿ªÈ¿°ú ÀÌÇà ¸ñÀû¿¡ ´õ Æí¸®ÇÏ°í À¯µ¿ÀûÀÌ´Ù.
ÁßÁö Á¶°ÇµéÀº break
¸í·É¾î¿¡ ÀÎÀÚ·Î `if'¸¦ »ç¿ëÇÏ¿©,
breakpoint°¡ ¼³Á¤µÉ¶§ ÁöÁ¤ÇÒ¼ö ÀÖ´Ù. breakpoints ¼³Á¤Çϱ⠼½¼ÇÀ» ÂüÁ¶Çضó. ±×°ÍµéÀº condition
¸í·É¾î¸¦ °¡Áö°í ¾î¶²¶§µçÁö
¹Ù²Ü¼ö ÀÖ´Ù. watch
¸í·É¾î´Â if
Å°¿öµå¸¦ ÀνÄÇÏÁö
¸øÇÑ´Ù; condition
´Â watchpoint¿¡¼ Á¶°ÇÀ» ºÎ¿©Çϱâ À§ÇÑ À¯ÀÏÇÑ
¹æ¹ýÀÌ´Ù.
condition bnum expression
condition
À» »ç¿ëÇÒ¶§, GDB´Â Áï½Ã ¹®¹ýÀÌ ¸Â´ÂÁö¸¦ À§ÇØ
expression¸¦ °Ë»çÇÑ´Ù. ±×¸®°í ½Éº¼µéÀÌ ¿©·¯ºÐÀÇ breakpointÀÇ ¹®¸Æ¿¡
ÂüÁ¶¸¦ °¡Áö°í ÀÖ´ÂÁö¸¦ °áÁ¤ÇÑ´Ù. GDB´Â ½ÇÁ¦ condition
¸í·É¾î°¡
ÁÖ¾îÁú¶§¸¶´Ù expressionÀ» Æò°¡ÇÏÁö ¾Ê´Â´Ù.
Expressions ¼½¼ÇÀ» ÂüÁ¶Çضó.
condition bnum
breakpoint Á¶°ÇÀÇ Æ¯º°ÇÑ °æ¿ì´Â breakpoint°¡ ¾î¶² ³Ñ¹öÀÇ Ä«¿îÆ®¿¡ µµÂøÇÒ¶§¸¸ ¸ØÃß´Â °æ¿ìÀÌ´Ù. ÀÌ°ÍÀº ¸Å¿ì À¯¿ëÇؼ breakpointÀÇ ignore count¸¦ »ç¿ëÇÏ¿© ±×°ÍÀ» ÇÒ¼ö ÀÖ´Ù. ¸ðµç breakpoint´Â Á¤¼ö·Î½á ignore count¸¦ °¡Áö°í ÀÖ´Ù. °æ¿ìÀÇ ´ëµÎºÐ¿¡¼, ignore count´Â 0ÀÌ°í ±×·¡¼ È¿°ú°¡ ¾ø´Ù. ±×·¯³ª ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ ignore count°¡ ¾ç¼öÀÎ breakpoint¿¡ µµÂøÇÑ´Ù¸é, ÇÁ·Î±×·¥Àº ¸ØÃß´Â ´ë½Å ignore count¸¦ Çϳª ÁÙÀÌ°í °è¼ÓÇÑ´Ù. °á°úÀûÀ¸·Î ignore count °ªÀÌ nÀ̶ó¸é, breakpoint´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ µµÂøÇÒ ´ÙÀ½¹ø n¿¡¼´Â ¸ØÃßÁö ¾Ê´Â´Ù.
ignore bnum count
continue
¸¦
»ç¿ëÇÒ¶§, ¿©·¯ºÐÀº ignore
»ç¿ë´ë½Å continue
¿¡ ÀÎÀڷνá Á÷Á¢ ignore count¸¦ ÁöÁ¤ ÇÒ¼ö ÀÖ´Ù.
°è¼Ó°ú ´Ü°è(stepping)¼½¼ÇÀ» ÂüÁ¶Çضó.
¸¸ÀÏ breakpoint°¡ ¾ç¼öÀÇ ignore count¿Í Á¶°Çµé °¡Áø´Ù¸é, Á¶°ÇÀº °Ë»çµÇÁö ¾Ê´Â´Ù.
ÀÏ´Ü ignore count°¡ 0¿¡ µµ´ÞÇϸé, GDB´Â Á¶°Ç °Ë»ç¸¦ ´Ù½Ã ½ÃÀÛÇÑ´Ù.
¿©·¯ºÐÀº ¸Å¹ø °¨¼ÒÇÏ´Â Æí¸®º¯¼ö¸¦ »ç¿ëÇÏ¿© `$foo-- <= 0' °°Àº
Á¶°ÇÀ» °¡Áö°í ignore countÀÇ È¿°ú¸¦ º¼¼ö ÀÖ´Ù.
Æí¸® º¯¼öµé¼½¼ÇÀ» ÂüÁ¶Çضó.
breakpoint ¶§¹®¿¡ ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ¸ØÃ⶧ breakpoint(¶Ç´Â watchpoint) ¸í·É¾îµéÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ¿©·¯ºÐÀº ¾î¶² Ç¥Çö½ÄÀ̳ª È°¼ºÈµÈ ´Ù¸¥ breakpointÀÇ °ªÀ» Ãâ·ÂÇÏ±æ ¿øÇÒÁö ¸ð¸¥´Ù.
commands [bnum]
... command-list ...
end
end
¸¦
¶óÀο¡ Æ÷ÇÔ½ÃÅ°¸é µÈ´Ù.
breakpoint¿¡¼ ¸í·É¾îµéÀ» Á¦°ÅÇϱâ À§ÇØ, commands
¸¦ ŸÀÔÇÎÇÏ°í
¹Ù·Î end
¸¦ ŸÀÌÇÎÇÏ¸é µÈ´Ù.; Áï, ¸í·É¾î¸¦ ÁÖÁö ¾ÊÀ¸¸é µÈ´Ù.
bnumÀÎÀÚ°¡ ¾ø´Ù¸é, commands
´Â ¸¶Áö¸· breakpoint³ª
watchpoint¼³Á¤À» ÂüÁ¶ÇÑ´Ù.(°¡Àå ÃÖ±Ù¿¡ ¸¸³ breakpoint°¡ ¾Æ´Ï´Ù)
¸¶Áö¸· GDB ¸í·É¾î¸¦ ¹Ýº¹ÇÏ´Â ¼ö´ÜÀ¸·Î½á RET¸¦ ´©¸£´Â°ÍÀº command-list¿¡¼ disableµÈ´Ù.
¿©·¯ºÐÀº ÇÁ·Î±×·¥À» ´Ù½Ã ½ÃÀÛÇÒ¶§ breakpoint¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
´Ü¼øÈ÷ continue
¸í·É¾î³ª step
¶Ç´Â ½ÇÇàÀ» ´Ù½Ã ½ÃÀÛ
½ÃÅ°´Â ´Ù¸¥ ¸í·É¾î¸¦ »ç¿ëÇضó.
½ÇÇàÀ» ½ÃÀÛÇÏ´Â ¸í·É¾îÈÄ, ¸í·É¾î ¸®½ºÆ®³» ´Ù¸¥ ¸í·É¾îµéÀº ¹«½ÃµÈ´Ù.
ÀÌ°ÍÀº ¿©·¯ºÐÀÌ ½ÇÇàÀ» ´Ù½Ã ½ÃÀÛÇÏ´Â ¶§(´Ü¼øÈ÷ next
³ª step
À϶§Á¶Â÷)¿¡, ¿©·¯ºÐÀÌ ´Ù¸¥ breakpoint¸¦ ¸¸³¯Áöµµ ¸ð¸£±â ¶§¹®ÀÌ´Ù.--¸ðÈ£¼ºÀ» ¾ß±âÇÒ¼ö ÀÖ´Â ÀÚ½ÅÀÇ ¸í·É¾î ¸®½ºÆ®¸¦ °¡Áú¼ö ÀÖ´Ù.
¸í·É¾î ¸®½ºÆ®¿¡ ÁöÁ¤ÇÑ Ã¹ ¸í·É¾î°¡ silent
À̶ó¸é, breakpoint½Ã
ÁßÁö¿¡ °üÇÑ ÀϹÝÀû ¸Þ¼¼Áö´Â Ãâ·ÂµÇÁö ¾Ê´Â´Ù. Ưº°ÇÑ ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÏ´Â breakpoint¿Í continue¸¦ À§Çؼ´Â ¹Ù¶÷Á÷ÇÏ´Ù. ³²¾Æ ÀÖ´Â ¸í·É¾îµéÀÌ ¾î¶²°Íµµ Ãâ·ÂÇÏÁö
¾Ê´Â´Ù¸é, ¿©·¯ºÐÀº breakpoint°¡ µµÂøÇÑ Ç¥½Ã¸¦ ¾Ë¼ö ¾ø´Ù. silent
´Â
breakpoint ¸í·É¾î ¸®½ºÆ®ÀÇ ½ÃÀ۽ÿ¡¸¸ Àǹ̸¦ °®´Â´Ù.
¸í·É¾î echo
, output
, ±×¸®°í printf
´Â
¿©·¯ºÐÀÌ Á¤¹ÐÇÏ°Ô Ãâ·ÂÀ» Á¦¾îÇϵµ·Ï Çã¿ëÇÑ´Ù. ±×¸®°í ÀÚÁÖ Á¶¿ëÇÑ breakpoint¿¡¼
À¯¿ëÇÏ´Ù. Ãâ·Â Á¦¾î¸¦ À§ÇÑ ¸í·É¾îµé¼½¼ÇÀ» ÂüÁ¶Çضó.
¿¹¸¦ µé¾î, ¿©±â¿¡¼ ¿©·¯ºÐÀº x
°¡ ¾ç¼öÀ϶§´Â ¾ðÁ¦³ª foo
¸¦ À§ÇÑ ¿£Æ®¸®¿¡¼ x
ÀÇ °ªÀ» Ãâ·ÂÇϱâ À§ÇØ breakpoint ¸í·É¾î¸¦
»ç¿ëÇÒ¼ö ÀÖ´Ù.
break foo if x>0 commands silent printf "x is %d\n",x cont end
breakpoint ¸í·É¾î¸¦ À§ÇÑ ÀÀ¿ëÇÁ·Î±×·¥Àº ¹ö±× Çϳª¸¦ Àâ´Â´Ù. ±×·¡¼ ¿©·¯ºÐÀÌ ´Ù¸¥°ÍÀ» Å×½ºÆ®ÇÒ¼ö ÀÖ´Ù. Äڵ忡¼ À߸øµÈ ¶óÀÎ ´ÙÀ½¿¡ breakpoint¸¦ ¼³Á¤Çضó. ±×¸®°í
¸î¸î ¿¡·¯°¡ ³ª¿Â ´ÙÀ½¿¡ ¹ß°ßÇϱâ À§ÇÑ Á¶°ÇÀ» ÁÖ°í Àû´çÇÑ °ªÀ» ´ëÀÔÇϱâ À§ÇÑ
¸í·É¾î¸¦ ÁØ´Ù. continue
¸í·É¾î·Î ³¡³»¸é ÇÁ·Î±×·¥Àº ¸ØÃßÁö ¾ÊÀ¸¸ç
silent
¸í·É¾î·Î ½ÃÀÛÇÏ¸é ¾î¶² Ãâ·Âµµ ³ªÅ¸³ªÁö ¾Ê´Â´Ù.
¿©±â¿¡ ¿¹°¡ ÀÖ´Ù:
break 403 commands silent set x = y + 4 cont end
¸î¸î ÇÁ·Î±×·¡¹Ö ¾ð¾î(ÁÖ·Î C++)´Â ´Ù¸¥ ¹®¸Æ¿¡¼ ÀÀ¿ëÇÁ·Î±×·¥À» À§ÇØ, ¿©·¯¹ø
Á¤ÀÇµÈ ´ÜÀÏ ÇÔ¼ö À̸§À» Çã¿ëÇÑ´Ù. ÀÌ°ÍÀº º¸Åë overloadingÀ̶ó ºÒ¸°´Ù.
ÇÔ¼ö À̸§ÀÌ ¿À¹ö·ÎµùµÆÀ»¶§, `break function'´Â ¿©·¯ºÐÀÌ
breakpoint¸¦ ¿øÇÏ´Â °÷À» GDB¿¡°Ô ¸»Çϱ⿡ ÃæºÐÇÏÁö ¾Ê´Ù. ¸¸ÀÏ ÀÌ°ÍÀÌ ¹®Á¦ÀΰÉ
¾È´Ù¸é, ¿©·¯ºÐÀº ¿øÇÏ´Â ÇÔ¼öÀÇ Æ¯º°ÇÑ ¹öÀüÀ» ÁöÁ¤Çϱâ À§ÇØ `break function(types)' °°Àº °ÍÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.
±×·¸Áö ¾ÊÀ¸¸é, GDB´Â ¿©·¯ºÐÀÌ °¡´ÉÇÑ breakpoint ¼±ÅÃÀ» À§ÇØ ¿©·¯°³ÀÇ ¸Þ´º¸¦
Á¦°øÇÑ´Ù. ±×¸®°í ÇÁ·ÒÇÁÆ® `>'¿Í ÇÔ²² ¼±ÅÃÀ» ±â´Ù¸°´Ù.
óÀ½ µÎ ¿É¼ÇÀº Ç×»ó `[0] cancel'¿Í `[1] all'ÀÌ´Ù.
1À» ŸÀÌÇÎÇϴ°ÍÀº °¢ functionÀÇ Á¤ÀǸ¶´Ù breakpoint¸¦
¼³Á¤ÇÏ´Â °ÍÀÌ°í 0À» ŸÀÌÇÎÇϴ°ÍÀº »õ·Î¿î breakpoint¸¦ ¼³Á¤Çϴ°Í
¾øÀÌ break
¸í·É¾î¸¦ ¶°³´Â °ÍÀÌ´Ù.
¿¹¸¦ µé¾î, ´ÙÀ½ ¼¼¼ÇÀÇ ¹ßÃé³»¿ëÀº ¿À¹ö·ÎµùµÈ ½Éº¼ String::after
¿¡
breakpoint¸¦ ¼³Á¤Çϴ°ÍÀ» º¸¿©ÁØ´Ù.
¿ì¸®´Â ÇÔ¼ö À̸§ÀÇ 3°³ÀÇ Æ¯Á¤ Á¤ÀǸ¦ ¼±ÅÃÇß´Ù.:
(gdb) b String::after [0] cancel [1] all [2] file:String.cc; line number:867 [3] file:String.cc; line number:860 [4] file:String.cc; line number:875 [5] file:String.cc; line number:853 [6] file:String.cc; line number:846 [7] file:String.cc; line number:735 > 2 4 6 Breakpoint 1 at 0xb26c: file String.cc, line 867. Breakpoint 2 at 0xb344: file String.cc, line 875. Breakpoint 3 at 0xafcc: file String.cc, line 846. Multiple breakpoints were set. Use the "delete" command to delete unwanted breakpoints. (gdb)
Continuing´Â ÇÁ·Î±×·¥ÀÌ Á¤»óÀûÀ¸·Î ¸¶Ä¥¶§±îÁö ÇÁ·Î±×·¥ ½ÇÇàÀ» ´Ù½Ã
½ÃÀÛÇÑ´Ù´Â ÀǹÌÀÌ´Ù. ¹Ý´ë·Î, stepping´Â ´ÜÁö ÇÁ·Î±×·¥¿¡¼ Çѹø ´õ
"step"À» ½ÇÇàÇÑ´Ù´Â ÀǹÌÀÌ´Ù. ¿©±â¼ "step"Àº ¼Ò½º ÄÚµåÀÇ ÇÑ ¶óÀÎÀ̰ųª ´ÜÀÏ
±â°è ¸í·É¾î(¿©·¯ºÐÀÌ »ç¿ëÇÏ´Â ¸í·É¾î¿¡ ÀÇÁ¸ÇÑ´Ù.)Áß Çϳª¸¦ ÀǹÌÇÑ´Ù.
°è¼ÓÀ̳ª ´Ü°èÁßÀ϶§, ÇÁ·Î±×·¥Àº breakpoint³ª ½ÅÈ£¶§¹®¿¡ °ð ¸ØÃâÁöµµ ¸ð¸¥´Ù.
(¸¸ÀÏ ½ÅÈ£¶§¹®À̶ó¸é, ¿©·¯ºÐÀº handle
À̳ª ½ÇÇàÀ» ´Ù½Ã ½ÃÀÛÇϱâ À§ÇØ
`signal 0'À» »ç¿ëÇÏ±æ ¿øÇÒÁö ¸ð¸¥´Ù. ½ÅÈ£µé¼½¼ÇÀ» ÂüÁ¶Çضó.)
continue [ignore-count]
c [ignore-count]
fg [ignore-count]
ignore
¿Í °°´Ù.(Break Á¶°Çµé ¼½¼ÇÀ» ÂüÁ¶Çضó.)
ÀÎÀÚ ignore-count´Â ÇÁ·Î±×·¥ÀÌ breakpoint ¶§¹®¿¡ ÁßÁöÇÒ¶§¸¸ Àǹ̰¡
ÀÖ´Ù. ´Ù¸¥¶§, continue
¸¦ À§ÇÑ ÀÎÀÚµéÀº ¹«½ÃµÈ´Ù.
c
¿Í fg
´Â ÆíÀ§¸¦ À§Çؼ¸¸ Á¦°øµÇ¸ç continue
¿Í Á¤È®È÷ °°Àº ÇൿÀ» ÇÑ´Ù.
´Ù¸¥ À§Ä¡¿¡¼ ½ÇÇàÀ» ´Ù½Ã ½ÃÀÛÇϱâ À§ÇØ, ¿©·¯ºÐÀº È£Ãâ ÇÔ¼ö·Î ´Ù½Ã °¡±â À§ÇØ
return
(ÇÔ¼ö¿¡¼ ¸®ÅÏ
¼½¼ÇÀ» ÂüÁ¶Çضó.)À» »ç¿ëÇÒ¼ö ÀÖ´Ù.; ¶Ç´Â ÇÁ·Î±×·¥ÀÇ ÀÓÀÇÀÇ À§Ä¡·Î °¡±â À§ÇØ
jump
(´Ù¸¥ ÁÖ¼Ò¿¡¼ °è¼ÓÇϱ⼽¼ÇÀ» ÂüÁ¶Çضó.)¸¦ »ç¿ëÇضó.
steppingÀ» »ç¿ëÇÏ´Â ÀüÇüÀûÀÎ ±â¼úÀº ÇÔ¼öÀÇ ½ÃÀÛÀ̳ª ¹®Á¦°¡ ÀÖ´Â ÇÁ·Î±×·¥ ¼½¼Ç¿¡ breakpoint(Breakpoints, watchpoints, ±×¸®°í exceptions ¼½¼ÇÀ» ÂüÁ¶Çضó.)¸¦ ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù. ±×¸®°í breakpoint¿¡¼ ¸ØÃ⶧±îÁö ÇÁ·Î±×·¥À» µ¹¸®°í Àǽɽº·¯¿î À§Ä¡¿¡¼ stepÀ» ¹à¾Æ°¡°í ÇÁ·Î±×·¥¿¡ ¹®Á¦°¡ ¹ß»ýÇÒ¶§±îÁö Èï¹Ì°¡ ÀÖ´Â º¯¼ö¸¦ °Ë»çÇÏ´Â °ÍÀÌ´Ù.
step
s
ÀÌ´Ù.
°æ°í: ¸¸ÀÏ ¿©·¯ºÐÀÌ µð¹ö±ë Á¤º¸ ¾øÀÌ ÄÄÆÄÀÏµÈ ÇÔ¼ö³»¿¡ Á¦¾î°¡ ÀÖ´Â µ¿¾È¿¡
step
¸í·É¾î¸¦ »ç¿ëÇÑ´Ù¸é, ½ÇÇàÀº Á¦¾î°¡ µð¹ö±ë Á¤º¸¸¦ °¡Áö°í ÀÖ´Â ÇÔ¼ö¿¡ µµÂøÇÒ¶§±îÁö °è¼ÓµÈ´Ù. °Ô´Ù°¡, µð¹ö±ë Á¤º¸ ¾øÀÌ ÄÄÆÄÀÏ µÈ ÇÔ¼ö³»·Î´Â stepµÇÁö ¾Ê´Â´Ù. µð¹ö±ë Á¤º¸ ¾ø´Â ÇÔ¼ö³»·Î stepÇϱâ À§Çؼ´Âstepi
¸¦ »ç¿ëÇضó.
step
¸í·É¾î´Â ¼Ò½º ¶óÀÎÀÇ Ã¹ ¸í·É¾î¿¡¼¸¸ ¸ØÃá´Ù. ÀÌ°ÍÀº ·çÆ®µî
switch¹®¿¡¼ ÀϾ¼ö ÀÖ´Â ¿©·¯¹ø Á¤Áö¸¦ ¸·´Â´Ù. step
´Â µð¹ö±ë
Á¤º¸¸¦ °¡Áö°í ÀÖ´Â ÇÔ¼ö°¡ ¶óÀγ»¿¡¼ ºÒ·ÁÁø´Ù¸é ÁßÁö¸¦ À§ÇØ °è¼ÓÇÑ´Ù.
¶ÇÇÑ, step
´Â ¼ºê·çƾÀ» À§ÇÑ ¶óÀγѹö Á¤º¸°¡ ÀÖ´Ù¸é ¼ºê·çƾÀ¸·Î
µé¾î°£´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÀÌ ¸í·É¾î´Â next
ó·³ ÇൿÇÑ´Ù. ÀÌ°ÍÀº
MIPS ¸Ó½Å¿¡¼ cc -gl
¸¦ »ç¿ëÇÒ¶§ÀÇ ¹®Á¦µéÀ» ÇÇÇÒ¼ö ÀÖ´Ù.
Àü¿¡, step
´Â ·çƾ¿¡ °üÇÑ µð¹ö±ë Á¤º¸°¡ ÀÖ´Ù¸é ¼ºê·çƾÀ¸·Î
µé¾î°£´Ù.
step count
step
¿¡¼ ó·³ °è¼Ó ½ÇÇàµÇÁö¸¸, count¹ø ¸¸Å ÇÑ´Ù.
¸¸ÀÏ breakpoint°¡ µµ´ÞÇϰųª step°ú °ü·Ã¾ø´Â ½ÅÈ£°¡ count¹ø Àü¿¡
¹ß»ýÇÑ´Ù¸é, steppintÀº ¹Ù·Î ¸ØÃá´Ù.
next [count]
step
°ú ºñ½ÁÇÏÁö¸¸, ÇÔ¼ö ÄÚ½ºÀÇ ¶óÀξȿ¡ ³ªÅ¸³ª´Â ÇÔ¼ö
È£ÃâÀº ÁßÁö¾øÀÌ ½ÇÇàµÈ´Ù. ½ÇÇàÀº Á¦¾î°¡ ¿ø·¡ ½ºÅà ·¹º§¿¡¼ ÄÚµåÀÇ ´Ù¸¥ ¶óÀο¡
µµÂø ÇÒ¶§ ¸ØÃß¸ç ¿©·¯ºÐÀÌ next
¸í·É¾î¸¦ »ç¿ëÇÒ¶§ ½ÇÇàÇÑ´Ù.
ÀÌ ¸í·É¾î´Â n
À¸·Î Ãà¾àÇÒ¼ö ÀÖ´Ù.
ÀÎÀÚ count´Â step
ó·³ ¹Ýº¹ Ƚ¼öÀÌ´Ù.
next
¸í·É¾î´Â ¼Ò½º¶óÀÎÀÇ Ã¹ ¸í·É¾î¿¡¼ ¸ØÃá´Ù. ÀÌ°ÍÀº ·çÇÁ µî
switch ¹®¿¡¼ ¹ß»ýÇÏ´Â ´ÙÁß Á¤Áö¸¦ ¸·´Â´Ù.
finish
return
¸í·É¾î¿Í ÀÌ°ÍÀº ´ëÁ¶ÀûÀÌ´Ù.(ÇÔ¼ö¿¡¼ ¹Ýȯ ¼½¼ÇÀ» ÂüÁ¶Çضó.)
u
until
until
ÀÌ ºÐ±â¸¦ ¸¸³¯¶§¸¦ Á¦¿ÜÇÏ°í next
¸í·É¾î¿Í °°À¸¸ç ÀÚµ¿ÀûÀ¸·Î ÇÁ·Î±×·¥ Ä«¿îÅÍ°¡ ºÐ±â ÁÖ¼Òº¸´Ù Ŭ¶§±îÁö
½ÇÇàÀ» °è¼ÓÇÑ´Ù.
ÀÌ°ÍÀº ¿©·¯ºÐÀÌ ´ÜÀÏ steppingÀÌ ÀÌ°÷À» Åë°úÇÑÈÄ ·çÇÁÀÇ ³¡¿¡ µµÂøÇÒ¶§¸¦ ÀǹÌÇϸç,
until
Àº ·çÇÁ¸¦ Á¾·áÇÒ¶§±îÁö ÇÁ·Î±×·¥ ½ÇÇàÀ» °è¼ÓÇϵµ·Ï ¸¸µç´Ù.
´ëÁ¶ÀûÀ¸·Î, ·çÇÁÀÇ ³¡¿¡¼ next
¸í·É¾î´Â ·çÇÁÀÇ ½ÃÀÛÀ¸·Î ´Ù½Ã ³ª¾Æ°¡
¸ç ¿©·¯ºÐÀº ´ÙÀ½ ¹Ýº¹À» ÅëÇØ °Á¦ÀûÀ¸·Î ³ª¾Æ°¥¼ö ÀÖ´Ù.
until
Àº Ç×»ó ÇöÀç ½ºÅà ÇÁ·¹ÀÓÀ» Á¾·áÇÑ´Ù¸é ÇÁ·Î±×·¥À» ¸ØÃá´Ù.
until
´Â ±â°è ÄÚµåÀÇ ¼ø¼°¡ ¼Ò½º ¶óÀÎÀÇ ¼ø¼¿Í ¸ÂÁö ¾Ê´Ù¸é ´Ù¼Ò
¹ÝÁ÷°üÀûÀÎ °á°ú¸¦ ³º´Â´Ù. ¿¹¸¦ µé¾î, µð¹ö±ë ¼¼¼Ç¿¡¼ÀÇ ´ÙÀ½ ¹ßÃë¿¡¼, f
(frame
) ¸í·É¾î´Â ½ÇÇàÀÌ ¶óÀÎ 206
¿¡¼ ¸ØÃß¾ú´Ù´Â°ÍÀ» º¸¿©ÁØ´Ù; ¿ì¸®°¡ until
À» »ç¿ëÇÒ¶§, 195
À» °®´Â´Ù.
(gdb) f #0 main (argc=4, argv=0xf7fffae8) at m4.c:206 206 expand_input(); (gdb) until 195 for ( ; argc > 0; NEXTARG) {ÀÌ°ÍÀº ½ÇÇà È¿À²¼º¶§¹®¿¡ ÄÄÆÄÀÏ·¯°¡ ½ÃÀÛº¸´Ù ·çÇÁÀÇ ³¡¿¡¼ ·çÇÁ¸¦ ´Ýµµ·Ï Äڵ带 ¸¸µé±â ¶§¹®ÀÌ´Ù.--C
for
-·çÇÁ¿¡¼ÀÇ Å×½ºÆ®´Â ·çÇÁÀÇ º»Ã¼Àü¿¡
¾²¿©Á³´Ù. until
¸í·É¾î´Â ÀÌ Ç¥Çö½ÄÀ¸·Î ³ª¾Æ°¥¶§ ·çÇÁÀÇ ½ÃÀÛÀ¸·Î
´Ù½Ã ³ª¾Æ°¥¶§ ³ªÅ¸³´Ù.; ±×·¯³ª Ãʱ⠹®ÀåÀ¸·Î °¡Áö´Â ¾Ê´Â´Ù--½ÇÁ¦ ±â°è ÄÚµå
ÀÇ ±¸°£¿¡¼°¡ ¾Æ´Ï¶ó.
ÀÎÀÚ°¡ ¾ø´Â until
´Â ´ÜÀÏ ¸í·É¾î steppingÀÇ ¼ö´ÜÀ¸·Î ÀÛµ¿ÇÑ´Ù.
±×·¡¼ ÀÎÀÚ°¡ ÀÖ´Â until
º¸´Ù ´À¸®´Ù.
until location
u location
break
¿¡¼ ¹Þ¾ÆµéÀϼö ÀÖ´Â ÀÎÀÚ
ÇüÅÂÀÌ´Ù.(Setting breakpoints ¼½¼ÇÀ» ÂüÁ¶Çضó.)
¸í·É¾î ÇüÅ´ breakpoint¸¦ »ç¿ëÇÑ´Ù. ±×·¡¼ ÀÎÀÚ°¡ ¾øÀ»°æ¿ì until
ºü¸£´Ù.
stepi
si
step
ó·³ ¹Ýº¹ Ƚ¼öÀÌ´Ù.
nexti
ni
next
ó·³ ¹Ýº¹¼öÀÌ´Ù.
½ÅÈ£´Â ÇÁ·Î±×·¥³» ¹ß»ýÇÏ´Â ºñµ¿±âÀû »ç°ÇÀÌ´Ù. OS´Â °¡´ÉÇÑ Á¾·ùÀÇ ½ÅÈ£¸¦
Á¤ÀÇÇÏ¸ç °¢ Á¾·ùÀÇ À̸§°ú ¼ýÀÚ¸¦ ÁØ´Ù. ¿¹¸¦ µé¾î, Unix¿¡¼ SIGINT
´Â ¿©·¯ºÐÀÌ ÀÎÅÍ·´Æ®¸¦ ŸÀÌÇÎ(C-c)ÇÒ¶§ ÇÁ·Î±×·¥ÀÌ °®´Â ½ÅÈ£ÀÌ´Ù.;
SIGSEGV
´Â »ç¿ëÇÒ¼ö ÀÖ´Â ¸Þ¸ð¸® ¿µ¿ª ÀÌ¿ÜÀÇ Àå¼Ò¸¦ ÂüÁ¶ÇÒ¶§ ÇÁ·Î±×·¥ÀÌ °®´Â ½ÅÈ£ÀÌ´Ù.; SIGALRM
´Â alarm Ŭ·° ŸÀ̸Ӱ¡ ²¨Áú¶§ »ý±ä´Ù.
(¸¸ÀÏ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ ¾Ë¶÷À» °¡Áø°æ¿ì¿¡¸¸)
SIGALRM
À» Æ÷ÇÔÇÑ ¸î¸î ½ÅÈ£µéÀº ÇÁ·Î±×·¥ ÇÔ¼öµéÁß ÀϺκÐÀÌ´Ù.
SIGSEGV
ó·³, ´Ù¸¥°ÍµéÀº ¿¡·¯¸¦ °¡¸®Å²´Ù.; ÀÌµé ½ÅÈ£´Â ¹Ì¸® À̵é
½ÅÈ£¸¦ ó¸®ÇÏ´Â ´Ù¸¥ ¹æ¹ýÀ» ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Ù¸é Ä¡¸íÀû(ÇÁ·Î±×·¥Àº Áï½Ã Á״´Ù)ÀÌ´Ù. SIGINT
´Â ÇÁ·Î±×·¥¿¡¼ ¿¡·¯¸¦ °¡¸®Å°´Â°ÍÀº ¾Æ´ÏÁö¸¸
º¸Åë Ä¡¸íÀûÀÌ¾î¼ ÇÁ·Î±×·¥À» Á×À̱â À§ÇÑ ÀÎÅÍ·´Æ®ÀÇ ¸ñÀûÀ¸·Î ½ÇÇàÇÑ´Ù.
GDB´Â ÇÁ·Î±×·¥³» ½ÅÈ£ÀÇ ¹ß»ýÀ» ¹ß°ßÇÒ ´É·ÂÀÌ ÀÖ´Ù. ¿©·¯ºÐÀº ½ÅÈ£ÀÇ Á¾·ù ¸¶´Ù ÇؾßÇÒ°ÍÀ» ¹Ì¸® GDB¿¡°Ô ¸»ÇÒ¼ö ÀÖ´Ù.
º¸Åë, GDB´Â ¿¡·¯½ÅÈ£°¡ ¹ß»ýÇÒ¶§¸¶´Ù Áï½Ã ÇÁ·Î±×·¥À» ¸ØÃß°Ô Çϱâ À§Çؼ
SIGALRM
°ú °°Àº ¿¡·¯°¡ ¾Æ´Ñ ½ÅÈ£µéÀº ¹«½ÃÇϵµ·Ï ¼³Á¤ÇÑ´Ù.
(ÇÁ·Î±×·¥ÀÇ ÇÔ¼ö³» ¿ªÇÒÀ» ¹æÇØÇÏÁö ¾Ê´Â ÇÑ)
¿©·¯ºÐÀº handle
¸í·É¾î¸¦ °¡Áö°í ÀÌµé ¼³Á¤À» ¹Ù²Ü¼ö ÀÖ´Ù.
info signals
info handle
´Â info signals
¿¡ ´ëÇÑ º°¸íÀÌ´Ù.
handle signal keywords...
handle
¸í·É¾î¿¡ ÀÇÇØ Çã¿ëµÇ´Â Å°¿öµå´Â ÁÙÀϼö ÀÖ´Ù.
¿ÏÀüÇÑ À̸§Àº:
nostop
stop
print
Å°¿öµå
¸¦ ¾Ï½ÃÇÑ´Ù.
print
noprint
nostop
Å°¿öµå ¸¦ ¾Ï½ÃÇÑ´Ù.
pass
nopass
½ÅÈ£°¡ ÇÁ·Î±×·¥À» ¸ØÃ⶧, ½ÅÈ£´Â ¿©·¯ºÐÀÌ continueÇÒ¶§±îÁö º¼¼ö ¾ø´Ù.
¸¸ÀÏ pass
°¡ ±×¶§ ½ÅÈ£ÀÇ ¿µÇâÇÏ¿¡ ÀÖ´Ù¸é ÇÁ·Î±×·¥Àº ½ÅÈ£¸¦ º¼¼ö ÀÖ´Ù.
Áï, GDB°¡ ½ÅÈ£¸¦ º¸°íÇÑÈÄ ¿©·¯ºÐÀÌ continueÇÒ¶§ ÇÁ·Î±×·¥ÀÌ ½ÅÈ£¸¦ º¼¼ö ÀÖ´ÂÁö
¾ø´ÂÁö¸¦ Á¦¾îÇϱâ À§ÇØ pass
³ª nopass
¸í·É¾î¿Í ÇÔ²²
handle
À» »ç¿ëÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀº ¶ÇÇÑ ÇÁ·Î±×·¥ÀÌ ½ÅÈ£¸¦ º¸´Â°É ¸·±â À§Çؼ³ª º¼¼ö ¾ø´Â ½ÅÈ£¸¦ º¸µµ·Ï Çϰųª ¾î¶²¶§µçÁö ½ÅÈ£À» ÁÖµµ·Ï Çϱâ À§ÇØ signal
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ÇÁ·Î±×·¥ÀÌ ¸Þ¸ð¸® ÂüÁ¶ ¿¡·¯¶§¹®¿¡ ¸ØÃá´Ù¸é, ¿©·¯ºÐÀº ´õ ½ÇÇà
µÇ±æ ¿øÇؼ Á¤È®ÇÑ °ªÀ» ¿¡·¯ º¯¼ö¿¡ ³Ö°í continueÇÒ¼ö ÀÖ´Ù.;±×·¯³ª ÇÁ·Î±×·¥Àº
¾Æ¸¶ ½ÅÈ£¸¦ º¸ÀÚ ¸¶ÀÚ Ä¡¸íÀû ½ÅÈ£ÀÇ °á°úó·³ Áï½Ã Á×À» °ÍÀÌ´Ù. ÀÌ°ÍÀ» ¸·±â À§ÇØ, ¿©·¯ºÐÀº `signal 0'À» °¡Áö°í °è¼ÓÇØ¾ß ÇÑ´Ù. ÇÁ·Î±×·¥¿¡ ½ÅÈ£ Áֱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
¿©·¯ºÐÀÌ ´ÙÁß ¾²·¹µå¸¦ °¡Áú¶§(´ÙÁß ¾²·¹µå ÇÁ·Î±×·¥ µð¹ö±ëÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.), ¿©·¯ºÐÀº ¸ðµç ¾²·¹µå³ª ƯÁ¤ ¾²·¹µå¿¡ breakpoint¸¦ ¼³Á¤ÇÒÁö ¾ÈÇÒÁö¸¦ ¼±ÅÃÇÒ¼ö ÀÖ´Ù.
break linespec thread threadno
break linespec thread threadno if ...
thread
½Äº°ÀÚ¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
; ÀÌ·± °æ¿ì, ´ÙÀ½Ã³·³ breakpoint Á¶°Ç Àü¿¡ `thread threadno'¸¦ ³õ¾Æ¶ó.
(gdb) break frik.c:13 thread 28 if bartab > lim
ÇÁ·Î±×·¥ÀÌ ¾î¶² ÀÌÀ¯¶§¹®¿¡ GDBÇÏ¿¡¼ ¸ØÃß¾ú´Ù¸é, ÇöÀç ¾²·¹µå¸¸ÀÌ ¾Æ´Ï¶ó ½ÇÇàÁßÀÎ ¸ðµç ¾²·¹µå´Â ¸ØÃá´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀÌ º¯°æµÉ°Íµé¿¡ ´ëÇØ °ÆÁ¤¾øÀÌ ¾²·¹µå¸¦ ¹Ù²Ù´Â°É Æ÷ÇÔÇÏ¿© ÇÁ·Î±×·¥ÀÇ ÀüüÀûÀÎ »óŸ¦ °Ë»çÇϵµ·Ï Çã¿ëÇÑ´Ù.
°Å²Ù·Î, ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» ´Ù½Ã ½ÃÀÛÇÒ¶§ ¸ðµç ¾²·¹µå´Â ½ÇÇàÀ» ½ÃÀÛÇÑ´Ù.
ÀÌ°ÍÀº step
À̳ª next
°°Àº ¸í·É¾î¸¦ °¡Áö°í ´ÜÀÏ
steppingÀ» ÇÒ¶§µµ »ç½ÇÀÌ´Ù.
Ưº°È÷, GDB´Â À¶Å뼺 ¾øÀÌ ¸ðµç ¾²·¹µå¿¡ ´ÜÀÏ steppingÀ» ÇÒ¼ö ¾ø´Ù. ¾²·¹µå ½ºÄÉÁÙ¸µÀ» ÇÏ´Â °ÍÀº µð¹ö±ëÇϴ Ÿ°Ù OS(GDB¿¡ ÀÇÇØ Á¦¾îµÇÁö ¾Ê´Â´Ù.)À̱⠶§¹®¿¡, ´Ù¸¥ ¾²·¹µåµéÀº ÇöÀç ¾²·¹µå°¡ ´ÜÀÏ stepÀ» ¿Ï¼ºÇÏ´Â µ¿¾È ÇÑ ¹®Àå ´õ ½ÇÇàÇÑ´Ù. °Ô´Ù°¡, ÀϹÝÀûÀ¸·Î ´Ù¸¥ ¾²·¹µå´Â ÇÁ·Î±×·¥ÀÌ ¸ØÃ⶧ ¹®Àå °æ°è¸¦ û¼ÒÇϱ⠺¸´Ù´Â ¹®Àå Áß°£¿¡ ¸ØÃá´Ù.
¿©·¯ºÐÀº continue³ª ´ÜÀÏ-steppingÈÄ ´Ù¸¥ ¾²·¹µå¿¡¼ ¸ØÃá ÇÁ·Î±×·¥À» ¹ß°ßÇÒ¼ö ÀÖ´Ù. ÀÌ°ÍÀº óÀ½ ¾²·¹µå°¡ ¿©·¯ºÐÀÇ ¿ä±¸¸¦ ¸¶Ä¡±â Àü¿¡ ¸î¸î ´Ù¸¥ ¾²·¹µå°¡ breakpoint, ½ÅÈ£ ¶Ç´Â ¿¹¿Ü½Ã¿¡ µ¹¾Æ°¥¶§ ÀϾÙ.
ÇÁ·Î±×·¥ÀÌ ¸ØÃß¾úÀ»¶§, ¿©·¯ºÐÀÌ ¾Ë¾Æ¾ßÇÒ Ã¹¹ø°´Â ÇÁ·Î±×·¥ÀÌ ¸ØÃá°÷ÀÌ ¾îµðÀÌ°í °Å±â¸¦ °®´Â ¹æ¹ýÀÌ´Ù.
ÇÁ·Î±×·¥ÀÌ ÇÔ¼ö È£ÃâÀ» ÇÒ¶§¸¶´Ù È£Ãâ¿¡ °üÇÑ Á¤º¸°¡ ¸¸µé¾îÁø´Ù. ±× Á¤º¸´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡¼ È£ÃâÀÇ À§Ä¡¿Í È£Ãâ ÀÎÀÚ ±×¸®°í È£ÃâµÈ ÇÔ¼öÀÇ Áö¿ª º¯¼öµéÀ» Æ÷ÇÔÇÑ´Ù. Á¤º¸´Â ½ºÅà ÇÁ·¹ÀÓ À̶ó ºÒ¸®´Â µ¥ÀÌÅÍ ºí·°¿¡ ÀúÀåµÈ´Ù. ½ºÅà ÇÁ·¹ÀÓÀº ÄÝ ½ºÅà À̶ó ºÒ¸®´Â ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÀԵȴÙ.
ÇÁ·Î±×·¥ÀÌ ¸ØÃß¾úÀ»¶§, ½ºÅÃÀ» °Ë»çÇÏ´Â GDB ¸í·É¾îµéÀº ¿©·¯ºÐÀÌ ÀÌ Á¤º¸ ¸ðµÎ¸¦ º¼¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù.
½ºÅà ÇÁ·¹ÀÓÁß Çϳª°¡ GDB¿¡ ÀÇÇØ selected µÇ°í ¸¹Àº GDB ¸í·É¾îµéÀÌ ¼±ÅÃµÈ ÇÁ·¹ÀÓÀ» °¡¸®Å²´Ù. Ưº°È÷, ¿©·¯ºÐÀÌ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡ ÀÖ´Â º¯¼öÀÇ °ªÀ» GDB ¿¡ ¹°¾îº¼¶§¸¶´Ù ±× °ªÀº ¼±ÅÃµÈ ÇÁ·¹ÀÓ¿¡¼ ¹ß°ßµÈ´Ù. ¿©±â¿¡´Â ¿©·¯ºÐÀÌ Èï¹Ì·Î¿öÇÏ´Â ÇÁ·¹ÀÓÀ» ¼±ÅÃÇÒ¼ö Àִ Ưº°ÇÑ GDB ¸í·É¾îµéÀÌ ÀÖ´Ù. ÇÁ·¹ÀÓ ¼±ÅÃÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
ÇÁ·Î±×·¥ÀÌ ¸ØÃß¾úÀ»¶§, GDB´Â ÀÚµ¿ÀûÀ¸·Î ÇöÀç ½ÇÇàµÇ´Â ÇÁ·¹ÀÓÀ» ¼±ÅÃÇϸç frame
¸í·É¾î¿Í ºñ½ÁÇÏ°Ô °£´ÜÈ÷ ±â¼úÇÑ´Ù.
(ÇÁ·¹ÀÓ¿¡ °üÇÑ Á¤º¸ ¼½¼ÇÀ» ÂüÁ¶Çضó.)
ÄÝ ½ºÅÃÀº stack frames ¶Ç´Â °£´ÜÈ÷ frames ¶ó ºÒ¸®´Â ¿¬¼ÓÀûÀÎ Á¶°¢À¸·Î ³ª´©¾îÁø´Ù.; °¢ ÇÁ·¹ÀÓÀº ÇϳªÀÇ ÇÔ¼ö¿¡ ÇϳªÀÇ È£ÃâÀÌ °ü·ÃµÈ µ¥ÀÌÅÍÀÌ´Ù. ÇÁ·¹ÀÓÀº ÇÔ¼ö¿¡ ÁÖ¾îÁö´Â ÀÎÀÚ¿Í ÇÔ¼öÀÇ Áö¿ª º¯¼öµé ±×¸®°í ÇÔ¼ö°¡ ½ÇÇàÇÏ´Â ÁÖ¼Ò¸¦ Æ÷ÇÔÇÑ´Ù.
¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇÒ¶§, ½ºÅÃÀº ´ÜÁö main
ÇÔ¼ö ÇϳªÀÇ
ÇÁ·¹ÀÓ¸¸ °¡Áö°í ÀÖ´Ù.
ÀÌ°ÍÀº initial ÇÁ·¹ÀÓÀ̳ª outermost ÇÁ·¹ÀÓÀ̶ó ºÒ¸°´Ù.
ÇÔ¼ö°¡ È£ÃâµÉ¶§¸¶´Ù, »õ·Î¿î ÇÁ·¹ÀÓÀº ¸¸µé¾îÁø´Ù.
ÇÔ¼ö°¡ ¹ÝȯµÉ¶§¸¶´Ù, ÇÔ¼ö È£ÃâÀ» À§ÇÑ ÇÁ·¹ÀÓÀº Á¦°ÅµÈ´Ù.
ÇÔ¼ö°¡ Àç±ÍÀûÀ̶ó¸é, °°Àº ÇÔ¼ö¸¦ À§ÇÑ ¸¹Àº ÇÁ·¹ÀÓÀÌ ÀÖÀ»¼ö ÀÖ´Ù.
½ÇÁ¦·Î ½ÇÇà½Ã ¹ß»ýÇÏ´Â ÇÔ¼ö¸¦ À§ÇÑ ÇÁ·¹ÀÓÀº innermost ÇÁ·¹ÀÓÀ̶ó
ºÒ¸°´Ù. ÀÌ°ÍÀº ¿©ÀüÈ÷ Á¸ÀçÇÏ´Â ¸ðµç ½ºÅà ÇÁ·¹ÀÓ¿¡¼ °¡Àå ÃÖ±Ù¿¡ »ý¼ºµÈ °ÍÀÌ´Ù.
ÇÁ·Î±×·¥ ³»¿¡¼, ½ºÅà ÇÁ·¹ÀÓÀº ÁÖ¼Ò¿¡ ÀÇÇØ ½Äº°µÈ´Ù. ½ºÅà ÇÁ·¹ÀÓÀº ¸¹Àº ¹ÙÀÌÆ®µé·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç °¢°¢Àº ÀÚ½ÅÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Ù; ÄÄÇ»ÅÍ °¢ Á¾·ù´Â ÇÁ·¹ÀÓ Áּҷνá Á¦°øµÇ´Â ÁÖ¼Ò ÇÑ ¹ÙÀÌÆ®¸¦ ¼±ÅÃÇÒ¼ö ÀÖ´Ù. º¸Åë ÀÌ ÁÖ¼Ò´Â ½ÇÇàÀÌ ±× ÇÁ·¹ÀÓ³»¿¡ ÀÖ´Â µ¿¾È frame pointer register À̶ó ºÒ¸®´Â ·¹Áö½ºÅÍ¿¡¼ À¯ÁöµÈ´Ù.
GDB´Â innermost ÇÁ·¹ÀÓÀ» À§ÇØ 0À¸·Î ½ÃÀÛÇÏ¿©, È£ÃâµÇ´Â ÇÁ·¹ÀÓÀ» À§ÇØ 1·Î ±×¸®°í »óÀ§·Î µîµîÀ¸·Î Á¸ÀçÇÏ´Â ½ºÅà ÇÁ·¹ÀÓ ¸ðµÎ¸¦ À§ÇØ ¼ýÀÚ¸¦ ´ëÀÔÇÑ´Ù. ÀÌµé ¼ö´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡¼ ½ÇÁ¦·Î Á¸ÀçÇÏÁö´Â ¾Ê´Â´Ù; ÀÌµé ¼ö´Â GDB ¸í·É¾î ³»¿¡¼ ½ºÅà ÇÁ·¹ÀÓÀ» °í¾ÈÇÑ ¹æ¹ýÀ» ¿©·¯ºÐ¿¡°Ô ÁÖµµ·Ï GDB¿¡ ÀÇÇØ ÇÒ´çµÈ´Ù.
¸î¸î ÄÄÆÄÀÏ·¯´Â ½ºÅà ÇÁ·¹ÀÓ ¾øÀÌ ÀÛµ¿Çϵµ·Ï ÇÔ¼ö¸¦ ÄÄÆÄÀÏÇϱâ À§ÇÑ ¹æ¹ýÀ» Á¦°øÇÑ´Ù.(¿¹¸¦ µé¾î, gcc
¿É¼Ç `-fomit-frame-pointer' ´Â
ÇÁ·¹ÀÓ ¾ø´Â ÇÔ¼ö¸¦ ¸¸µç´Ù.)
ÀÌ°ÍÀº ÇÁ·¹ÀÓ ¼³Á¤ ½Ã°£À» ÁÙÀ̱â À§ÇØ ¹«°Å¿î ¶óÀ̺귯¸® ÇÔ¼ö¸¦ »ç¿ëÇÒ¶§
»ç¿ëÇÑ´Ù.
GDB´Â À̵é ÇÔ¼ö È£ÃâÀ» ´Ù·ç±â À§ÇÑ Á¦ÇÑµÈ ±â´ÉÀ» °¡Áö°í ÀÖ´Ù.
innermost ÇÔ¼ö È£ÃâÀÌ ½ºÅà ÇÁ·¹ÀÓÀ» °¡Áö°í ÀÖÁö ¾ÊÀ½¿¡µµ ºÒ±¸ÇÏ°í,
GDB´Â ±×°ÍÀÌ ºÐ¸®µÈ ÇÁ·¹ÀÓÀ» °¡Áö°í ÀÖ´Â °Íó·³ °£ÁÖÇÑ´Ù. ÀÌ°ÍÀº
ÇÔ¼ö È£Ãâ üÀνà Àû´çÇÑ ÃßÀûÀ» Çã¿ëÇϱâ À§ÇØ º¸Åë 0À¸·Î µÈ´Ù.
±×·¯³ª, GDB´Â ±×¹ÛÀÇ ½ºÅÿ¡¼ ÇÁ·¹ÀÓ ¾ø´Â ÇÔ¼ö¸¦ Á¦°øÇÏÁö ¾Ê´Â´Ù.
frame args
frame
¸í·É¾î´Â ÇÑ ½ºÅà ÇÁ·¹ÀÓ¿¡¼ ´Ù¸¥ ½ºÅà ÇÁ·¹ÀÓÀ¸·Î À̵¿Çϵµ·Ï
¿©·¯ºÐÀ» Çã¿ëÇÏ¸ç ¿©·¯ºÐÀÌ ¼±ÅÃÇÑ ½ºÅà ÇÁ·¹ÀÓÀ» Ãâ·ÂÇÑ´Ù.
args Àº ÇÁ·¹ÀÓ ÁÖ¼Ò³ª ½ºÅà ÇÁ·¹ÀÓ ¼öÁß ÇϳªÀÌ´Ù.
ÀÎÀÚ°¡ ¾ø´Ù¸é, frame
ÇöÀç ½ºÅà ÇÁ·¹ÀÓÀ» Ãâ·ÂÇÑ´Ù.
select-frame
select-frame
¸í·É¾î´Â ÇÁ·¹ÀÓ Ãâ·Â¾øÀÌ ÇÑ ½ºÅà ÇÁ·¹ÀÓ¿¡¼ ´Ù¸¥
½ºÅà ÇÁ·¹ÀÓÀ¸·Î À̵¿Çϵµ·Ï Çã¿ëÇÑ´Ù. ÀÌ°ÍÀº Á¶¿ëÇÑ frame
¹öÀü ÀÌ´Ù.
backtrace´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ ¾î¶»°Ô µ¹¾Æ°£´ÂÁö¿¡ ´ëÇÑ ¿ä¾àÀÌ´Ù. ÇöÀç ½ÇÇàµÇ´Â ÇÁ·¹ÀÓ(ÇÁ·¹ÀÓ 0)¿¡¼ ½ÃÀÛÇÏ¿© È£ÃâÀÚ(ÇÁ·¹ÀÓ 1)°¡ µÚµû¶ó¿À°í ±×¸®°í ½ºÅÃÀ§¿¡ ÀÖ´Â ¸¹Àº ÇÁ·¹ÀÓÀ» À§ÇØ ÇÁ·¹ÀÓ´ç ÇѶóÀÎÀ» º¸¿©ÁØ´Ù.
backtrace
bt
backtrace n
bt n
backtrace -n
bt -n
À̸§ where
°ú info stack
(Ãà¾àµÈ infos
)
˼ backtrace
¸¦ À§ÇÑ Ãß°¡ÀûÀÎ º°ÄªÀÌ´Ù.
backtrace¿¡¼ °¢ ¶óÀÎÀº ÇÁ·¹ÀÓ ¼ö¿Í ÇÔ¼öÀ̸§À» º¸¿©ÁØ´Ù.
ÇÁ·Î±×·¥ Ä«¿îÅÍ °ª ¶ÇÇÑ º¸¿©Áø´Ù.--¸¸ÀÏ ¿©·¯ºÐÀÌ set print address off
¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´Ù¸é.
backtrace´Â ¶ÇÇÑ ¸¶Ä¡ ÇÔ¼öÀÇ ÀÎÀÚ Ã³·³ ¼Ò½º ÆÄÀÏ À̸§°ú ¶óÀÎ ³Ñ¹öµµ º¸¿©ÁØ´Ù.
ÇÁ·Î±×·¥ Ä«¿îÅÍ °ªÀº ¸¸ÀÏ ±× ¶óÀÎ ³Ñ¹ö¿¡¼ Äڵ尡 ½ÃÀÛµÈ´Ù¸é »ý·«µÈ´Ù.
¿©±â¿¡ backtraceÀÇ ¿¹Á¦°¡ ÀÖ´Ù. ÀÌ°ÍÀº °¡Àå ¾ÈÂÊÀÇ 3°³ÀÇ ÇÁ·¹ÀÓÀ» º¸¿©ÁÖ´Â `bt 3' ¸í·É¾îÀÌ´Ù.
#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) at builtin.c:993 #1 0x6e38 in expand_macro (sym=0x2b600) at macro.c:242 #2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08) at macro.c:71 (More stack frames follow...)
ÇÁ·¹ÀÓ 0 Ãâ·ÂÀº ÇÁ·Î±×·¥ Ä«¿îÅÍ°ªÀ¸·Î ½ÃÀÛÇÏÁö ¾Ê¾ÒÀ¸¸ç, ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ
builtin.c
ÀÇ 993
¶óÀο¡¼ ¸ØÃß¾ú´Ù´Â °ÍÀ» °¡¸®Å²´Ù.
¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡¼ ½ºÅÃÀ̳ª ´Ù¸¥ µ¥ÀÌÅ͸¦ °Ë»çÇÏ´Â ´ëºÎºÐÀÇ ¸í·É¾îµéÀº ±×¼ø°£¿¡ ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓ¿¡¼ ÀÛµ¿ÇÑ´Ù. ¿©±â¿¡ ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓÀÌ ÀÖ´Ù.; ±×°Íµé ¸ðµÎ´Â ´ÜÁö ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓÀÇ °£´ÜÇÑ ¼³¸íÀ» Ãâ·ÂÇÏ°í Á¾·áµÈ´Ù.
frame n
f n
main
ÀÌ´Ù.
frame addr
f addr
frame
´Â ÀÓÀÇÀÇ ÇÁ·¹ÀÓÀ» ¼±ÅÃÇϱâ À§ÇØ 2°³ÀÇ
ÁÖ¼Ò°¡ ÇÊ¿äÇÏ´Ù.; ÇÁ·¹ÀÓ Æ÷ÀÎÅÍ¿Í ½ºÅà Æ÷ÀÎÅÍ.
MIPS¿Í Alpha ¾ÆÅ°ÅØÃÄ¿¡¼µµ 2°³ÀÇ ÁÖ¼Ò°¡ ÇÊ¿äÇÏ´Ù: ½ºÅà Æ÷ÀÎÅÍ¿Í ÇÁ·Î±×·¥ Ä«¿îÅÍ.
29k ¾ÆÅ°ÅØÃÄ¿¡¼´Â 3°³ÀÇ ÁÖ¼Ò°¡ ÇÊ¿äÇÏ´Ù: ·¹Áö½ºÅÍ ½ºÅà Æ÷ÀÎÅÍ, ÇÁ·Î±×·¥ Ä«¿îÅÍ,
±×¸®°í ¸Þ¸ð¸® ½ºÅà Æ÷ÀÎÅÍ.
up n
down n
down
À» do
·Î °£´ÜÈ÷ ÇÒ¼ö ÀÖ´Ù.
ÀÌµé ¸í·É¾îµé ¸ðµÎ´Â ÇÁ·¹ÀÓÀ» ¼³¸íÇÏ´Â 2¶óÀÎÀ» Ãâ·ÂÇÏ°í ¸¶Ä£´Ù. ù ¶óÀÎÀº ÇÁ·¹ÀÓ ¼ö, ÇÔ¼ö À̸§, ÀÎÀÚ, ±×¸®°í ¼Ò½º ÆÄÀÏ ±× ÇÁ·¹ÀÓ¿¡¼ ½ÇÇà ¶óÀÎ ³Ñ¹ö¸¦ º¸¿©ÁØ´Ù. µÎ¹ø° ¶óÀÎÀº ¼Ò½º ¶óÀÎÀÇ ÅؽºÆ®¸¦ º¸¿©ÁØ´Ù.
¿¹:
(gdb) up #1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc) at env.c:10 10 read_input_file (argv[i]);
Ãâ·ÂÈÄ, ÀÎÀÚ ¾ø´Â list
¸í·É¾î´Â ÇÁ·¹ÀÓ ½ÇÇà½ÃÁ¡ °¡¿îµ¥
10 ¶óÀÎÀ» Ãâ·ÂÇÏ´Ù.
¼Ò½º ¶óÀÎ Ãâ·ÂÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
up-silently n
down-silently n
up
°ú down
ÀÇ º¯Á¾ÀÌ´Ù.;
±×µéÀº »õ ÇÁ·¹ÀÓÀ» Ãâ·ÂÇÏÁö ¾Ê°í Á¶¿ëÈ÷ ÀÛ¾÷Çϴ°ÍÀÌ ´Ù¸£´Ù.
ÀÌµé ¸í·É¾î´Â Ãâ·ÂÀÌ ÇÊ¿ä ¾ø°í È¥¶õ½º·´°Ô Ãâ·ÂµÇ´Â ¶§¿¡ »ç¿ëÇϱâ À§ÇÑ °ÍÀÌ´Ù.
¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓ¿¡ °üÇÑ Á¤º¸¸¦ Ãâ·ÂÇϱâ À§ÇÑ ´Ù¸¥ ¸í·É¾îµéÀÌ ÀÖ´Ù.
frame
f
f
ÀÌ´Ù.
ÀÎÀÚ°¡ ÀÖ´Ù¸é, ÀÌ ¸í·É¾î´Â ½ºÅà ÇÁ·¹ÀÓÀ» ¼±ÅÃÇϱâ À§ÇØ »ç¿ëµÈ´Ù.
ÇÁ·¹ÀÓ ¼±ÅÃÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
info frame
info f
info frame addr
info f addr
frame
¸í·É¾î¿¡¼ ±â¼úÇÑ °°Àº Á¾·ùÀÇ ÁÖ¼Ò¸¦ ¿ä±¸ÇÑ´Ù.(¸î¸î ¾ÆÅ°ÅØÃĸ¦ À§ÇØ 1°³ ÀÌ»ó).
ÇÁ·¹ÀÓ ¼±ÅÃÇϱâ. ¼½¼ÇÀ» ÂüÁ¶Çضó.
info args
info locals
info catch
up
, down
frame
¸í·É¾îµé); ±×¸®°í info catch
¸¦ ŸÀÔÇÎÇضó.
Breakpoints ¿Í ¿¹¿Ü ¼½¼ÇÀ» ÂüÁ¶Çضó.
MIP ±â¹Ý ÄÄÇ»Åʹ ƯÀÌÇÑ ½ºÅà ÇÁ·¹ÀÓÀ» »ç¿ëÇÑ´Ù. ÀÌ°ÍÀº °¡²û ÇÔ¼ö ½ÃÀÛÀ» ¹ß°ßÇϱâ À§ÇØ °´Ã¼ Äڵ忡¼ µÚ·Î ãµµ·Ï GDB ¸¦ ¿ä±¸ÇÑ´Ù.
ÀÀ´ä ½Ã°£(ƯÈ÷ GDB°¡ Ž»öÀ» À§ÇØ Å½»ö ¶óÀÎÀ» ´À¸®°Ô Á¦ÇÑÇÏ´Â ³»ÀåÇü ÀÀ¿ëÇÁ·Î±×·¥¿¡¼)À» Çâ»ó½ÃÅ°±â À§ÇØ, ¿©·¯ºÐÀº ´ÙÀ½ ¸í·É¾îµéÁß Çϳª¸¦ »ç¿ëÇÏ¿© Ž»öÀÇ Å©±â¸¦ Á¦ÇÑÇÏ±æ ¿øÇÒÁöµµ ¸ð¸¥´Ù.:
set heuristic-fence-post limit
heuristic-fence-post
´Â Ž»öµÇ¾î¾ß ÇÑ´Ù. ±×¸®°í µ¹¸®´Âµ¥ ´õ ¿À·¡ °É¸°´Ù.
show heuristic-fence-post
ÀÌµé ¸í·É¾îµéÀº GDB°¡ MIP ÇÁ·Î¼¼¼¿¡¼ ÇÁ·Î±×·¥À» µð¹ö±ëÇϵµ·Ï ¼³Á¤µÇ¾úÀ» ¶§¸¸ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù.
GDB´Â ÇÁ·Î±×·¥ ¼Ò½ºÀÇ ÀϺθ¦ Ãâ·ÂÇÒ¼ö ÀÖ´Ù. ¿Ö³ÄÇϸé ÇÁ·Î±×·¥¿¡ ÀúÀåµÈ µð¹ö±ë Á¤º¸´Â ¼Ò½º ÆÄÀÏÀÌ ÄÄÆÄÀϵɶ§ »ç¿ëµÈ°ÍÀÌ ¹«¾ùÀÎÁö¸¦ ¸»Çϱ⠶§¹®ÀÌ´Ù. ÇÁ·Î±×·¥ÀÌ ¸ØÃ⶧, GDB´Â ¸ØÃá ¶óÀÎÀ» Ãâ·ÂÇÑ´Ù. ¸¶Âù °¡Áö·Î ½ºÅà ÇÁ·¹ÀÓÀ» ¼±ÅÃÇÒ¶§, GDB´Â ÇÁ·¹³»¿¡¼ ¸ØÃá ½ÇÇà ¶óÀÎÀ» Ãâ·ÂÇÑ´Ù. (ÇÁ·¹ÀÓ ¼±ÅÃÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.) ¿©·¯ºÐÀº ¸í¹éÇÑ ¸í·É¾î·Î ¼Ò½º ÆÄÀÏÀÇ ´Ù¸¥ ºÎºÐÀ» Ãâ·ÂÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀÌ GNU Emacs ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ GDB¸¦ »ç¿ëÇÑ´Ù¸é, ¿©·¯ºÐÀº ¼Ò½º¸¦ º¸±â À§ÇØ Emacs ±â´ÉÀ» »ç¿ëÇϴ°ÍÀÌ ´õ ÁÁÀ»Áöµµ ¸ð¸¥´Ù.; GNU Emacs¿¡¼ GDB »ç¿ëÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
¼Ò½º ÆÄÀÏ¿¡¼ ¶óÀÎÀ» Ãâ·ÂÇϱâ À§ÇØ list
¸í·É¾î¸¦ »ç¿ëÇضó.
(°£´ÜÈ÷ l
). ±âº»ÀûÀ¸·Î, 10 ¶óÀÎÀÌ Ãâ·ÂµÈ´Ù.
¿©·¯ºÐÀÌ Ãâ·ÂÇÏ±æ ¿øÇÏ´Â ÆÄÀÏÀÇ ÀϺθ¦ ÁöÁ¤Çϱâ À§ÇÑ ¿©·¯°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.
¿©±â¿¡ ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â list
¸í·É¾îÀÇ ÇüÅ°¡ ÀÖ´Ù.:
list linenum
list function
list
list
¸í·É¾î¿Í ÇÔ²²
Ãâ·ÂµÇ¾ú´Ù¸é, Ãâ·ÂµÈ ¸¶Áö¸· ¶óÀδÙÀ½¿¡ ¶óÀεéÀ» Ãâ·ÂÇÑ´Ù.; ±×·¯³ª, Ãâ·ÂµÈ ¸¶Áö¸· ¶óÀÎÀÌ ½ºÅà ÇÁ·¹ÀÓ(½ºÅà °Ë»çÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.)ÀÇ ÀϺηνá Ãâ·ÂµÈ ¶óÀÎÀ̶ó¸é, ÀÌ°ÍÀº ±× ¶óÀÎÀ» Áß½ÉÀ¸·Î ¸î¶óÀÎÀ» Ãâ·ÂÇÑ´Ù.
list -
±âº»ÀûÀ¸·Î, GDB´Â list
¸í·É¾î¿Í 10°³ÀÇ ¼Ò½º ¶óÀÎÀ» Ãâ·ÂÇÑ´Ù.
¿©·¯ºÐÀº set listsize
À» »ç¿ëÇÏ¿© ÀÌ°ÍÀ» ¹Ù²Ü¼ö ÀÖ´Ù.
set listsize count
list
¸í·É¾î´Â count ¼Ò½º ¶óÀÎÀ» Ãâ·ÂÇÑ´Ù.(¸¸ÀÏ list
ÀÎÀÚ°¡ ´Ù¸¥ ¼ö¸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´Ù¸é)
show listsize
list
°¡ Ãâ·ÂÇÏ´Â ¶óÀÎ ³Ñ¹ö¸¦ Ãâ·ÂÇÑ´Ù.
RET·Î list
¸í·É¾î¸¦ ¹Ýº¹ÇÏ´Â °ÍÀº ÇØ´ç ÀÎÀÚ¸¦
¹«½ÃÇϴ°ÍÀÌ µÈ´Ù. ±×·¡¼ list
¿Í µ¿ÀÏÇÏ´Ù.
ÀÌ°ÍÀº °°Àº ¶óÀÎÀ» °è¼Ó º¸±æ ¿øÇÒ¶§ À¯¿ëÇÏ´Ù. ¿¹¿Ü´Â `-' ÀÎÀÚÀÇ
°æ¿ìÀÌ´Ù; ±× ÀÎÀÚ´Â ¹Ýº¹½Ã º¸Á¸µÇ¾î ¸Å ¹Ýº¹½Ã ¼Ò½º ÆÄÀÏÀ» À̵¿ÇÑ´Ù.
ÀϹÝÀûÀ¸·Î, list
¸í·É¾î´Â ¿©·¯ºÐÀÌ 0, 1 ¶Ç´Â 2 linespecs¸¦Á¦°øÇß´Ù°í ¿¹»óÇÑ´Ù.
linespecÀº ¼Ò½º ¶óÀÎÀ» °¡¸®Å²´Ù; ¼Ò½º ¶óÀÎÀ» ¾²±âÀ§ÇÑ ¸î°¡Áö ¹æ¹ýÀÌ ÀÖÁö¸¸,
°á°ú´Â ¸î¸î ¼Ò½º ¶óÀÎÀ» ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù.
¿©±â¿¡ list
¸¦ À§ÇÑ °¡´ÉÇÑ ÀÎÀÚµé ¸ðµÎ¸¦ ±â¼úÇÑ´Ù:
list linespec
list first,last
list ,last
list first,
list +
list -
list
¿©±â¿¡ ´ÜÀÏ ¼Ò½º ¶óÀÎÀ» ÁöÁ¤ÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù--¸ðµç Á¾·ùÀÇ linespec
number
+offset
list
¸í·É¾î¿¡¼ µÎ¹ø° linespecsó·³ »ç¿ëµÉ¶§, ÀÌ°ÍÀº óÀ½
linespec¿¡¼ ¾Æ·¡ÂÊÀ¸·Î offset ¶óÀÎÀ» ÁöÁ¤ÇÑ´Ù.
-offset
filename:number
function
filename:function
*address
Á¤±Ô½Ä Ç¥Çö½ÄÀ» À§ÇØ ÇöÀç ¼Ò½º ÆÄÀÏ Å½»öÀ» À§ÇØ µÎ°³ÀÇ ¸í·É¾î°¡ ÀÖ´Ù.
forward-search regexp
search regexp
fo
·Î ¸í·É¾î À̸§À» ÁÙÀϼö ÀÖ´Ù.
reverse-search regexp
rev
·Î ¸í·É¾î À̸§À» ÁÙÀϼö
ÀÖ´Ù.
½ÇÇà ÇÁ·Î±×·¥Àº °¡²û ÄÄÆÄÀÏµÈ µð·ºÅ丮¿¡¼ ¼Ò½º ÆÄÀÏÀÇ µð·ºÅ丮¸¦ ±â·ÏÇÏÁö ¾Ê´Â´Ù. ÄÄÆÄÀϵɶ§, µð·ºÅ丮µéÀº ÄÄÆÄÀÏ°ú µð¹ö±ë ¼¼¼Ç »çÀÌ¿¡ À̵¿µÉ¼ö ÀÖ´Ù. GDB´Â ¼Ò½º ÆÄÀÏÀ» ã±â À§ÇÑ µð·ºÅ丮 ¸®½ºÆ®¸¦ °¡Áö°í ÀÖ´Ù.; ÀÌ°ÍÀº source pathÀ̶ó ºÒ¸°´Ù. GDB°¡ ¼Ò½º ÆÄÀÏÀ» ¿øÇÒ¶§¸¶´Ù, GDB´Â ¿øÇÏ´Â À̸§À» °¡Áø ÆÄÀÏÀ» ¹ß°ßÇÒ¶§±îÁö ¸®½ºÆ®³» ¸ðµç µð·ºÅ丮¸¦ ã´Â´Ù. ½ÇÇà Ž»ö °æ·Î´Â ÀÌ·¯ÇÑ ¸ñÀûÀ» À§ÇØ »ç¿ëµÇÁö´Â ¾Ê´Â´Ù. ¼Ò½º °æ·Î¿¡¼ ÀϾÁö ¾Ê´Â´Ù¸é, ÇöÀç ÀÛ¾÷ µð·ºÅ丮µµ ¸¶Âù°¡Áö´Ù.
¸¸ÀÏ GDB°¡ ¼Ò½º °æ·Î¿Í °´Ã¼ ÇÁ·Î±×·¥À» ±â·ÏÇÑ µð·ºÅ丮¿¡¼ ¼Ò½º ÆÄÀÏÀ» ¹ß°ßÇÏÁö ¸øÇß´Ù¸é, GDB´Â ±× µð·ºÅ丮µµ ½ÃµµÇÑ´Ù. ¸¸ÀÏ ¼Ò½º °æ·Î°¡ ºñ¾î ÀÖ°í, ÄÄÆÄÀÏ µð·ºÅ丮¿¡ ´ëÇÑ ±â·ÏÀÌ ¾ø´Ù¸é, GDB´Â ¸¶Áö¸·À¸·Î ÇöÀç µð·ºÅ丮¿¡¼ ã´Â´Ù.
¿©·¯ºÐÀÌ ¼Ò½º °æ·Î¸¦ ´Ù½Ã ¼³Á¤Çϰųª Àç ¹è¿ÇÒ¶§´Â ¾ðÁ¦³ª, GDB´Â ¼Ò½º ÆÄÀϵéÀÌ ¹ß°ß µÇ´Â °÷°ú °¢ ¶óÀÎÀÌ ¼Ò½º ÆÄÀÏ ¾îµð¿¡ ÀÖ´ÂÁö¿¡ °üÇØ Ä³½ÃµÈ ¸ðµç Á¤º¸¸¦ Áö¿î´Ù.
¿©·¯ºÐÀÌ GDB¸¦ ½ÃÀÛÇÒ¶§, ¼Ò½º °æ·Î´Â ºñ¾î ÀÖ´Ù.
´Ù¸¥ µð·ºÅ丮¸¦ Ãß°¡Çϱâ À§ÇØ, directory
¸í·É¾î¸¦ »ç¿ëÇضó.
directory dirname ...
dir dirname ...
directory
show directories
¿©·¯ºÐÀÇ ¼Ò½º °æ·Î°¡ ´õÀÌ»ó Èï¹Ì°¡ ¾ø´Â µð·ºÅ丮¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù¸é, GDB´Â °¡²û À߸øµÈ ¹öÀüÀÇ ¼Ò½º¸¦ ¹ß°ßÇÏ¿© È¥¶õÀ» ¾ß±âÇÒ¼öµµ ÀÖ´Ù. ¿©·¯ºÐÀº ´ÙÀ½Ã³·³ »óȲÀ» ¹Ù·Î ÀâÀ»¼ö ÀÖ´Ù:
directory
¸¦ »ç¿ëÇضó.
directory
¸¦ »ç¿ëÇضó.
¿©·¯ºÐÀº ¼Ò½º ¶óÀεéÀ» ÇÁ·Î±×·¥ ÁÖ¼Ò(±×¸®°í ¹Ý´ë·Î) ´ëÀÀÇϱâ À§ÇØ ¸í·É¾î info line
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù. ±×¸®°í ±â°è¾î ¸í·É¾î·Î½á ÁÖ¼Ò ¹üÀ§¸¦ º¸¿©ÁÖ±â À§ÇØ
¸í·É¾î disassemble
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
GNU Emacs ¸ðµå¿¡¼ µ¹¾Æ°¥¶§, info line
¸í·É¾î´Â ÁöÁ¤µÈ ¶óÀÎÀ»
°¡¸®Å°±â À§ÇØ È»ìÀ» »ç¿ëÇÑ´Ù. ¶ÇÇÑ, info line
¸í·É¾î´Â Çí»ç·Î
½Éº¼¸µ ÇüÅÂÀÇ ÁÖ¼Ò¸¦ Ãâ·ÂÇÑ´Ù.
info line linespec
list
¸í·É¾î(¼Ò½º ¶óÀÎ Ãâ·ÂÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.)¿¡ ÀÇÇØ ÀÌÇصɼö ÀÖ´Â ¹æ¹ýÀ¸·Î ¼Ò½º ¶óÀεéÀ» ÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î, ¿ì¸®´Â ÇÔ¼ö m4_changequote
ÀÇ Ã³À½ ¶óÀÎÀ» À§ÇÑ °´Ã¼ ÄÚµåÀÇ
À§Ä¡¸¦ ¹ß°ßÇϱâ À§ÇØ info line
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.:
(gdb) info line m4_changecom Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
¿ì¸®´Â ¼Ò½º ¶óÀÎÀÌ Æ¯Á¤ ÁÖ¼Ò¸¦ Ä¿¹öÇÏ´Â °ÍÀÌ ¹«¾ùÀÎÁö¸¦ Á¶»ç(linespecÀ»
À§ÇÑ ÇüÅ·νá *addr
À» »ç¿ëÇÏ¿©)ÇÒ¼ö ÀÖ´Ù:
(gdb) info line *0x63ff Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
info line
ÈÄ¿¡, x
¸í·É¾î¸¦ À§ÇÑ ±âº» ÁÖ¼Ò´Â ¶óÀÎÀÇ ½ÃÀÛ
ÁÖ¼Ò¸¦ ¹Ù²Ù´Â °ÍÀÌ´Ù. ±×·¡¼ `x/i'´Â ±â°è¾î ÄÚµå(¸Þ¸ð¸® °Ë»çÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.)¸¦ °Ë»çÇϱ⿡ ÃæºÐ
ÇÏ´Ù. ¶ÇÇÑ, ÀÌ ÁÖ¼Ò´Â Æí¸® º¯¼ö $_
(Æí¸® º¯¼ö
¼½¼ÇÀ» ÂüÁ¶Çضó.)ÀÇ °ªÀ¸·Î½á ÀúÀåµÈ´Ù.
disassemble
¿ì¸®´Â ¸¶Áö¸· info line
¿¹Á¦(±× ¿¹´Â SPARC ±â°è¾î ¸í·É¾î¸¦ º¸¿©ÁØ´Ù.)¿¡¼ º¸¿©ÁØ °´Ã¼ ÄÚµå ¹üÀ§¸¦ °Ë»çÇϱâ À§ÇØ disassemble
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.:
(gdb) disas 0x63e4 0x6404 Dump of assembler code from 0x63e4 to 0x6404: 0x63e4 <builtin_init+5340>: ble 0x63f8 <builtin_init+5360> 0x63e8 <builtin_init+5344>: sethi %hi(0x4c00), %o0 0x63ec <builtin_init+5348>: ld [%i1+4], %o0 0x63f0 <builtin_init+5352>: b 0x63fc <builtin_init+5364> 0x63f4 <builtin_init+5356>: ld [%o0+4], %o0 0x63f8 <builtin_init+5360>: or %o0, 0x1a4, %o0 0x63fc <builtin_init+5364>: call 0x9288 <path_search> 0x6400 <builtin_init+5368>: nop End of assembler dump.
set assembly-language instruction-set
disassemble
³ª x/i
¸í·É¾î¸¦ ÅëÇØ ÇÁ·Î±×·¥À»
¿ª¾î¼ÀºíÇÒ¶§ »ç¿ëÇϱâ À§ÇÑ ¸í·É¾î¸¦ ¼±ÅÃÇÑ´Ù. ÀÌ ¸í·É¾î´Â ÇÑ°³ ÀÌ»óÀÇ ³×ÀÌƼºê ¸í·É¾î ÁýÇÕÀ» °¡Áö°í ÀÖ´Â ¾ÆÅ°ÅØÃÄ¿¡¼ À¯¿ëÇÏ´Ù.
ÇöÀç Intel x86 Æйи®¸¦ À§Çؼ¸¸ Á¤ÀǵǾî ÀÖ´Ù. ¿©·¯ºÐÀº i386
³ª i8086
·Î instruction-set¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù.
±âº»Àº i386
ÀÌ´Ù.
ÇÁ·Î±×·¥¿¡¼ µ¥ÀÌÅ͸¦ °Ë»çÇϱâ À§ÇÑ ÀϹÝÀûÀÎ ¹æ¹ýÀº print
¸í·É¾î³ª (°£´ÜÈ÷ p
) µ¿ÀǾîÀÎ inspect
ÀÌ´Ù.
±×°ÍÀº ÇÁ·Î±×·¥¿¡ ¾²¿©Áø ¾ð¾îÀÇ Ç¥Çö°ªÀ» Æò°¡ÇÏ°í Ãâ·ÂÇÑ´Ù.
(´Ù¸¥ ¾ð¾î¿¡¼ GDB »ç¿ëÇϱ⠼½¼ÇÀ» ÂüÁ¶ Çضó).
print exp
print /f exp
print
print /f
µ¥ÀÌÅ͸¦ °Ë»çÇϱâ À§ÇÑ ´õ low-level ¹æ¹ýÀº x
¸í·É¾î¸¦ ÀÌ¿ë ÇÏ´Â °ÍÀÌ´Ù.
±×°ÍÀº ÁöÁ¤µÈ ¸Þ¸ð¸® ÁÖ¼Ò¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ ½ÃÇèÇÏ°í ÁöÁ¤µÈ Æ÷¸ËÀ¸·Î Ãâ·ÂÇÑ´Ù.
¸Þ¸ð¸® °Ë»çÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
¿©·¯ºÐÀÌ Å¸ÀÔ¿¡ °üÇÑ Á¤º¸¿¡ Èï¹Ì°¡ Àְųª ±¸Á¶Ã¼³ª Ŭ·¡½º Çʵ尡 ¼±¾ðµÇ´Â ¹æ¹ý¿¡
Èï¹Ì°¡ ÀÖ´Ù¸é print
º¸´Ù´Â
ptype exp
¸í·É¾î¸¦ »ç¿ëÇضó.
½Éº¼ Å×ÀÌºí °Ë»çÇϱ⼽¼ÇÀ» ÂüÁ¶Çضó.
print
¿Í ¸¹Àº ´Ù¸¥ GDB ¸í·É¾îµéÀº Ç¥Çö½ÄÀ» ¹Þ¾ÆµéÀÌ¸ç ±× °ªÀ»
°è»êÇÑ´Ù.
¿©·¯ºÐÀÌ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥¹Ö ¾ð¾î¿¡ ÀÇÇØ Á¤ÀÇµÈ »ó¼ö, º¯¼ö ¶Ç´Â ¿¬»êÀÚ´Â
GDBÀÇ Ç¥Çö½Ä¿¡¼ À¯È¿ÇÏ´Ù.
ÀÌ°ÍÀº Ãß°¡ÀûÀΠǥÇö½Ä, ÇÔ¼ö È£Ãâ, ij½ºÆà ±×¸®°í ¹®ÀÚ¿ »ó¼ö¸¦ Æ÷ÇÔÇÑ´Ù.
Àü󸮱â #define
¸í·É¾îµé¿¡ ÀÇÇØ Á¤ÀÇµÈ ½Éº¼µéÀº Æ÷ÇÔµÇÁö ¾Ê´Â´Ù.
GDB´Â ÇöÀç »ç¿ëÀÚÀÇ ÀԷ ǥÇö½Ä¿¡¼ ¹è¿ »ó¼ö¸¦ Áö¿øÇÑ´Ù.
¹®¹ýÀº {element, element...} ÀÌ´Ù. ¿¹¸¦ µé¾î,
¿©·¯ºÐÀº Ÿ°Ù ÇÁ·Î±×·¥¿¡¼ mallocµÈ ¸Þ¸ð¸®³» ¹è¿À» À§ÇØ print {1, 2, 3}
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
C°¡ ¸Å¿ì ³Ð°Ô ÆÛÁ³±â ¶§¹®¿¡ ÀÌ ¸Å´º¾ó¿¡ ¿¹Á¦¿¡¼ º¸¿©ÁØ ´ëºÎºÐÀÇ Ç¥Çö½ÄÀº C ¿¡ ÇØ´çµÈ´Ù. ´Ù¸¥ ¾ð¾î¿¡¼ Ç¥Çö½ÄÀ» »ç¿ëÇÏ´Â ¹ä¹ýÀ» À§Çؼ ´Ù¸¥ ¾ð¾î¿¡¼ GDB »ç¿ëÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
ÀÌ ¼½¼Ç¿¡¼, ¿ì¸®´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ °ü°è ¾øÀÌ GDB Ç¥Çö½Ä¿¡¼ »ç¿ëÇÒ¼ö ÀÖ´Â ¿¬»êÀÚµéÀ» ¾Ö±âÇÒ °ÍÀÌ´Ù.
Çüº¯È¯Àº C»Ó¸¸ ¾Æ´Ï¶ó ¸ðµç ¾ð¿¡¼ Áö¿øµÈ´Ù. ¿Ö³ÄÇÏ¸é ¸Þ¸ð¸® ÁÖ¼Ò¿¡ ÀÖ´Â ±¸Á¶Ã¼¸¦ ½ÃÇèÇϱâ À§Çؼ ¼ýÀÚ¸¦ Æ÷ÀÎÅÍ·Î Çüº¯È¯Çϴ°ÍÀº ¸Å¿ì À¯¿ëÇϱ⠶§¹®ÀÌ´Ù.
GDB´Â ÇÁ·Î±×·¥¹Ö ¾ð¾î¿¡¼ ÀϹÝÀûÀÎ°Íµé ¿Ü¿¡ ´ÙÀ½ ¿¬»êÀÚµéÀ» Áö¿øÇÑ´Ù.:
@
::
{type} addr
»ç¿ë½Ã °¡Àå ÀϹÝÀûÀΠǥÇöÀº ´ëºÎºÐÀÇ ÇÁ·Î±×·¥¿¡¼ º¯¼öÀ̸§ÀÌ´Ù.
Ç¥Çö½Ä¿¡¼ º¯¼öµéÀº ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓ¿¡¼ ÀÌÇصȴÙ. (ÇÁ·¹ÀÓ ¼±ÅÃÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.); ±×µéÀº µÑÁß ÇϳªÀ̾î¾ß ÇÑ´Ù.:
¶Ç´Â
ÀÌ°ÍÀº ÇÔ¼ö³»¿¡¼ Àǹ̰¡ ÀÖ´Ù.
foo (a) int a; { bar (a); { int b = test (); bar (b); } }
¿©·¯ºÐÀº ÇÁ·Î±×·¥ÀÌ ÀÌ¹Ì ÇÔ¼ö foo
³»¿¡¼ ½ÇÇàµÉ¶§´Â ¾ðÁ¦³ª º¯¼ö a
¸¦ ½ÃÇèÇÏ°í »ç¿ëÇÒ¼ö ÀÖ´Ù.
±×·¯³ª ¿©·¯ºÐÀº ÇÁ·Î±×·¥ÀÌ b
°¡ ¼±¾ðµÈ ºí·°³»¿¡¼ ½ÇÇàµÇ´Â µ¿¾È
b
¸¸À» »ç¿ëÇÏ°í °Ë»çÇÒ¼ö ÀÖ´Ù.
¿©±â¿¡´Â ¿¹¿Ü°¡ ÀÖ´Ù: ¿©·¯ºÐÀº ºñ·Ï ÇöÀç ½ÇÇà½ÃÁ¡ÀÌ ÀÌ ÆÄÀÏÀÌ ¾Æ´Ï¶ó ÇÒÁö¶óµµ ¿µ¿ªÀÌ ´ÜÀÏ ¼Ò½º ÆÄÀϳ»ÀÇ º¯¼ö³ª ÇÔ¼ö¸¦ ÂüÁ¶ÇÒ¼ö ÀÖ´Ù. ±×·¯³ª °°Àº À̸§À»(´Ù¸¥ ¼Ò½º ÆÄÀϵ鿡 ÀÖ´Â) °¡Áö°í ÀÖ´Â º¯¼ö³ª ÇÔ¼ö°¡ 1°³ ÀÌ»ó Á¸ÀçÇÒ¼öµµ ÀÖ´Ù. ±×·± °æ¿ì°¡ ¹ß»ýÇÑ´Ù¸é, ±× À̸§À» ÂüÁ¶ÇÏ´Â °ÍÀº ¿¹»óÇÒ¼ö ¾ø´Ù. ¿©·¯ºÐÀÌ ¿øÇϸé, ÄÝ·Ð-ÄݷРǥ±â¸¦ »ç¿ëÇØ Æ¯Á¤ ÇÔ¼ö³ª ÆÄÀϳ» Á¤Àû º¯¼ö¸¦ ±â¼úÇÒ¼ö ÀÖ´Ù.
file::variable function::variable
¿©±â¼ file À̳ª function Àº Á¤Àû variable ¸¦
À§ÇÑ ¹®¸Æ À̸§ÀÌ´Ù. ÆÄÀÏ À̸§ÀÇ °æ¿ì¿¡, ¿©·¯ºÐÀº GDB°¡ ´ÜÀÏ ¿öµå·Î¼ ÆÄÀÏ À̸§À» ÆĽÌÇÏ´Â°É È®½ÇÈ÷ Çϱâ À§ÇØ ÀοëÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù. -- ¿¹¸¦ µé¾î,
`f2.c'¿¡ Á¤ÀÇµÈ x
ÀÇ Àü¿ª °ªÀ» Ãâ·ÂÇϱâ À§ÇØ:
(gdb) p 'f2.c'::x
`::' ÀÇ »ç¿ëÀº C++¿¡¼ °°Àº Ç¥±âÀÇ ºñ½ÁÇÑ »ç¿ëÀ¸·Î Ãæµ¹µÉ¼ö ÀÖ´Ù. GDB´Â GDB Ç¥Çö½Ä¿¡¼ C++ÀÇ ¹üÀ§ Çؼ® ¿¬»êÀÚÀÇ »ç¿ëÀ» Áö¿øÇÑ´Ù.
°æ°í: °¡²û, Áö¿ª º¯¼ö´Â ÇÔ¼ö³» ¾î¶² ÁöÁ¡¿¡¼ À߸øµÈ °ªÀ» °¡Áø°ÍÀ¸·Î ³ªÅ¸ ³¯¼ö ÀÖ´Ù. -- ´ÜÁö »õ·Î¿î ¿µ¿ªÀ¸·Î µé¾î°£ÈÄ Á¾·á µÇ±âÀü¿¡
¿©·¯ºÐÀº ±â°è ¸í·É¾îµéÀ» ´Ü°èÀûÀ¸·Î ÁøÇàÇÒ¶§ ÀÌ ¹®Á¦¸¦ º¼Áöµµ ¸ð¸¥´Ù. ´ëºÎºÐÀÇ ¸Ó½Å¿¡¼, ÀÌ°ÍÀº ½ºÅà ÇÁ·¹ÀÓ ¼³Á¤À» À§ÇØ 1°³ ÀÌ»óÀÇ ¸í·É¾î¸¦ °¡Áö±â ¶§¹®ÀÌ´Ù. (Áö¿ª º¯¼ö Á¤ÀǸ¦ Æ÷ÇÔÇÏ¿©); ¿©·¯ºÐÀÌ ¸Ó½Å ¸í·É¾îµéÀ» ´Ü°èº°·Î ÁøÇàÇÒ¶§ º¯¼ö µéÀº ½ºÅà ÇÁ·¹ÀÓÀÌ ¿ÏÀüÈ÷ ¸¸µé¾îÁú¶§±îÁö À߸øµÈ °ªµéÀ» °¡Áø °ÍÀ¸·Î ³ªÅ¸³¯¼ö ÀÖ´Ù. Á¾·á½Ã, ±×°ÍÀº º¸Åë ½ºÅà ÇÁ·¹ÀÓÀ» Æı«Çϱâ À§ÇØ 1°³ ÀÌ»óÀÇ ¸Ó½Å ¸í·É¾îµéÀ» °¡Áø´Ù; ¿©·¯ºÐÀÌ ¸í·É¾î ±×·ìÀ» ÅëÇØ ´Ü°èº°·Î ÁøÇàÇÑÈÄ Áö¿ª º¯¼ö Á¤ÀǵéÀº »ç¶óÁø´Ù.
ÀÌ°ÍÀº ¸Þ¸ð¸®³» °°Àº ŸÀÔÀÇ ¿¬¼ÓÀûÀÎ °´Ã¼µéÀ» Ãâ·ÂÇϴµ¥ À¯¿ëÇÏ´Ù.; ¹è¿ÀÇ ¼½¼Ç ¶Ç´Â ÇÁ·Î±×·¥³»¿¡ Á¸ÀçÇÏ´Â Æ÷ÀÎÅ͸¦ À§ÇØ µ¿ÀûÀ¸·Î °áÁ¤µÈ ¹è¿ÀÇ Å©±â
¿©·¯ºÐÀº ÀÌÁø ¿¬»êÀÚ `@'¸¦ »ç¿ëÇÏ¿© artificial array·Î½á ¸Þ¸ð¸®ÀÇ ¿¬¼ÓÀû ±¸°£À» ÂüÁ¶ÇÔÀ¸·Î½á ÀÌ°ÍÀ» ÇÒ¼ö ÀÖ´Ù. operand of `@' ÀÇ ¿ÞÂÊ ÇÇ¿¬»êÀÚ´Â ¹è¿°ú °¢ °´Ã¼ÀÇ Ã¹¹ø° ¿ø¼ÒÀ̾î¾ß ÇÏ¸ç ¿À¸¥ÂÊ ¿¬»êÀÚ´Â ¹è¿ÀÇ ¿øÇÏ´Â ±æÀÌÀÌ´Ù. °á°ú´Â ¿ÞÂÊ ÀÎÀÚ Å¸ÀÔ ¸ðµÎÀÇ ¹è¿ °ªÀÌ´Ù. ù¹ø° ¿ø¼Ò´Â ½ÇÁ¦·Î ¿ÞÂÊ ÀÎÀÚÀÌ´Ù; µÎ¹ø° ¿ø¼Ò´Â ù¹ø° ¿ø¼Ò°¡ °¡Áö°í ÀÖ´Â°Íµé ´ÙÀ½ÀÇ ¸Þ¸ð¸® ¹ÙÀÌÆ®µéÀÌ´Ù. ¿©±â¿¡ ¿¹Á¦°¡ ÀÖ´Ù. ÇÁ·Î±×·¥ÀÌ ´ÙÀ½°ú °°´Ù¸é,
int *array = (int *) malloc (len * sizeof (int));
¿©·¯ºÐÀº array
ÀÇ ³»¿ëÀ» Ãâ·ÂÇÒ¼ö ÀÖ´Ù.
p *array@len
`@' ÀÇ ¿ÞÂÊ ÇÇ¿¬»êÀÚ´Â ¸Þ¸ð¸®¿¡ ³²¾Æ ÀÖ´Ù. ÀÌ ¹æ¹ýÀ¸·Î `@' ÇÏ°í °°ÀÌ ¸¸µç ¹è¿ °ªµéÀº ¹Ø¿¡ ¾´ ´Ù¸¥ ¹è¿µé ó·³ ÇൿÇÑ´Ù. ±×¸®°í Ç¥Çö½Ä¿¡¼ »ç¿ëµÉ¶§ Ç¥ÀÎÅ͸¦ ¸¶À½´ë·Î ÇÒ¼ö ÀÖ´Ù. ´ëºÎºÐÀÇ Àΰø ¹è¿Àº Çϳª¸¦ Ãâ·ÂÇÑÈÄ °ª È÷½ºÅ丮 (Value history ¼½¼ÇÀ» ÂüÁ¶Çضó) ¸¦ ÅëÇؼ Ç¥Çö½Ä¿¡¼ ÀÚÁÖ ³ªÅ¸³´Ù.
Àΰø ¹è¿À» ¸¸µé±â À§ÇÑ ´Ù¸¥ ¹æ¹ýÀº Çüº¯È¯¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ¹è¿Ã³·³ °ªÀ» ´Ù½Ã Çؼ®ÇÑ´Ù. ±× °ªÀº ¸Þ¸ð¸®¿¡ ÀÖÀ» ÇÊ¿ä°¡ ¾ø´Ù.:
(gdb) p/x (short[2])0x12345678 $1 = {0x1234, 0x5678}
ÆíÇÏ°Ô, ¿©·¯ºÐÀÌ ¹è¿ÀÇ ±æÀ̸¦ »«´Ù¸é (`(type)[])value') GDB´Â ±× °ªÀ» ä¿ì±â À§ÇØ Å©±â¸¦ °è»êÇÑ´Ù. (`sizeof(value)/sizeof(type)':
(gdb) p/x (short[])0x12345678 $2 = {0x1234, 0x5678}
°¡²û Àΰø ¹è¿ ¸ÞÄ«´ÏÁòÀº Äè ÃæºÐÇÏÁö ¾Ê´Ù; º¹ÀâÇÑ µ¥ÀÌÅÍ ±¸Á¶Ã¼¿¡¼ Èï¹Ì·Î¿î ¿ø¼ÒµéÀº ±ÙÁ¢ÇØ ÀÖÁö
¾ÊÀ»¼ö ÀÖ´Ù. -- ¿¹¸¦ µé¾î, ¿©·¯ºÐÀÌ
¹è¿³» Æ÷ÀÎÅ͵éÀÇ °ª¿¡ Èï¹Ì°¡ ÀÖ´Ù¸é.
ÀÌ·¯ÇÑ »óȲ¿¡¼ À¯¿ëÇÑ ÀÛ¾÷Àº óÀ½ Èï¹Ì·Î¿î °ªÀ» Ãâ·ÂÇϴ ǥÇö½Ä¿¡¼ Ä«¿îÅͷνá Æí¸® º¯¼ö (Æí¸® º¯¼ö(Convenience variables) ¼½¼ÇÀ» ÂüÁ¶Çضó.)
¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ±×¸®°í RET ¸¦ ÅëÇؼ Ç¥Çö½ÄÀ» ¹Ýº¹ÇÏ´Â
°ÍÀÌ´Ù.
¿¹¸¦ µé¾î, ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ¹è¿ dtab
¸¦ °¡Áö°í ÀÖ°í
fv
ÇʵåÀÇ °ª¿¡ Èï¹Ì°¡ ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.
¿©±â¿¡ ÀÖ´Â °ÍÀº ¿©·¯ºÐÀÌ Å¸ÀÌÇÎÇØ¾ß ÇÒ ¿¹Á¦ÀÌ´Ù:
set $i = 0 p dtab[$i++]->fv RET RET ...
±âº»ÀûÀ¸·Î, GDB´Â µ¥ÀÌÅÍ Å¸ÀÔ¿¡ µû¶ó¼ °ªÀ» Ãâ·ÂÇÑ´Ù. °¡²û ÀÌ°ÍÀº ¿©·¯ºÐÀÌ ¿øÇÏ´Â °á°ú°¡ ¾Æ´Ò¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ¿©·¯ºÐÀº 16Áø¼ö·Î ¼ýÀÚ³ª 10Áø¼ö·Î Æ÷ÀÎÅ͸¦ Ãâ·ÂÇϱ⠿øÇÒ¼ö ÀÖ´Ù. ¶Ç´Â ¿©·¯ºÐÀº ¹®ÀÚ¿À̳ª ¸í·É¾î·Î½á ¾î¶² ÁÖ¼ÒÀÇ ¸Þ¸ð¸®¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ º¸±â¸¦ ¿øÇÒÁö ¸ð¸¥´Ù. ÀÌ°ÍÀ» Çϱâ À§ÇØ ¿©·¯ºÐÀº °ªÀ» Ãâ·ÂÇÒ¶§ Ãâ·Â Çü½Ä À» ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
Ãâ·Â Çü½ÄÀÇ °¡Àå °£´ÜÇÑ »ç¿ëÀº ÀÌ¹Ì °è»êµÈ °ªÀ» Ãâ·ÂÇÏ´Â ¹æ¹ýÀÌ´Ù.
ÀÌ°ÍÀº print
¸í·É¾î¿Í ½½·¡½¬(/) ±×¸®°í Çü½Ä¹®ÀÚµé·Î ÇàÇØÁø´Ù.
Áö¿øµÇ´Â Ãâ·Â¹®ÀÚ´Â ´ÙÀ½°ú °°´Ù:
x
d
u
o
t
a
(gdb) p/a 0x54320 $3 = 0x54320 <_initialize_vx+396>
c
f
¿¹¸¦ µé¾î, 16Áø¼ö·Î ÇÁ·Î±×·¥ Ä«¿îÅÍ(PC)¸¦ Ãâ·ÂÇϱâ À§ÇØ ´ÙÀ½À» ŸÀÔÇضó. (Registers ¼½¼ÇÀ» ÂüÁ¶Çضó)
p/x $pc
½½·¢½¬(/)Àü¿¡ ¾î¶² °ø°£µµ À־ ¾ÈµÈ´Ù.: ÀÌ°ÍÀº GDBÀÇ ¸í·É¾î À̸§µéÀÌ ½½·¡½¬(/)¸¦ Æ÷ÇÔÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù.
´Ù¸¥ Çü½ÄÀ¸·Î °ª È÷½ºÅ丮¿¡ ÀÖ´Â ¸¶Áö¸· °ªÀ» ´Ù½Ã Ãâ·ÂÇϱâ À§ÇØ, ¿©·¯ºÐÀº
´ÜÁö Çü½ÄÀ» °¡Áö°í ±×¸®°í Ç¥Çö½ÄÀº °¡ÁöÁö ¾Ê°í print
¸í·É¾î¸¦
»ç¿ëÇÒ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î, `p/x' ´Â 16Áø¼ö·Î ¸¶Áö¸· °ªÀ» Ãâ·ÂÇÑ´Ù.
¿©·¯ºÐÀº ÇÁ·Î±×·¥ÀÇ µ¥ÀÌÅÍ Å¸ÀÔ¿¡ ÀÇÁ¸ÇÏÁö ¾Ê°í ¿©·¯ Çü½ÄÀ¸·Î ¸Þ¸ð¸®¸¦
°Ë»çÇϱâ À§ÇØ x
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
x/nfu addr
x addr
x
x
¸í·É¾î¸¦ »ç¿ëÇضó.
n, f, ±×¸®°í u ´Â ¾ó¸¶³ª ¸¹Àº ¸Þ¸ð¸®¸¦ ³ªÅ¸³»¾ß ÇÏ´ÂÁö¿Í ±×°ÍÀ» Çü½ÄÈ ÇÏ´Â ¹æ¹ýÀ» ÁöÁ¤ÇÏ´Â ¿É¼Ç ÀÎÀÚµéÀÌ´Ù. ; addr ´Â ¿©·¯ºÐÀÌ ³ªÅ¸³¾ ¸Þ¸ð¸®ÀÇ ½ÃÀÛ ÁÖ¼Ò¸¦ Áִ ǥÇö½ÄÀÌ´Ù. ¿©·¯ºÐÀº ±âº»°ªÀ¸·Î nfu¸¦ »ç¿ëÇÑ´Ù¸é, ¿©·¯ºÐÀº `/' ¸¦ ŸÀÔÇÒ ÇÊ¿ä°¡ ¾ø´Ù. addr ¸¦ À§ÇÑ Æí¸®ÇÑ ±âº» °ªÀ» À§ÇÑ ¿©·¯°³ÀÇ ¸í·É¾îÁýÇÕÀÌ ÀÖ´Ù.
print
`s' (³Î·Î ³¡³ ¹®ÀÚ¿), ¶Ç´Â `i'
(±â°è ¸í·É¾î)°¡ »ç¿ëÇÑ Çü½ÄÁß ÇϳªÀ̸ç,
±âº»Àº `x' (16Áø¼ö) ÀÌ´Ù.
±âº» °ªÀº ¿©·¯ºÐÀÌ x
³ª print
¸¦ »ç¿ëÇÒ¶§¸¶´Ù ¹Ù²ï´Ù.
b
h
w
g
x
·Î ´ÜÀ§ Å©±â¸¦ ÁöÁ¤ÇÒ¶§¸¶´Ù, ±× Å©±â°¡ ¿©·¯ºÐÀÌ
x
¸¦ »ç¿ëÇÏ´Â ´ÙÀ½¹ø ±âº» ´ÜÀ§°¡
µÈ´Ù. (`s' ±×¸®°í
`i' Çü½ÄÀ» À§ÇØ, ´ÜÀ§ Å©±â´Â ¹«½ÃµÇ¸ç Á¤»óÀûÀ¸·Î ¾²¿©ÁöÁö ¾Ê´Â´Ù.)
info breakpoints
(¸¶Áö¸· breakpoint ¸®½ºÆ®ÀÇ ÁÖ¼Ò¸¦ À§ÇØ), info line
(¶óÀÎÀÇ ½ÃÀÛ ÁÖ¼Ò¸¦ À§ÇØ), ±×¸®°í print
(¸¸ÀÏ ¿©·¯ºÐÀÌ ¸Þ¸ð¸®¿¡¼ ±× °ªÀ» »ç¿ëÇÑ´Ù¸é).
¿¹¸¦ µé¾î, `x/3uh 0x54320' ´Â
ºÎȣȵÇÁö ¾ÊÀº 10Áø Á¤¼ö (`u') ¿Í ½ÃÀÛ ÁÖ¼Ò 0x54320
·Î Çü½ÄÈµÈ ¸Þ¸ð¸®ÀÇ 3 halfwords
(h
) ¸¦ Ãâ·ÂÇϱ⸦ ¿ä±¸ÇÏ´Â °ÍÀÌ´Ù.
`x/4xw $sp' ´Â 16Áø¼ö·Î (¿©±â¼, `$sp'
;Registers ¼½¼ÇÀ» ÂüÁ¶Çضó.)
½ºÅà Æ÷ÀÎÅÍÀÇ 4 ¿öµå ¸Þ¸ð¸®¸¦ (`w') Ãâ·ÂÇÑ´Ù.
´ÜÀ§ Å©±â¸¦ °¡¸®Å°´Â ¹®ÀÚµé°ú Ãâ·Â Çü½ÄÀ» °¡¸®Å°´Â ¹®ÀÚµé°ú´Â ¸ðµÎ ±¸º°µÇ±â ¶§¹®¿¡, ¿©·¯ºÐÀº óÀ½¿¡ ¿À´Â °ÍÀÌ ´ÜÀ§ Å©±â³ª Çü½ÄÀÎÁö¸¦ ±â¾ïÇÒ ÇÊ¿ä°¡ ¾ø´Ù. Ãâ·Â Ç¥±â `4xw' ±×¸®°í `4wx' ´Â Á¤È®È÷ °°Àº °ÍÀÌ´Ù. (±×·¯³ª, Ä«¿îÆ® n ´Â óÀ½¿¡ ¿Í¾ß ÇÑ´Ù; `wx4' ´Â ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù.)
ºñ·Ï ´ÜÀ§ Å©±â u °¡ Çü½Ä `s'
±×¸®°í `i' ¿¡¼ ¹«½ÃµÈ´Ù ÇÒÁö¶óµµ, ¿©·¯ºÐÀº ¿©ÀüÈ÷ Ä«¿îÆ® n ¸¦ »ç¿ëÇÏ±æ ¿øÇÒÁö ¸ð¸¥´Ù.; ¿¹¸¦ µé¾î,
`3i' ´Â ¿©·¯ºÐÀÌ ¾î¶² ¿¬»êÀÚ¸¦ Æ÷ÇÔÇÏ¿© 3°³ÀÇ ±â°è¾î¸¦ º¸±æ ¿øÇѴٴ°ÍÀ» °¡¸®Å²´Ù.
¸í·É¾î disassemble
Àº ±â°è¾î¸¦ °Ë»çÇÏ´Â ¼±ÅÃÀû ¹æ¹ýÀ» Á¦°øÇÑ´Ù.
¼Ò½º¿Í ±â°è ÄÚµå ¼½¼ÇÀ» ÂüÁ¶Çضó.
x
¸¦ À§ÇÑ ÀÎÀÚµéÀÇ ±âº»°ªÀº
¿©·¯ºÐÀÌ x
¸¦ »ç¿ëÇÒ ¶§¸¶´Ù ÃÖ¼ÒÇÑÀÇ °Ë»ç·Î ¸Þ¸ð¸® ½ºÄ³´×À» ½±°Ô ÇÒ¼ö ÀÖµµ·Ï µðÀÚÀÎ µÇ¾ú´Ù..
¿¹¸¦ µé¾î, ¿©·¯ºÐÀÌ `x/3i addr' ·Î ¼¼°³ÀÇ ±â°è ¸í·É¾î¸¦ °Ë»çÇÑ´Ù¸é, ¿©·¯ºÐÀº ´ÜÁö `x/7' ·Î ´ÙÀ½ 7°³¸¦ °Ë»çÇÒ¼ö ÀÖ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ x
¸í·É¾î¸¦ »ç¿ëÇϱâ À§ÇØ
RET ¸¦ »ç¿ëÇÑ´Ù¸é, ¹Ýº¹ ¼ö
n ´Â ´Ù½Ã »ç¿ëµÈ´Ù; x
ÀÇ ¿¬¼ÓÀûÀÎ »ç¿ëÀ» À§ÇØ ´Ù¸¥ ÀÎÀÚµéÀº ±âº»°ªÀ» °®´Â´Ù.
x
¸í·É¾î·Î Ãâ·ÂµÇ´Â ÁÖ¼Ò¿Í ³»¿ëÀº ³Ê¹« ÀÚÁÖ »ç¿ëµÇ°í ÀϹÝÀû ¹æ¹ýÀ¸·Î °¡Áú¼ö Àֱ⠶§¹®¿¡ °ª È÷½ºÅ丮¿¡ ÀúÀåµÇÁö ¾Ê´Â´Ù.
´ë½Å¿¡, GDB´Â Æí¸® º¯¼ö $_
and $__
ÀÇ °ªÀ¸·Î¼ Ç¥Çö½Ä¿¡¼ À̾îÁö´Â »ç¿ëÀ» À§ÇØ ÀÌ °ªµéÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.
x
¸í·É¾î ÈÄ, °Ë»çµÈ ¸¶Áö¸· ÁÖ¼Ò´Â Æí¸®º¯¼ö
$_
À¸·Î Ç¥Çö½Ä¿¡¼ »ç¿ëÇÒ¼ö ÀÖ´Ù. ÁÖ¼ÒÀÇ ³»¿ëÀº Æí¸® º¯¼ö
$__
À¸·Î ÀÌ¿ëµÉ¼ö ÀÖ´Ù.
¸¸ÀÏ x
¸í·É¾î°¡ ¹Ýº¹ ¼ö¸¦ °¡Áö°í ÀÖ´Ù¸é, ÀúÀåµÈ ÁÖ¼Ò¿Í ³»¿ëµéÀº ¸¶Áö¸· ¸Þ¸ð¸® ´ÜÀ§¿¡¼ Ãâ·ÂµÈ´Ù; ÀÌ°ÍÀº ¸¸ÀÏ ¸î¸î ´ÜÀ§µéÀÌ Ãâ·ÂÀÇ ¸¶Áö¸· ¶óÀο¡ Ãâ·ÂµÈ´Ù¸é Ãâ·ÂµÉ ¸¶Áö¸· ÁÖ¼Ò¿Í °°Áö ¾Ê´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ Ç¥Çö½Ä °ªÀ» ÀÚÁÖ Ãâ·ÂÇÏ±æ ¿øÇÑ´Ù¸é(¹Ù²î´Â ¹æ¹ýÀ» ¾Ë±â À§ÇØ), GDB°¡ ÇÁ·Î±×·¥À» ¸ØÃ⶧¸¶´Ù ÇØ´ç °ªÀ» Ãâ·ÂÇϵµ·Ï Çϱâ À§ÇØ Ç¥Çö½ÄÀ» automatic display list ¿¡ Ãß°¡ÇÏ±æ ¿øÇÒÁöµµ ¸ð¸¥´Ù. ¸®½ºÆ®¿¡ Ãß°¡µÈ °¢ Ç¥Çö½ÄÀº ±¸º°Çϱâ À§ÇØ ¼ýÀÚ°¡ ÁÖ¾îÁø´Ù; ¸®½ºÆ®¿¡¼ Ç¥Çö½ÄÀ» Á¦°ÅÇÏÇÒ·Á¸é ¿©·¯ºÐÀº ¼ýÀÚ¸¦ ÁöÁ¤ÇÏ¸é µÈ´Ù. ÀÚµ¿ µð½ºÇ÷¹ÀÌ´Â ¾Æ·¡Ã³·³ º¸ÀδÙ:
2: foo = 38 3: bar[5] = (struct hack *) 0x3804
ÀÌ µð½ºÇ÷¹ÀÌ´Â Ç׸ñ ¼ö, Ç¥Çö½Ä ±×¸®°í ÇöÀç °ªÀ» º¸¿©ÁØ´Ù.
¿©·¯ºÐÀÌ x
³ª print
À» »ç¿ëÇÏ¿© ¿©·¯ ¿ä±¸¸¦
µð½ºÇ÷¹ÀÌ ÇϵíÀÌ, ¿©·¯ºÐÀº ¿©·¯ºÐÀÌ ¿øÇÏ´Â Ãâ·Â Çü½ÄÀ» ÁöÁ¤ ÇÒ¼ö ÀÖ´Ù.
; »ç½Ç, display
´Â ¿©·¯ºÐÀÇ Çü½Ä ÁöÁ¤¿¡ µû¶ó¼
print
³ª x
¸¦ »ç¿ëÇÒÁö¸¦ °áÁ¤ÇÑ´Ù.
-- ¿©·¯ºÐÀÌ ´ÜÀ§ Å©±â¸¦ ÁöÁ¤Çϰųª x
°¡ Áö¿øÇÏ´Â µÎ Çü½Ä
(`i' and `s') Áß Çϳª¶ó¸é GDB´Â x
¸¦ »ç¿ëÇÑ´Ù.; ±×·¸Áö ¾ÊÀ¸¸é GDB´Â print
¸¦ »ç¿ëÇÑ´Ù.
display exp
display
´Â ¹Ýº¹µÇÁö ¾Ê´Â´Ù.
display/fmt exp
display/fmt addr
¿¹¸¦ µé¾î, `display/i $pc'´Â ½ÇÇàÀÌ ¸ØÃ⶧¸¶´Ù ½ÇÇàµÇ´Â ±â°è ¸í·É¾î¸¦ º¸±â À§ÇØ À¯¿ëÇÏ´Ù. (`$pc' ´Â ÇÁ·Î±×·¥ Ä«¿îÅÍÀÇ ÀϹÝÀû À̸§ÀÌ´Ù; Registers ¼½¼ÇÀ» ÂüÁ¶Çضó.).
undisplay dnums...
delete display dnums...
undisplay
´Â ¹Ýº¹µÇÁö ¾Ê´Â´Ù.
(±×·¸Áö ¾ÊÀ¸¸é ¿©·¯ºÐÀº `No display number ...' ¿¡·¯¸¦ °®´Â´Ù.)
disable display dnums...
enable display dnums...
display
info display
µð½ºÇ÷¹ÀÌ Ç¥Çö½ÄÀÌ Áö¿ª º¯¼ö¸¦ °¡¸®Å²´Ù¸é, º¯¼ö°¡ ¼³Á¤µÈ ¹®¸Æ¿Ü¿¡¼´Â
Ç¥Çö½ÄÀº ÀÌÇØ°¡ µÇÁö ¾Ê´Â´Ù.
±×·± Ç¥Çö½ÄÀº ½ÇÇàÀÌ º¯¼öµéÁß Çϳª°¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀº ¹®¸Æ¾È¿¡ µé¾î°¥¶§ disableµÈ´Ù.
¿¹¸¦ µé¾î, ¿©·¯ºÐÀÌ ÀÎÀÚ last_char
¸¦ °¡Áö´Â ÇÔ¼ö³»¿¡ ÀÖ´Â µ¿¾È,
¸í·É¾î display last_char
¸¦ Áشٸé, GDB´Â ÇÁ·Î±×·¥ÀÌ ±× ÇÔ¼ö³»¿¡¼ ¸ØÃß±â À§ÇØ
°è¼ÓÇÏ´Â µ¿¾È ÀÌ ÀÎÀÚ¸¦ µð½ºÇ÷¹ÀÌÇÑ´Ù.
±×°ÍÀÌ ±×¹ÛÀÇ °÷¿¡¼ ¸ØÃá´Ù¸é ---
(¿©±â¿¡´Â º¯¼ö last_char
°¡ ¾ø´Ù) ---
µð½ºÇ÷¹ÀÌ´Â ÀÚµ¿À¸·Î disable µÈ´Ù.
ÇÁ·Î±×·¥ÀÌ last_char
°¡ ÀǹÌÀÖ´Â °÷¿¡¼ ¸ØÃß´Â
´ÙÀ½¹ø¿¡ ¿©·¯ºÐÀº ´Ù½Ã µð½ºÇ÷¹ÀÌ Ç¥Çö½ÄÀ» °¡´ÉÇÏ°Ô ÇÒ¼ö ÀÖ´Ù.
GDB´Â ¹è¿, ±¸Á¶Ã¼ ±×¸®°í ½Éº¼µéÀ» Ãâ·ÂÇÏ´Â ¹æ¹ýÀ» Á¦¾îÇϱâ À§ÇØ ´ÙÀ½ ¹æ¹ýÀ» Á¦°øÇÑ´Ù.
ÀÌµé ¼³Á¤Àº ¾î¶² ¾ð¾î¿¡¼µçÁö ÇÁ·Î±×·¥ µð¹ö±ëÀ» À§ÇØ À¯¿ëÇÏ´Ù:
set print address
set print address on
on
ÀÌ´Ù.
¿¹¸¦ µé¾î, ÀÌ°ÍÀº ½ºÅà ÇÁ·¹ÀÓÀÌ
set print address on
ó·³ º¸À̵µ·Ï ÇÑ °ÍÀÌ´Ù:
(gdb) f #0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>") at input.c:530 530 if (lquote != def_lquote)
set print address off
set print address off
·Î Ãâ·ÂµÈ °°Àº ½ºÅà ÇÁ·¹ÀÓÀÌ´Ù.:
(gdb) set print addr off (gdb) f #0 set_quotes (lq="<<", rq=">>") at input.c:530 530 if (lquote != def_lquote)¿©·¯ºÐÀº GDB ÀÎÅÍÆäÀ̽º¿¡¼ÀÇ ¸ðµç ±â°è ÀÇÁ¸ÀûÀÎ µð½ºÇ÷¹À̸¦ ÁÙÀ̱â À§ÇØ `set print address off' ¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î,
print address off
À¸·Î ¿©·¯ºÐÀº ¸ðµç ¸Ó½ÅÀÇ backtrace¸¦ À§ÇØ
°°Àº ÅؽºÆ®¸¦ °¡Áú¼öÀÖ´Ù. -- ±×µéÀÌ Æ÷ÀÎÅÍ ÀÎÀÚ¿Í °ü°è°¡ ÀÖµçÁö ¾øµçÁö
show print address
GDB°¡ »ó¡ ÁÖ¼Ò¸¦ Ãâ·ÂÇÒ¶§, ±×°ÍÀº º¸Åë °¡Àå °¡±î¿î ½Éº¼ ´õÇϱ⠿ÀÇÁ¼ÂÀ»
Ãâ·ÂÇÑ´Ù.
¸¸ÀÏ ±× ½Éº¼ÀÌ ÁÖ¼Ò¸¦ ±¸º°ÇÏÁö ¸øÇÑ´Ù¸é(¿¹¸¦ µé¾î, ÀÌ°ÍÀº ¿µ¿ªÀÌ ´ÜÀÏ ¼Ò½ºÀÎ
À̸§ÀÌ´Ù), ¿©·¯ºÐÀº ¸íÈ®È÷ ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.
ÀÌ°ÍÀ» Çϱâ À§ÇÑ ÇÑ°¡Áö ¹æ¹ýÀº info line
À̸ç, ¿¹·Î´Â `info line *0x4537'ÀÌ´Ù.
¼±ÅÃÀûÀ¸·Î, ¿©·¯ºÐÀº ½Éº¼¸¯ ÁÖ¼Ò¸¦ Ãâ·ÂÇÒ¶§ ¼Ò½º ÆÄÀÏ°ú ¶óÀÎ ¼ö¸¦ Ãâ·ÂÇϱâ
À§ÇØ GDB¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù.
set print symbol-filename on
set print symbol-filename off
show print symbol-filename
»ó¡ ÆÄÀÏ À̸§°ú ¶óÀÎ ¼ö¸¦ º¸¿©Áִµ¥ À¯¿ëÇÑ ´Ù¸¥ »óȲÀº Äڵ带 ¿ª ¾î¼ÀºíÇÒ ¶§ÀÌ´Ù.; GDB´Â ¿©·¯ºÐ¿¡°Ô °¢ ¸í·É¾î¿¡ »óÀÀÇÏ´Â ¶óÀÎ ¼ö¿Í ¼Ò½º ÆÄÀÏÀ» º¸¿©ÁØ´Ù.
¶ÇÇÑ, ¸¸ÀÏ Ãâ·ÂµÇ´Â ÁÖ¼Ò°¡ °¡Àå °¡±î¿î Ãʱ⠽ɺ¼°ú »ó´çÈ÷ °¡±õ´Ù¸é ¿©·¯ºÐÀº »ó¡Àû ÇüŸ¦ º¸±æ ¿øÇÒÁöµµ ¸ð¸¥´Ù.
set print max-symbolic-offset max-offset
show print max-symbolic-offset
¿©·¯ºÐÀÌ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ°í ±×°ÍÀÌ °¡¸®Å°´Â °÷ÀÌ È®½ÇÇÏÁö ¾Ê´Ù¸é,
`set print symbol-filename on' ¸¦ ½ÃµµÇضó.
±×·¯¸é ¿©·¯ºÐÀº
`p/a pointer' ¸¦ »ç¿ëÇÏ¿© ±×°ÍÀÌ °¡¸®Å°´Â °÷ÀÇ À̸§°ú º¯¼öÀÇ ¼Ò½º ÆÄÀÏ À§Ä¡¸¦ °áÁ¤ÇÒ¼ö ÀÖ´Ù.
ÀÌ°ÍÀº »ó¡Àû ÇüÅ¿¡ ÀÖ´Â ÁÖ¼Ò¸¦ Çؼ®ÇÑ´Ù.
¿¹¸¦ µé¾î, GDB´Â `hi2.c' ¿¡ Á¤ÀÇµÈ º¯¼ö ptt
°¡ ´Ù¸¥ º¯¼ö t
¸¦ °¡¸®Å°°í ÀÖ´Â °ÍÀ» º¸¿©ÁØ´Ù.:
(gdb) set print symbol-filename on (gdb) p/a ptt $4 = 0xe008 <t in hi2.c>
°æ°í: Áö¿ª º¯¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅͶ§¹®¿¡, `p/a' ´Â ºñ·Ï Àû´çÇÑ
set print
¿É¼ÇÀÌ ÄÑÁ® ÀÖ´ÙÇÏ´õ¶óµµ ÂüÁ¶µÇ´Â ½Éº¼ À̸§°ú ÆÄÀÏÀ̸§À» º¸¿©ÁÖÁö ¾Ê´Â´Ù.
´Ù¸¥ ¼³Á¤µéÀº ´Ù¸¥ Á¾·ùÀÇ °´Ã¼µéÀÌ Ãâ·ÂµÇ´Â ¹æ¹ýÀ» Á¦¾îÇÑ´Ù.
set print array
set print array on
set print array off
show print array
set print elements number-of-elements
set print elements
¸í·É¾î
·Î ¼³Á¤µÈ ¿ø¼ÒÀÇ ¼ö¸¦ Ãâ·ÂÇÑÈÄ Ãâ·ÂÀ» ¸ØÃá´Ù.
ÀÌ Á¦ÇÑ°ªÀº ¶ÇÇÑ ¹®ÀÚ¿ Ãâ·Â¿¡µµ Àû¿ëµÈ´Ù.
number-of-elements ¸¦ 0À¸·Î ¼³Á¤ÇÏ´Â °ÍÀº Ãâ·ÂÀÌ ¹«Á¦ÇÑÀ̶ó´Â
ÀǹÌÀÌ´Ù.
show print elements
set print null-stop
set print pretty on
$1 = { next = 0x0, flags = { sweet = 1, sour = 1 }, meat = 0x54 "Pork" }
set print pretty off
$1 = {next = 0x0, flags = {sweet = 1, sour = 1}, \ meat = 0x54 "Pork"}ÀÌ°ÍÀÌ ±âº» Çü½ÄÀÌ´Ù.
show print pretty
set print sevenbit-strings on
\
nnn¸¦ »ç¿ëÇÏ´Â 9-ºñÆ® ¹®ÀÚ(¹®ÀÚ¿À̳ª ¹®ÀÚ °ª)µéÀ» º¸¿©ÁØ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ¿µ¾î·Î(ASCII) ÀÛ¾÷ÇÑ´Ù¸é ±×¸®°í ¿©·¯ºÐÀÌ Á¦Á¶Àڷνᳪ "meta"
ºñÆ®·Î½á ¹®ÀÚµéÀÇ ÃÖ»óÀ§ ºñÆ®¸¦ »ç¿ëÇÑ´Ù¸é ÀÌ ¼³Á¤Àº ÃÖ»óÀÌ´Ù.
set print sevenbit-strings off
show print sevenbit-strings
set print union on
set print union off
show print union
typedef enum {Tree, Bug} Species; typedef enum {Big_tree, Acorn, Seedling} Tree_forms; typedef enum {Caterpillar, Cocoon, Butterfly} Bug_forms; struct thing { Species it; union { Tree_forms tree; Bug_forms bug; } form; }; struct thing foo = {Tree, {Acorn}};ÀÌ´Ù.
set print union on
¼³Á¤½Ã `p foo' Àº ´ÙÀ½À» Ãâ·ÂÇÑ´Ù.
$1 = {it = Tree, form = {tree = Acorn, bug = Cocoon}}±×¸®°í
set print union off
¼³Á¤½Ã ´ÙÀ½À» Ãâ·ÂÇÑ´Ù.
$1 = {it = Tree, form = {...}}
ÀÌµé ¼³Á¤Àº C++ ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ¶§ Èï¹Ì·Ó´Ù.
set print demangle
set print demangle on
show print demangle
set print asm-demangle
set print asm-demangle on
show print asm-demangle
set demangle-style style
auto
gnu
g++
) ÀÎÄÚµù ¾Ë°í¸®Áò±â¹ÝÀ¸·Î µðÄÚµùÇÑ´Ù.
ÀÌ°ÍÀÌ ±âº»ÀÌ´Ù.
lucid
lcc
) ÀÎÄÚµù ¾Ë°í¸®Áò±â¹ÝÀ¸·Î µðÄÚµùÇÑ´Ù.
arm
cfront
·Î »ý¼ºµÈ ½ÇÇàÆÄÀÏÀ» µð¹ö±ëÇϱ⿡ ÃæºÐÇÏÁö ¾Ê´Ù.
GDB´Â ±×°ÍÀ» Çã¿ëÇϱâ À§ÇØ ´õ ³ôÀº Çâ»óÀ» ¿ä±¸ÇÑ´Ù.
foo
show demangle-style
set print object
set print object on
set print object off
show print object
set print static-members
set print static-members on
set print static-members off
show print static-members
set print vtbl
set print vtbl on
set print vtbl off
show print vtbl
print
¸í·É¾î°¡ Ãâ·ÂÇÑ °ªµéÀº GDB °ª È÷½ºÅ丮¿¡ ÀúÀåµÈ´Ù.
ÀÌ°ÍÀº ´Ù¸¥ Ç¥Çö½Ä¿¡¼ ÀÌ °ªµéÀ» »ç¿ëÇϱæ Çã¿ëÇÑ´Ù.
°ªµéÀº ½Éº¼ Å×À̺íÀÌ ´Ù½Ã ÀÐÇôÁö°Å³ª ¹ö·ÁÁú¶§±îÁö À¯ÁöµÈ´Ù.(¿¹·Î file
³ª
symbol-file
¸í·É¾î.)
½Éº¼ Å×À̺íÀÌ º¯ÇÒ¶§, °ª È÷½ºÅ丮´Â ¹ö·ÁÁø´Ù. ¿Ö³ÄÇÏ¸é °ªµéÀº ½Éº¼ Å×ÀÌºí¿¡ Á¤ÀǵÈ
ŸÀÔ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ Æ÷ÇÔÇϱ⠶§¹®ÀÌ´Ù.
Ãâ·ÂµÈ °ªµéÀº ¿©·¯ºÐÀÌ ÂüÁ¶ÇÒ¼ö ÀÖ´Â È÷½ºÅ丮 ¼ö¸¦ ÁØ´Ù.
À̵é È÷½ºÅ丮 ¼ö´Â 1 ºÎÅÍ ½ÃÀÛÇÏ´Â ¿¬¼ÓµÈ Á¤¼öµéÀÌ´Ù.
print
´Â °ª ¾Õ¿¡ `$num = '¸¦ Ãâ·ÂÇÏ¿© °ª¿¡ ÇÒ´çµÈ
È÷½ºÅ丮 ¼ö¸¦ º¸¿©ÁØ´Ù.;¿©±â¼ num´Â È÷½ºÅ丮 ¼öÀÌ´Ù.
Àü °ªÀ» ÂüÁ¶Çϱâ À§ÇØ, `$' ´ÙÀ½¿¡ °ª È÷½ºÅ丮 ¼ö¸¦ »ç¿ëÇضó.
$
´Â È÷½ºÅ丮³» °¡Àå ÃÖ±Ù °ªÀ» ÂüÁ¶ÇÑ´Ù. ±×¸®°í $$
´Â ±× Àü
°ªÀ» ÂüÁ¶ÇÑ´Ù.
$$n
´Â ³¡¿¡¼ n ¹ø° °ªÀ» ÂüÁ¶ÇÑ´Ù.;
$$2
´Â $$
¿¡ ¿ì¼±ÇÏ´Â °ªÀ̸ç, $$1
´Â $$
°ú °°°í $$0
´Â $
°ú °°´Ù.
¿¹¸¦ µé¾î, ¿©·¯ºÐÀÌ ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ Ãâ·ÂÇÑ´Ù°í ÇÏÀÚ. ±×¸®°í ±¸Á¶Ã¼ÀÇ ³»¿ëÀ» º¸±æ ¿øÇÑ´Ù°í ÇÏÀÚ.
p *$
¸¸ÀÏ ¿©·¯ºÐÀÌ next
°¡ ´ÙÀ½ ±¸Á¶Ã¼¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡¸®Å°´Â ±¸Á¶Ã¼ üÀÎÀ»
°¡Áö°í ÀÖ´Ù¸é, ¿©·¯ºÐÀº ´ÙÀ½°ú °°ÀÌÇÏ¿© ´ÙÀ½°ÍÀÇ ³»¿ëÀ» Ãâ·ÂÇÒ¼ö ÀÖ´Ù:
p *$.next
¿©·¯ºÐÀº ÀÌ ¸í·É¾î¸¦ ¹Ýº¹ÇÏ¿© üÀγ» ¿¬¼ÓÀûÀÎ ¸µÅ©µéÀ» Ãâ·ÂÇÒ¼ö ÀÖ´Ù.--¿©·¯ºÐÀº ´ÜÁö RET¸¸ ŸÀÌÇÎÇÏ¸é µÈ´Ù.
È÷½ºÅ丮´Â Ç¥Çö½ÄÀÌ ¾Æ´Ï¶ó °ªÀ» ÀúÀåÇÑ´Ù´Â °Í¿¡ ÁÖÀÇÇضó.
x
ÀÇ °ªÀº 4ÀÌ°í ¿©·¯ºÐÀº ÀÌµé ¸í·É¾î¸¦ ŸÀÌÇÎÇÒ¼ö ÀÖ´Ù:
print x set x=5
±×¸®°í ºñ·Ï x
ÀÇ °ªÀÌ ¹Ù²ï´Ù ÇÒÁö¶óµµ,
print
¸í·É¾î¿¡ ÀÇÇØ °ª È÷½ºÅ丮¿¡ ÀúÀåµÈ °ªÀº 4·Î ³²´Â´Ù.
show values
show values
´Â °ªÀ» ¹Ù²Û´Ù´Â°ÍÀ» Á¦¿ÜÇÏ°í,
ÀÌ°ÍÀº `p $$9'¸¦ 10¹ø ¹Ýº¹Çϴ°Ͱú °°´Ù.
show values n
show values +
show values +
´Â Ãâ·ÂÀ» º¸¿©ÁÖÁö
¾Ê´Â´Ù.
show values n
¸¦ ¹Ýº¹Çϱâ À§ÇØ RET¸¦ ´©¸£´Â °ÍÀº
Á¤È®È÷ `show values +'°ú °°Àº È¿°ú¸¦ °¡Áø´Ù.
GDB´Â ¿©·¯ºÐÀÌ °ªÀ» °¡Áö°í ³ªÁß¿¡ ÂüÁ¶ÇÒ¼ö ÀÖµµ·Ï GDB³»¿¡¼ »ç¿ëÇÒ¼ö ÀÖ´Â Æí¸® º¯¼ö¸¦ Á¦°øÇÑ´Ù. ÀÌµé º¯¼öµéÀº GDB³»¿¡ Àü¿ªÀûÀ¸·Î Á¸ÀçÇÑ´Ù;ÀÌµé º¯¼ö´Â ÇÁ·Î±×·¥ÀÇ ÀϺκÐÀÌ ¾Æ´Ï¸ç ¼³Á¤µÈ Æí¸® º¯¼öµéÀº ÇÁ·Î±×·¥ÀÇ ½ÇÇà¿¡ Á÷Á¢ÀûÀÎ ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù. ÀÌ°ÍÀÌ ¿©·¯ºÐÀÌ Æí¸®º¯¼ö¸¦ ÀÚÀ¯½º·´°Ô »ç¿ëÇÒ¼ö ÀÖ´Â ÀÌÀ¯ÀÌ´Ù.
Æí¸® º¯¼ö´Â Á¢µÎ»ç·Î `$'¸¦ °¡Áø´Ù. ¸¸ÀÏ Æí¸®º¯¼ö°¡ ¹Ì¸® Á¤ÀÇµÈ ±â°è-ÀÇÁ¸Àû ·¹Áö½ºÅÍ À̸§( ·¹Áö½ºÅÍ ¼½¼ÇÀ» ÂüÁ¶Çضó.)Áß Çϳª°¡ ¾Æ´Ï¶ó¸é, `$'´ÙÀ½ÀÇ À̸§µéÀº Æí¸® º¯¼ö·Î »ç¿ëµÈ´Ù. (´ëÁ¶ÀûÀ¸·Î, °ª È÷½ºÅ丮 ÂüÁ¶µéÀº `$' ´ÙÀ½¿¡ numbersÀÌ´Ù. °ª È÷½ºÅ丮 ¼½¼ÇÀ» ÂüÁ¶Çضó.)
¿©·¯ºÐÀº ÇÁ·Î±×·¥³» º¯¼ö¸¦ ¼³Á¤ÇÏ´Â °Íó·³, Ç¥Çö½ÄÀ» ÇÒ´çÇÏ¿© °ªÀ» Æí¸®º¯¼ö¿¡ ÀúÀåÇÒ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î:
set $foo = *object_ptr
ÀÌ°ÍÀº object_ptr
°¡ °¡¸®Å°´Â °´Ã¼¿¡ Æ÷ÇÔµÈ °ªÀ» $foo
¿¡
ÀúÀåÇÑ´Ù.
óÀ½¿¡ Æí¸® º¯¼ö¸¦ »ç¿ëÇÒ·Á¸é º¯¼ö¸¦ ¸¸µé¾î¶ó. ±×·¯³ª ±× °ªÀº ¿©·¯ºÐÀÌ »õ·Î¿î °ªÀ»
ÇÒ´çÇÒ¶§±îÁö void
À̾î¾ß ÇÑ´Ù. ¿©·¯ºÐÀº ³ªÁß¿¡ ¾î¶²¶§µçÁö ´Ù¸¥ ÇÒ´çÀ¸·Î
°ªÀ» ¼öÁ¤ÇÒ¼ö ÀÖ´Ù.
Æí¸® º¯¼öµéÀº °íÁ¤µÈ ŸÀÔÀÌ ¾ø´Ù. ¿©·¯ºÐÀº ºñ·Ï ±× º¯¼ö°¡ ÀÌ¹Ì ´Ù¸¥ ŸÀÔÀÇ °ªÀ» °¡Áö°í ÀÖ´Ù ÇÒÁö¶óµµ, ±¸Á¶Ã¼, ¹è¿À» Æ÷ÇÔÇÏ¿© ¾î¶² ŸÀÔÀ̵çÁö Æí¸® º¯¼ö¸¦ ÇÒ´çÇÒ¼ö ÀÖ´Ù. Ç¥Çö½Ä ó·³ »ç¿ëµÉ¶§, Æí¸® º¯¼ö´Â ÇöÀç °ªÀÇ Å¸ÀÔÀ» °¡Áö°í ÀÖ´Ù.
show convenience
show con
·Î ÇÒ¼ö ÀÖ´Ù.
Æí¸® º¯¼ö¸¦ »ç¿ëÇϱâ À§ÇÑ ¹æ¹ýÁß Çϳª´Â Áõ°¡ÇÏ´Â Ä«¿îÅͳª ³ª¾Æ°¡´Â Æ÷ÀÎÅͷνáÀÌ´Ù. ¿¹¸¦ µé¾î, ±¸Á¶Ã¼ ¹è¿ÀÇ ¿¬¼ÓÀûÀÎ ¿ä¼Ò¿¡¼ ÇʵåµéÀ» Ãâ·ÂÇϱâ À§ÇØ:
set $i = 0 print bar[$i++]->contents
RET·Î ±× ¸í·É¾î¸¦ ¹Ýº¹Çضó.
¸î¸î Æí¸® º¯¼öµéÀº ÀÚµ¿ÀûÀ¸·Î GDB°¡ ¸¸µé¸ç »ç¿ëÇÒ¼ö ÀÖµµ·Ï °ªµéÀ» ÁØ´Ù.
$_
$_
´Â °Ë»çµÈ ¸¶Áö¸· ÁÖ¼Ò(¸Þ¸ð¸® °Ë»çÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.)¿¡ ´ëÇÑ x
¸í·É¾î¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î ¼³Á¤µÈ´Ù.
°Ë»çÇϱâ À§ÇØ x
¸¦ À§ÇØ ±âº» ÁÖ¼Ò °ªµéÀ» Á¦°øÇÏ´Â ´Ù¸¥ ¸í·É¾îµéÀº ±×
ÁÖ¼Ò¿¡ $_
¸¦ ¼³Á¤ÇÑ´Ù.: ÀÌµé ¸í·É¾î´Â info line
¿Í info breakpoint
¸¦ Æ÷ÇÔÇÑ´Ù.
$_
ŸÀÔÀº $__
ŸÀÔÀ» °¡¸®Å°´Â °æ¿ì¿¡ x
¸í·É¾î¿¡ ÀÇÇØ ¼³Á¤µÉ¶§¸¦ Á¦¿ÜÇÏ°í, void *
ÀÌ´Ù.
$__
$__
´Â °Ë»çµÈ ¸¶Áö¸· ÁÖ¼Ò¿¡¼ °ªÀ» ¹ß°ßÇϱâ À§ÇØ ÀÚµ¿ÀûÀ¸·Î x
¸í·É¾î¿¡ ÀÇÇØ ¼³Á¤µÈ´Ù. ŸÀÔÀº µ¥ÀÌÅÍ°¡ Ãâ·ÂµÇ´Â Æ÷¸Ë°ú ¸ÅÄ¡½ÃÅ°±â À§ÇØ ¼±ÅõȴÙ.
$_exitcode
$_exitcode
´Â µð¹ö±ëµÇ´Â ÇÁ·Î±×·¥À» ³¡¸¶Ä¥¶§ Á¾·á Äڵ带 ÀÚµ¿ÀûÀ¸·Î
¼³Á¤ÇÑ´Ù.
¿©·¯ºÐÀº `$'¿¡ À̸§À» °¡Áö´Â º¯¼öó·³, Ç¥Çö½Ä¿¡¼ ¸Ó½Å ·¹Áö½ºÅÍ
³»¿ëµéÀ» ÂüÁ¶ÇÒ¼ö ÀÖ´Ù. ·¹Áö½ºÅÍ À̸§µéÀº °¢ ¸Ó½Å¸¶´Ù ´Ù¸£´Ù.; ¸Ó½Å¿¡¼ »ç¿ëµÇ´Â
À̸§À» º¸±âÀ§ÇØ info registers
¸¦ »ç¿ëÇضó.
info registers
info all-registers
info registers regname ...
GDB´Â ´ëºÎºÐÀÇ ¸Ó½Å¿¡¼ ÀÌ¿ë(Ç¥Çö½Ä¿¡¼)ÇÒ¼ö ÀÖ´Â 4°³ÀÇ "Ç¥ÁØ" ·¹Áö½ºÅÍ À̸§À»
°¡Áö°í ÀÖ´Ù.--±×°ÍµéÀº ¾ÆÅ°ÅØÃÄÀÇ °ø½Ä ³»Àå ·¹Áö½ºÅ͵é°ú Ãæµ¹ÇÏÁö ¾ÊÀ»¶§´Â ¾ðÁ¦³ª.
·¹Áö½ºÅÍ À̸§ $pc
°ú $sp
´Â ÇÁ·Î±×·¥ Ä«¿îÅÍ ·¹Áö½ºÅÍ¿Í
½ºÅà Æ÷ÀÎÅ͸¦ À§ÇØ »ç¿ëµÈ´Ù. $fp
´Â ÇöÀç ½ºÅà ÇÁ·¹ÀÓ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ Æ÷ÇÔÇÑ
·¹Áö½ºÅÍ¿¡ »ç¿ëµÇ¸ç $ps
´Â ÇÁ·Î¼¼¼ »óŸ¦ Æ÷ÇÔÇÏ´Â ·¹Áö½ºÅÍ¿¡ »ç¿ëµÈ´Ù.
¿¹¸¦ µé¾î, ¿©·¯ºÐÀº Çí»ç°ªÀ¸·Î ÇÁ·Î±×·¥ Ä«¿îÅ͸¦ Ãâ·ÂÇÒ¼ö ÀÖ´Ù.
p/x $pc
¶Ç´Â ´ÙÀ½¿¡ ½ÇÇàÇÒ ¸í·É¾î¸¦ Ãâ·ÂÇÑ´Ù.
x/i $pc
¶Ç´Â ½ºÅà Æ÷ÀÎÅÍ(2)¿¡ 4¸¦ ´õÇÑ´Ù.
set $sp += 4
°¡´ÉÇÒ¶§´Â ¾ðÁ¦³ª, À̵é 4°³ÀÇ Ç¥ÁØ ·¹Áö½ºÅÍ À̸§µéÀº ºñ·Ï ¸Ó½ÅÀÌ ´Ù¸¥ ³»Àå
´Ï¸ð´ÐÀ̶ó ÇÒÁö¶óµµ Ãæµ¹ÀÌ ¾ø´Â ÇÑ, ÀÌ¿ëÇÒ¼ö ÀÖ´Ù.
info registers
¸í·É¾î´Â °ø½ÄÀûÀÎ À̸§À» º¸¿©ÁØ´Ù. ¿¹¸¦ µé¾î,
SPARC¿¡¼ info registers
´Â $psr
·Î½á ÇÁ·Î¼¼¼ »óÅÂ
·¹Áö½ºÅ͸¦ Ãâ·ÂÇÏÁö¸¸, ¿©·¯ºÐÀº $ps
·Î ÀÌ ·¹Áö½ºÅ͸¦ ÂüÁ¶ÇÒ¼ö ÀÖ´Ù.
GDB´Â ·¹Áö½ºÅÍ°¡ ÀÌ·± ¹æ¹ýÀ¸·Î °Ë»çµÉ¶§ Á¤¼ö·Î½á ÀÏ¹Ý ·¹Áö½ºÅÍÀÇ ³»¿ëÀ» °í·ÁÇÑ´Ù. ¸î¸î ¸Ó½ÅÀº ºÎµ¿ ¼Ò¼öÁ¡À» °¡Áú¼ö Àִ Ưº°ÇÑ ·¹Áö½ºÅ͸¦ °¡Áö°í ÀÖ´Ù; ÀÌµé ·¹Áö½ºÅ͵éÀº ºÎµ¿ ¼Ò¼öÁ¡ °ªÀ» °¡Áø°ÍÀ¸·Î °í·ÁÇÑ´Ù. ºÎµ¿ ¼ö¼Á¡ °ªÃ³·³ ÀÏ¹Ý ·¹Áö½ºÅÍÀÇ ³»¿ëÀ» ÂüÁ¶ÇÒ ¹æ¹ýÀÌ ¾ø´Ù.(ºñ·Ï ¿©·¯ºÐÀÌ `print/f $regname'·Î ºÎµ¿ ¼Ò¼öÁ¡Ã³·³ print¸¦ ÇÒ¼ö ÀÖ´Ù ÇÒÁö¶óµµ)
¸î¸î ·¹Áö½ºÅ͵éÀº "raw"¿Í "virtual" µ¥ÀÌÅÍ Æ÷¸ËÀ» ±¸ºÐÇÑ´Ù. OS¿¡ ÀúÀåµÇ´Â ·¹Áö½ºÅÍ
³»¿ëÀÇ µ¥ÀÌÅÍ Æ÷¸ËÀº ÇÁ·Î±×·¥ÀÌ º¸´Â °Í°ú °°Áö ¾Ê´Ù´Â ÀǹÌÀÌ´Ù.
¿¹¸¦ µé¾î, 68881 ºÎµ¿ ¼Ò¼öÁ¡ ÇÁ·Î¼¼¼ÀÇ ·¹Áö½ºÅ͵éÀº Ç×»ó "extended" (raw) Çü½ÄÀ¸·Î
ÀúÀåµÈ´Ù. ±×·¯³ª ¸ðµç C ÇÁ·Î±×·¥µéÀº "double" (virtual) Çü½ÄÀ¸·Î ÀÛµ¿µÈ´Ù.
±×·± °æ¿ì¿¡, GDB´Â º¸Åë virtual Çü½Ä(ÇÁ·Î±×·¥ÀÌ ÀÌÇØÇÒ¼ö ÀÖ´Â Çü½Ä)¸¸À¸·Î ÀÛµ¿ÇÑ´Ù.
±×·¯³ª info registers
¸í·É¾î´Â µÎ°³ Çü½ÄÀ¸·Î µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù.
º¸Åë, ·¹Áö½ºÅÍ °ªÀº ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓ(ÇÁ·¹ÀÓ ¼±ÅÃÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.)°ú °ü°è°¡ ÀÖ´Ù. ÀÌ°ÍÀº ¸¸ÀÏ ¸ðµç ½ºÅà ÇÁ·¹ÀÓÀÌ Á¾·áµÇ°í ÀúÀåµÈ ·¹Áö½ºÅÍ°¡ ÀçÀúÀåµÇ¸é Æ÷ÇÔµÈ Á¦Áö½ºÅÍ °ªÀ» °¡Áú¼ö ÀÖ´Ù´Â°É ÀǹÌÇÑ´Ù. Çϵå¿þ¾î ·¹Áö½ºÅÍÀÇ ³»¿ëÀ» º¸±â À§ÇØ, ¿©·¯ºÐÀº °¡Àå ³»ºÎ ÇÁ·¹ÀÓ(`frame 0')À» ¼±ÅÃÇØ¾ß ÇÑ´Ù.
±×·¯³ª, GDB´Â ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ¸¸µé¾îÁø ±â°è¾î Äڵ忡¼ ·¹Áö½ºÅÍ°¡ ÀúÀåµÇ´Â °÷À» ÁÙ¿©¾ß ÇÑ´Ù. ¸¸ÀÏ ¸î¸î ·¹Áö½ºÅÍ°¡ ÀúÀåµÇÁö ¾Ê´Â´Ù¸é, ¶Ç´Â ¸¸ÀÏ GDB°¡ ÀúÀåµÈ ·¹Áö½ºÅÍ¿¡ À§Ä¡ÇÒ¼ö ¾ø´Ù¸é, ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓÀº Â÷À̸¦ ¸¸µéÁö ¾Ê´Â´Ù.
set rstack_high_address address
set
rstack_high_address
¸í·É¾î·Î ·¹Áö½ºÅÍ ½ºÅÃÀÇ ³¡ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÏ¿© ÀÌ ¹®Á¦¸¦
°í·ÁÇÒ¼ö ÀÖ´Ù. ÀÎÀÚ´Â ÁÖ¼ÒÀ̾î¾ß Çϸç, ¿©·¯ºÐÀº 16Áø¼ö·Î ÁöÁ¤Çϱâ À§ÇØ ¾Õ¿¡ `0x'¸¦ µÎ±æ ¿øÇÒ °ÍÀÌ´Ù.
show rstack_high_address
¼³Á¤¿¡ ÀÇÁ¸ÇÏ¿©, GDB´Â ºÎµ¿ ¼Ò¼öÁ¡ Çϵå¿þ¾îÀÇ »óÅ¿¡ °üÇÑ ´õ ¸¹Àº Á¤º¸¸¦ ÁØ´Ù.
info float
ÇÁ·Î±×·¥ ¾ð¾îµéÀº ÀϹÝÀûÀ¸·Î °øÅëÀûÀÎ ¸éÀ» ¸¹ÀÌ °¡Áö°í ÀÖÁö¸¸, ÀÌµé ¾ð¾îµéÀº
°ÅÀÇ °°Àº ¹æ½ÄÀ¸·Î Ç¥ÇöµÇÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¾î, ANSI C¿¡¼ Æ÷ÀÎÅÍ p
ÀÇ
¿ªÂüÁ¶´Â *p
ÀÌÁö¸¸, Modula-2¿¡¼´Â p^
ÀÌ´Ù.
°ªµéµµ º¸Åë ´Ù¸£°Ô Ç¥ÇöµÈ´Ù. C¿¡¼ 16Áø¼ö °ªÀº `0x1ae'ó·³ ³ªÅ¸³ªÁö¸¸
Modula-2¿¡¼´Â `1AEH'ó·³ ³ªÅ¸³´Ù.
¾ð¾î ÀÇÁ¸ÀûÀÎ Á¤º¸´Â ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥ÀÇ ¿ø ¾ð¾î¿¡¼ÀÇ ÀÛµ¿À» Ç¥ÇöÇϵµ·Ï Çϱâ À§ÇØ ±×¸®°í ÇÁ·Î±×·¥ÀÇ ¿ø ¾ð¾îÀÇ ¹®¹ý°ú ÀÏ°üµÇ°Ô Ãâ·Â °ªÀ» GDB¿¡°Ô Çã¿ëÇϱâ À§ÇØ GDB³»¿¡ ³»ÀåµÇ¾î ÀÖ´Ù. ¿©·¯ºÐÀÌ »ç¿ëÇÏ´Â ¾ð¾î´Â working language ¶ó°í ºÎ¸¥´Ù.
working language¸¦ Á¦¾îÇϱâ À§Çؼ´Â 2°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.--GDB°¡ ÀÚµ¿ÀûÀ¸·Î ¼³Á¤
ÇϵçÁö ¿©·¯ºÐ ½º½º·Î ¼±ÅÃÇϵçÁöÀÇ ¹æ¹ý. ¿©·¯ºÐÀº set language
¸í·É¾î¸¦
»ç¿ëÇÏ¿© ¼³Á¤ÇÒ¼ö ÀÖ´Ù. ½ÃÀÛ½Ã, GDB´Â ÀÚµ¿ÀûÀ¸·Î ¾ð¾î¸¦ ¼³Á¤ÇÑ´Ù. working language´Â ¿©·¯ºÐÀÇ Ç¥Çö½ÄÀÌ Çؼ®µÇ´Â ¹æ¹ý, °ªµéÀÌ Ãâ·ÂµÇ´Â ¹æ¹ýµîÀ» °áÁ¤Çϱâ À§ÇØ »ç¿ë
µÈ´Ù.
working language ÀÌ¿Ü¿¡, GDB°¡ ¾Ë°í ÀÖ´Â ¸ðµç ¼Ò½º ÆÄÀÏÀº ÀÚ½ÅÀÇ working language¸¦
°¡Áö°í ÀÖ´Ù. ¸î¸î °´Ã¼ ÆÄÀÏ Æ÷¸Ë¿¡¼, ÄÄÆÄÀÏ·¯´Â ƯÁ¤ ¼Ò½º ÆÄÀÏ ¾ð¾î°¡ ¾î´À°ÍÀÎÁö
¸¦ °¡¸®Å²´Ù. ±×·¯³ª, GDB´Â ´ëºÎºÐ ÆÄÀÏÀÇ À̸§¿¡¼ ¾ð¾î¸¦ À¯ÃßÇÑ´Ù.
¼Ò½º ÆÄÀÏÀÇ ¾ð¾î´Â C++À̸§ÀÌ demangleÇÏ´Â °Íó·³ Á¦¾îÇÑ´Ù. -- backtrace
¹æ¹ýÀº ÀÚ½ÅÀÇ ¾ð¾î¸¦ À§ÇØ ÀûÀýÈ÷ °¢ ÇÁ·¹ÀÓÀ» º¸¿©ÁØ´Ù. GDB³»¿¡¼ ¼Ò½º ÆÄÀÏÀÇ
¾ð¾î¸¦ ¼³Á¤Çϱâ À§ÇÑ ¹æ¹ýÀº ¾ø´Ù.
ÀÌ°ÍÀº ¿©·¯ºÐÀÌ C·Î ¸¸µé¾úÁö¸¸ ´Ù¸¥ ¾ð¾î·Î ¾²¿©Áø cfront
³ª f2c
°°Àº ÇÁ·Î±×·¥À» »ç¿ëÇÒ¶§ °¡Àå ÀϹÝÀûÀÎ ¹®Á¦ÀÌ´Ù.
±× °æ¿ì, C Ãâ·Â½Ã #line
Áö½Ã¾î¸¦ »ç¿ëÇϵµ·Ï ÇÁ·Î±×·¥À» ¸¸µé¾î¶ó.;
GDB´Â ¿ø ÇÁ·Î±×·¥ÀÇ ¼Ò½º ÄÚµåÀÇ ÀûÀýÇÑ ¾ð¾î¸¦ ¾Ë°ÍÀÌ´Ù. ±×¸®°í ¼Ò½º Äڵ带
º¸¿©ÁÖ¸ç CÄÚµå´Â ¸¸µéÁö ¾ÊÀ» °ÍÀÌ´Ù.
¼Ò½º ÆÄÀÏ À̸§ÀÌ ´ÙÀ½ È®ÀåµéÁß Çϳª¶ó¸é, GDB´Â ±× ¾ð¾î°¡ ´ÙÀ½Áß Çϳª¸¦ °¡¸®Å²´Ù°í »ý°¢ÇÑ´Ù.
¿©·¯ºÐÀÌ ÀÚµ¿ÀûÀ¸·Î ¾ð¾î¸¦ ¼³Á¤Çϵµ·Ï GDB¸¦ Çã¿ëÇÑ´Ù¸é, Ç¥Çö½ÄÀº µð¹ö±ë ¼¼¼Ç ¹× ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡¼ °°Àº ¹æ¹ýÀ¸·Î Çؼ®µÈ´Ù.
¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº ¾ð¾î¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù. ÀÌ°ÍÀ» Çϱâ À§ÇØ, ¸í·É¾î
`set language lang'¸¦ »ç¿ëÇضó. ¿©±â¼ lang´Â
c
³ª modula-2
°°Àº ¾ð¾î À̸§ÀÌ´Ù.
Áö¿ø ¾ð¾îÀÇ ¸®½ºÆ®¸¦ º¸°í ½ÍÀ¸¸é, `set language'¸¦ ŸÀÌÇÎÇضó.
¾ð¾î ¼³Á¤Àº GDB°¡ ÀÚµ¿ÀûÀ¸·Î working language °»½ÅÇϴ°ÍÀ» ¸·¾ÆÁØ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ working language°¡ ¼Ò½º ¾ð¾î¿Í °°Áö ¾ÊÀ»¶§³ª Ç¥Çö½ÄÀÌ µÎ ¾ð¾î¸¦ ¸ðµÎ ¼ö¿ëÇÒ¶§--±×·¯³ª Àǹ̴ ´Ù¸¦¶§-- ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ °æ¿ì ÀÌ°ÍÀº È¥¶õÀ» ¾ß±âÇÑ´Ù. ¿¹¸¦ µé¾î, ÇöÀç ¼Ò½º ÆÄÀÏÀÌ C·Î ¾²¿©Á³°í, GDB´Â Modula-2¸¦ ÆĽÌÇÑ´Ù¸é:
print a = b + c
À§ ¸í·É¾î´Â ¿©·¯ºÐÀÌ ÀǵµÇÑ ´ë·Î µÇÁö ¾Ê´Â´Ù.
C¿¡¼, ÀÌ°ÍÀº b
¿Í c
¸¦ ´õÇÏ°í °á°ú¸¦ a
¿¡
³õ´Â´Ù. Ãâ·Â °á°ú´Â a
°ªÀ̵ȴÙ. Modula-2¿¡¼, ÀÌ°ÍÀº a
¿Í
b+c
ÀÇ °á°ú¸¦ ºñ±³ÇÑ´Ù. ±×¸®°í BOOLEAN
°á°ú¸¦ °¡Áø´Ù.
working language¸¦ ÀÚµ¿ÀûÀ¸·Î ¼³Á¤Çϵµ·Ï GDB¸¦ °¡Áú·Á¸é, `set language local'³ª `set language auto'¸¦ »ç¿ëÇضó. ±×·¯¸é GDB´Â working language¸¦ ÃßÁ¤ÇÑ´Ù. Áï, ¿©·¯ºÐÀÇ ÇÁ·Î±×·¡¹Ö ÇÁ·¹ÀÓ¿¡¼ ¸ØÃ⶧(º¸Åë breakpoint¸¦ ¸¸³¯¶§), GDB´Â working language¸¦ ÇÁ·¹ÀÓ³» ÇÔ¼ö¸¦ À§ÇØ ±â·ÏµÈ ¾ð¾î·Î ¼³Á¤ÇÑ´Ù. ¸¸ÀÏ ÇÁ·¹ÀÓ¿¡¼ÀÇ ¾ð¾î¸¦ ¾ËÁö ¸øÇÑ´Ù¸é(Áï, ÇÔ¼ö³ª ÇÁ·¹ÀÓ¿¡ ÇØ´çÇÏ´Â ºí·°ÀÌ ÀνĵǴ ȮÀåÀÌ ¾Æ´Ñ ¼Ò½º ÆÄÀϾȿ¡ Á¤ÀǵǾî ÀÖ´Ù¸é), ÇöÀç working language´Â ¹Ù²îÁö ¾Ê´Â´Ù. ±×¸®°í GDB´Â °æ°í¸¦ º¸¿©ÁØ´Ù.
ÀÌ°ÍÀº ÇϳªÀÇ ¼Ò½º ÆÄÀÏ Àüü¿¡ ¾²¿©Áø ´ëºÎºÐÀÇ ÇÁ·Î±×·¥¿¡¼´Â ÇÊ¿äÇÏÁö ¾Ê´Ù. ±×·¯³ª, ÇϳªÀÇ ¼Ò½º ¾ð¾î·Î ¾²¿©Áø ÇÁ·Î±×·¥ ¸ðµâÈ¿Í ¶óÀ̺귯¸®´Â ´Ù¸¥ ¼Ò½º ¾ð¾î·Î ¾²¿©Áø ÁÖ ÇÁ·Î±×·¥¿¡ ÀÇÇØ »ç¿ëµÉ¼ö ÀÖ´Ù. ÀÌ·± °æ¿ì `set language auto'À» »ç¿ëÇϸé working language¸¦ ¼³Á¤Çϴµ¥ ¿©·¯ºÐÀ» ÀÚÀ¯½º·´°Ô ÇØÁØ´Ù.
´ÙÀ½ ¸í·É¾îµéÀº ¿©·¯ºÐÀÌ working language°¡ ¹«¾ùÀÎÁö¸¦ ¹ß°ßÇϴµ¥ µµ¿ÍÁØ´Ù. ±×¸®°í ¶ÇÇÑ ¾ð¾î ¼Ò½º ÆÄÀϵéÀÌ ¹«½¼ ¾ð¾î·Î ¾²¿©Á³´ÂÁöµµ ¹ß°ßÇϴµ¥ µµ¿ÍÁØ´Ù.
show language
print
¿Í °°Àº ¸í·É¾î¸¦ »ç¿ëÇÏ´Â °Í°ú °°´Ù.
info frame
info source
°æ°í: À̹ø ¸±¸®Áî¿¡¼, ŸÀÔ°ú ¹üÀ§ °Ë»ç¸¦ À§ÇÑ GDB ¸í·É¾îµéÀÌ Ãß°¡µÇ¾ú´Ù ±×·¯³ª ¾ÆÁ÷ ¾î¶² ¿µÇâÀ» °¡ÁöÁö´Â ¾Ê´Â´Ù. ÀÌ ¼½¼ÇÀº ÁöÁ¤µÈ ±â´ÉµéÀ» ¹®¼È Çß´Ù.
¸î¸î ¾ð¾îµéÀº ÄÄÆÄÀÏ-½ÇÇà½Ã°£ °Ë»ç¸¦ ÅëÇØ ÀϹÝÀû ¿¡·¯¸¦ ¸¸µéÁö ¾Êµµ·Ï Çϱâ À§ÇØ °í¾ÈµÇ¾ú´Ù. À̰͵éÀº ÇÔ¼ö¿Í ¿¬»êÀÚ¿¡ ´ëÇÑ ÀÎÀÚ Å¸ÀÔ °Ë»ç¸¦ Æ÷ÇÔÇϸç È®½ÇÇÑ ¼öÇÐÀû ¾î¹öÇÃ·Î¾î °Ë»ç´Â ·±Å¸Àӽà ÇàÇØÁø´Ù. ÀÌ¿Í °°Àº °Ë»çµéÀº ÀÏ´Ü ÇÁ·Î±×·¥ÀÌ ¿Ã¹Ù¸£°Ô µ¹¾Æ°¡´Â°É µµ¿ÍÁÖ¸ç ŸÀÔ ºÒÀÏÄ¡µîÀ» Á¦°ÅÇϸç ÄÄÆÄÀÏ µÇ°í ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ¶§ ¹üÀ§ ¿¡·¯µéÀ» °Ë»çÇÑ´Ù.
GDB´Â ¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é À§¿Í °°Àº Á¶°ÇµéÀ» °Ë»çÇÑ´Ù.
ºñ·Ï GDB°¡ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥³» ¹®ÀåµéÀ» °Ë»çÇÏÁö ¾ÊÀ½¿¡µµ ºÒ±¸ÇÏ°í,
print
¸í·É¾î¸¦ ÅëÇÑ Æò°¡¸¦ À§ÇØ GDB·Î Á÷Á¢ µé¾î°¡ Ç¥Çö½ÄÀ»
°Ë»çÇÒ¼ö ÀÖ´Ù.
working languageó·³, GDB´Â ¶ÇÇÑ ÇÁ·Î±×·¥ ¼Ò½º ¾ð¾î ±â¹ÝÀ¸·Î °Ë»çÇÒÁö ¾ÈÇÒÁö¸¦
°áÁ¤ÇÒ¼ö ÀÖ´Ù. Áö¿øµÇ´Â ¾ð¾îÀÇ ±âº» ¼³Á¤À» º¸±â ¿öÇÑ´Ù¸é, Áö¿øµÇ´Â ¾ð¾îµé¼½¼ÇÀ» ÂüÁ¶Çضó.
Modula-2°°Àº ¸î¸î ¾ð¾îµéÀº ¿¬»êÀÚ¿Í ÇÔ¼öµé¿¡ ´ëÇÑ ÀÎÀÚµéÀÌ ¿Ã¹Ù¸¥ ŸÀÔÀÎÁö¸¦ °ÇÏ°Ô °Ë»çÇÏ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì¿¡´Â ¿¡·¯¸¦ ¹ß»ýÇÑ´Ù. ÀÌµé °Ë»çµéÀ» ŸÀÔÀÌ ´Þ¶ó ½ÇÇà½Ã°£ ¹®Á¦¸¦ ¾ß±âÇÏ´Â ¿¡·¯µéÀ» ¸·´Â´Ù. ¿¹¸¦ µé¾î,
1 + 2 => 3 but error--> 1 + 2.3
µÎ¹ø° ¿¹´Â ½ÇÆÐÇÑ´Ù. ¿Ö³ÄÇϸé CARDINAL
1˼ REAL
2.3°ú
ŸÀÔÀÌ È£È¯µÇÁö ¾Ê±â ¶§¹®ÀÌ´Ù.
¿©·¯ºÐÀÌ GDB ¸í·É¾î¿¡¼ »ç¿ëÇÒ Ç¥Çö½ÄÀ» À§ÇØ, ¿©·¯ºÐÀº °Ë»ç¸¦ ±×³É ³Ñ¾î°¡µµ·Ï GDB ŸÀÔ °Ë»çÀÚ¿¡°Ô ¸»ÇÒ¼ö ÀÖ´Ù; ¿¡·¯°°Àº ¾î¶² ºÒÀÏÄ¡¸¦ ó¸®ÇÏ°í Ç¥Çö½ÄÀ» ¹ö¸®±â À§ÇØ; ¶Ç´Â ºÒÀÏÄ¡µÈ ŸÀÔÀÌ ÀϾ¶§ Ç¥Çö½ÄÀº Æò°¡ÇÏ°í °æ°í¸¦ ¾Ë·ÁÁÖ±â À§ÇØ. ¿©·¯ºÐÀÌ À̰͵éÁß ¸¶Áö¸·À» ¼±ÅÃÇÒ¶§, GDB´Â À§ÀÇ µÎ¹ø° ¿¹Ã³·³ Ç¥Çö½ÄÀ» Æò°¡Çϸç, °æ°íµµ ¾Ë·ÁÁØ´Ù.
ºñ·Ï ¿©·¯ºÐÀÌ Å¸ÀÓ °Ë»ç¸¦ ²°´Ù ÇÒÁö¶óµµ, °Å±â¿¡´Â GDB°¡ Ç¥Çö½Ä Æò°¡¸¦ ¸·µµ·ÏÇÏ´Â
µ¥¿¡´Â ŸÀÔ°ú °ü·ÃµÈ ¸î°¡Áö ´Ù¸¥ ÀÌÀ¯°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î, GDB´Â int
¿Í
struct foo
¸¦ Ãß°¡ÇÏ´Â ¹æ¹ýÀ» ¾ËÁö ¸øÇÑ´Ù. ÀÌ·¯ÇÑ Æ¯º°ÇÑ Å¸ÀÔ ¿¡·¯µéÀº
»ç¿ëÇÏ´Â ¾ð¾îµé°ú´Â °ü°è°¡ ¾ø´Ù. ±×¸®°í À§¿¡ ¼³¸íÇÑ °Íµéó·³ Ç¥Çö½Ä¿¡¼ ÀϾÙ.
°¢ ¾ð¾îµéÀº ŸÀÔ¿¡ °üÇØ ¾ö°ÝÇÑ Á¤µµ¸¦ Á¤ÀÇÇÑ´Ù. ¿¹¸¦ µé¾î, Modula-2¿Í C´Â »ê¼úÀû ¿¬»êÀÚ¸¦ À§ÇØ ÀÎÀÚ¸¦ ¿ä±¸ÇÑ´Ù. C¿¡¼, ¿°ÅµÈ ŸÀÔ°ú Æ÷ÀÎÅ͵éÀº ¼ö·Î½á ´Ù½Ã Ç¥ÇöµÇ°í, ±×·¡¼ À̰͵éÀº ¼öÄ¡Àû ¿¬»êÀÚ¸¦ À§ÇØ À¯È¿ÇÑ ÀÎÀÚÀÌ´Ù. ƯÁ¤ ¾ð¾î¿¡ ´ëÇÑ ¼¼ºÎÀû »çÇ×À» À§Çؼ´Â Áö¿øµÇ´Â ¾ð¾îµé ¼½¼ÇÀ» ÂüÁ¶Çضó.
GDB´Â ŸÀÔ °Ë»çÀÚ¸¦ Á¦¾îÇϱâ À§ÇØ Ãß°¡ÀûÀÎ ¸í·É¾î¸¦ Á¦°øÇÑ´Ù:
set check type auto
set check type on
set check type off
set check type warn
show type
¸î¸î ¾ð¾î(Modula-2¿Í °°Àº)´Â, ŸÀÔÀÇ ¹üÀ§¸¦ ÃÊ°úÇÏ¸é ¿¡·¯ÀÌ´Ù; ÀÌ°ÍÀº ½ÇÇà½Ã°£ °Ë»ç¿¡¼ °¿äµÈ´Ù. ±×·± ¹üÀ§ °Ë»ç´Â °è»êÀÌ ¿À¹öÇ÷ξîÇÏÁö ¾Ê°í, ¹è¿ÀÇ ¹üÀ§¸¦ ³Ñ¾î¼± ¹è¿ ¿ä¼Ò¸¦ Á¢±ÙÇÏÁö ¸øÇϵµ·Ï ÇÁ·Î±×·¥À» Á¤È®ÇÏ°Ô ÇØÁØ´Ù.
¿©·¯ºÐÀÌ GDB ¸í··¾î¿¡¼ »ç¿ëÇϴ ǥÇö½Ä¿¡¼, ¿©·¯ºÐÀº GDB°¡ ¼¼°¡Áö Áß Çϳª·Î ¹üÀ§ ¿¡·¯¸¦ ´ëÇϵµ·Ï ÇÒ¼ö ÀÖ´Ù: ¹«½ÃÇϰųª, Ç×»ó ¿¡·¯·Î½á ´ëÇÏ°í Ç¥Çö½Ä¿¡¼ ÁßÁöÇϰųª °æ°í¸¦ º¸¿©ÁÖ°í Ç¥Çö½ÄÀ» Æò°¡Çϵµ·Ï.
¹üÀ§ ¿¡·¯´Â ¼öÄ¡Àû ¿À¹öÇ÷ξ ¹è¿ ÀÎÅؽº °æ°è¸¦ ³Ñ¾î¼³ °æ¿ì, ¿©·¯ºÐÀÌ ¾î¶² ŸÀÔÀÇ ¸â¹ö°¡ ¾Æ´Ñ »ó¼ö¸¦ ŸÀÔÇÒ¶§ ³ª¿Â´Ù. ±×·¯³ª, ¸î¸î ¾ð¾îµéÀº ¿¡·¯·Î½á ¿À¹öÇ÷ξ ´Ù·çÁö ¾Ê´Â´Ù. C¿¡¼, ¼öÄ¡Àû ¿À¹ö Ç÷ξî´Â "wrap around" °á°ú¸¦ ¾ß±âÇÑ´Ù.--¿¹¸¦ µé¾î, ¸¸ÀÏ m°¡ Á¤¼ö °ªº¸´Ù Å©°í, s´Â ÀÛ´Ù¸é, ±×·¯¸é
m + 1 => s
ÀÌ°ÍÀº ¶ÇÇÑ °¢°¢ÀÇ ¾ð¾î¿¡ ÀÇÁ¸ÇÏ¸ç ¸î¸î °æ¿ì´Â ÄÄÆÄÀÏ·¯³ª ¸Ó½Å¿¡ ÀÇÁ¸ÀûÀÌ´Ù. ƯÁ¤ ¾ð¾î¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×À» º¸°íÀÚ Çϸé Áö¿øµÇ´Â ¾ð¾îµé¼½¼ÇÀ» ÂüÁ¶Çضó.
GDB´Â ¹üÀ§ °Ë»çÀÚ¸¦ Á¦¾îÇϱâ À§ÇØ Ãß°¡ÀûÀÎ ¸í·É¾î¸¦ Á¦°øÇÑ´Ù:
set check range auto
set check range on
set check range off
set check range warn
show range
GDB 4´Â C, C++ ±×¸®°í Modula-2¸¦ Áö¿øÇÑ´Ù.
¸î¸î GDB Ư¡µéÀº »ç¿ëÇÏ´Â ¾ð¾î¿¡ °ü°è¾øÀÌ Ç¥Çö½Ä¿¡¼ »ç¿ëµÉ¼ö ÀÖ´Ù.: GDB @
°ú ::
¿¬»êÀÚ, ±×¸®°í `{type}addr' »ý¼ºÀÚ´Â(Ç¥Çö½Ä ¼½¼ÇÀ» ÂüÁ¶Çضó.)
Áö¿øµÇ´Â ¾ð¾îÀÇ »ý¼ºÀÚ¿Í ÇÔ²² »ç¿ëµÉ¼ö ÀÖ´Ù.
´ÙÀ½ ¼½¼ÇµéÀº GDB°¡ Áö¿øÇÏ´Â °¢ ¼Ò½º ¾ð¾îµé¿¡ ´ëÇÑ »ó¼¼ÇÑ ³»¿ëÀÌ´Ù. ÀÌµé ¼½¼ÇÀº ¾ð¾î ¸Å´º¾óÀº ¾Æ´ÏÁö¸¸, GDB Ç¥Çö½Ä Æļ°¡ ¼ö¿ëÇÏ´Â °ÍÀ» ¾Ë·ÁÁÖ´Â ·¹ÆÛ·±½º °°Àº °ÍÀÌ´Ù. ±×¸®°í ÀÔÃâ·Â Æ÷¸ËÀº ´Ù¸¥ ¾ð¾îµé ó·³ º¸¿©¾ß ÇÑ´Ù. °¢ ¾ð¾î¸¦ À§ÇØ ¾²¿©Áø ÁÁÀº Ã¥µéÀÌ ¸¹ÀÌ ÀÖ´Ù; ¾ð¾î ¸Å´º¾óÀ» À§Çؼ À̰͵éÀ» ÂüÁ¶Çضó.
C¿Í C++Àº ¸Å¿ì °ü°è°¡ ¸¹±â ¶§¹®¿¡, GDBÀÇ ¸¹Àº Ư¡µéÀÌ µÎ ¾ð¾î¿¡ Àû¿ëµÈ´Ù. ÇØ´ç °æ¿ì¿¡, ¿ì¸®´Â µÎ ¾ð¾î¸¦ ÇÔ²² ³íÀÇÇÒ °ÍÀÌ´Ù.
C++ µð¹ö±ë ±â´ÉÀº GNU C++ ÄÄÆÄÀÏ·¯¿Í GDB¿¡ ÀÇÇØ ¼öÇàµÈ´Ù.
±×·¯¹Ç·Î, È¿°úÀûÀ¸·Î C++Äڵ带 µð¹ö±ëÇϱâ À§ÇØ, ¿©·¯ºÐÀº GNU C++ ÄÄÆÄÀÏ·¯ g++
·Î C++ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÇØ¾ß ÇÑ´Ù.
C++ ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ¶§, stab µð¹ö±ë Æ÷¸ËÀ» »ç¿ëÇضó. ¿©·¯ºÐÀº g++
¸í·É¾î ¿É¼Ç `-gstabs'³ª `-gstabs+'¸¦ »ç¿ëÇÏ¿© Æ÷¸ËÀ»
¼±ÅÃÇÒ¼ö ÀÖ´Ù. ´õ ¸¹Àº Á¤º¸¸¦ À§ÇØ Using GNU CCÀÇ `Options for Debugging Your Program or GNU CC' ¼½¼ÇÀ» ÂüÁ¶Çضó.
¿¬»êÀÚµéÀº ƯÁ¤ ŸÀÔÀÇ °ªÀ¸·Î Á¤ÀǵǾî¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î, +
´Â
±¸Á¶Ã¼°¡ ¾Æ´Ñ ¼ýÀÚ·Î Á¤ÀǵǾî ÀÖ´Ù. ¿¬»êÀÚµéÀº ±×·ìÀÇ Å¸ÀÔÀ¸·Î ÀÚÁÖ Á¤ÀǵǾî ÀÖ´Ù.
C¿Í C++À» À§ÇØ, ´ÙÀ½ Á¤ÀǵéÀÌ ÀÖ´Ù:
int
¸¦ Æ÷ÇÔÇÑ´Ù. ; char
; ±×¸®°í enum
.
float
±×¸®°í double
¸¦ Æ÷ÇÔÇÑ´Ù.
(type*)
°ú °°ÀÌ Á¤ÀǵǾîÀÖ´Â ¸ðµç ŸÀÔÀ» Æ÷ÇÔÇÑ´Ù.
´ÙÀ½ ¿¬»êÀڵ鵵 Áö¿øµÈ´Ù. ¿ì¼±±ÇÀÌ ³ôÀº¼øÀ¸·Î ¸®½ºÆ®µÇ¾î ÀÖ´Ù.
,
=
op=
a op= b
ÇüÅÂÀÇ Ç¥Çö½ÄÀ¸·Î »ç¿ëµÇ¸ç,
a = a op b
°ú °°ÀÌ Çؼ®µÈ´Ù.
op=
¿Í =
´Â ¿ì¼±±ÇÀÌ °°´Ù.
op´Â |
, ^
, &
,
<<
, >>
, +
, -
,
*
, /
, %
Áß ÇϳªÀÌ´Ù.
?:
a ? b : c
´Â ´ÙÀ½°ú °°´Ù:
¸¸ÀÏ a¶ó¸é bÀÌ°í, ±×·¸Áö ¾ÊÀ¸¸é cÀÌ´Ù.
a´Â Á¤¼öÇüÀ̾î¾ß ÇÑ´Ù.
||
&&
|
^
&
==, !=
<, >, <=, >=
<<, >>
@
+, -
*, /, %
++, --
*
++
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
&
++
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
C++À» µð¹ö±ëÇÒ¶§, GDB´Â C++ ¾ð¾îÀÚü¿¡¼ Çã¿ëÇÏ´Â ¹üÀ§ÀÌ»óÀ¸·Î `&'À»
»ç¿ëÇÒ¼ö ÀÖ´Ù.: ¿©·¯ºÐÀº C++ ÂüÁ¶ º¯¼ö(`&ref'·Î ¼±¾ðµÈ)°¡ ÀúÀåµÇ¾î ÀÖ´Â ÁÖ¼Ò¸¦ °Ë»çÇϱâ À§ÇØ `&(&ref)`À» »ç¿ëÇÒ¼ö ÀÖ´Ù.(¶Ç´Â, ¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é, °£´ÜÈ÷ `&&ref')
-
++
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
!
++
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
~
++
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
., ->
struct
°ú union
µ¥ÀÌÅÍ¿¡¼ Á¤ÀǵȴÙ.
[]
a[i]
´Â *(a+i)
ó·³ Á¤ÀǵȴÙ. ->
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
()
->
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
::
struct
, union
, ±×¸®°í class
ŸÀÔ¿¡¼¸¸ Á¤ÀǵȴÙ.
::
::
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
GDB´Â ¿©·¯ºÐÀÌ ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î C¿Í C++»ó¼öµéÀ» ³ªÅ¸³¾¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù.:
long
°ªÀ¸·Î ´ëÇØ¾ß ÇѴٴ°ÍÀ» °¡¸®Å²´Ù.
'
)¿¡ ÀÇÇØ µÑ·¯½Î¿©Á® ÀÖ´Â ´ÜÀÏ ¹®ÀÚ³ª
¼ö--¹®ÀÚ(ASCII °ª)ÀÇ ¼ýÀÚ°ª--ÀÌ´Ù.
ÀοëºÎÈ£¾È¿¡¼, ´ÜÀÏ ¹®ÀÚ´Â ¹®ÀÚ³ª escape sequences¸¦ ³ªÅ¸³»¸ç, ±×°ÍÀº
`\nnn'ÀÇ ÇüÅÂÀ̸ç, nnn´Â ¹®ÀÚÀÇ 8Áø¼ö ¼ø¼°ª(ASCII °ª)À» ³ªÅ¸³½´Ù.; ¶Ç´Â `\x'ÀÇ ÇüÅÂÀ̸ç, `x'´Â ¹Ì¸® Á¤ÀÇµÈ Æ¯º°ÇÑ ¹®ÀÚÀÌ´Ù--¿¹¸¦ µé¾î, newlineÀº `\n'
"
)¿¡ ÀÇÇØ µÑ·¯½Î¿©Á® ÀÖ´Â ¿¬¼ÓµÈ ¹®ÀÚ
»ó¼öµéÀÌ´Ù.
GDB Ç¥Çö½Ä 󸮴 C++Ç¥Çö½ÄÀÇ Áß¿ä ºÎºÐÁýÇÕÀ» Çؼ®Çϱâ À§ÇÑ È®ÀåµÈ ¼öµéÀ» °¡Áö°í ÀÖ´Ù.
°æ°í: ¿©·¯ºÐÀÌ GNU C++ ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀÏ ÇÑ´Ù¸é GDB´Â C++ Äڵ带 µð¹ö±ë ÇÒ¼ö ÀÖ´Ù. °Ô´Ù°¡, C++µð¹ö±ëÀº ½Éº¼ Å×ÀÌºí¿¡ Ãß°¡ÀûÀÎ µð¹ö±ë Á¤º¸¸¦ »ç¿ë ÇÏ¿´´ÂÁö¿¡ ÀÇÁ¸ Çϸç Ưº°ÇÑ Áö¿øÀ» ¿ä±¸ÇÑ´Ù. GDB´Â stab µð¹ö±ë Æ÷¸ËÀ» °¡Áø°Í¸¸ Áö¿øÇÑ´Ù. Ưº°È÷, ¸¸ÀÏ ¿©·¯ºÐÀÇ ÄÄÆÄÀÏ·¯°¡ ½Éº¼ Å×À̺íÀ» À§ÇÑ stab È®ÀåÀ» °¡Áö°í ÀÖ´Â a.out, MIPS ECOFF, RS/6000 XCOF, ¶Ç´Â ELF¸¦ ¸¸µç´Ù¸é, ÀÌµé ±â´ÉÀº ¸ðµÎ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù. (GNU CC·Î, ¿©·¯ºÐÀº stab µð¹ö±ë È®ÀåÀ» À§ÇØ `-gstabs'À» »ç¿ëÇÒ¼ö ÀÖ´Ù.) °´Ã¼ ÄÚµå Æ÷¸ËÀº Ç¥ÁØ COFF ¶Ç´Â ELF¿¡¼ DWARF, ´Ù¸¥ ÇÑÆíÀ¸·Î, GDB¿¡¼ ´ëºÎºÐÀÇ C++ Áö¿øÀº ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù.
count = aml->GetOriginal(x, y)
this
¸¦ Çã¿ëÇÑ´Ù.
::
¸¦ Áö¿øÇÑ´Ù--¿©·¯ºÐÀÇ Ç¥Çö½ÄÀº ÇÁ·Î±×·¥¿¡¼ ÇÏ´Â
Ç¥Çö½Äó·³ »ç¿ëÇÒ¼ö ÀÖ´Ù. ÇϳªÀÇ ¹üÀ§°¡ ´Ù¸¥ °÷¿¡¼ Á¤ÀǵǾú´Ù ÇÒÁö¶óµµ, ¿©·¯ºÐÀº ÇÊ¿äÇÏ´Ù¸é, ¿¹¸¦ µé¾î `scope1::scope2::name' ó·³
¹Ýº¹ÀûÀ¸·Î ::
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
GDB´Â ¶ÇÇÑ C, C++ µð¹ö±ë(ÇÁ·Î±×·¥ º¯¼öµé¼½¼ÇÀ» ÂüÁ¶Çضó.)¿¡¼ ¼Ò½º ÆÄÀÏ¿¡ ´ëÇÑ ÂüÁ¶¿¡ ÀÇÇØ À̸§ ¹üÀ§ ºÐÇظ¦ Çã¿ëÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÚµ¿ÀûÀ¸·Î ŸÀÔ°ú ¹üÀ§ °Ë»ç¸¦ ¼³Á¤Çϵµ·Ï GDB¸¦ Çã¿ëÇÑ´Ù¸é, ÀÛ¾÷ ¾ð¾î°¡
C³ª C++·Î ¹Ù²î¾úÀ»¶§´Â ¾ðÁ¦³ª ±âº»°ªÀ¸·Î off
°¡ µÈ´Ù.
ÀÌ°ÍÀº ¿©·¯ºÐÀ̳ª GDB°¡ ÀÛ¾÷¾ð¾î¸¦ ¼±ÅÃÇÒ¶§¿¡ °ü°è¾øÀÌ ÀϾÙ.
¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÚµ¿ÀûÀ¸·Î ¾ð¾î¸¦ ¼³Á¤Çϵµ·Ï GDB¸¦ Çã¿ëÇÑ´Ù¸é, ±×°ÍÀº `.c', `.C', or `.cc'¸¦ ³¡À̸§À¸·Î °¡Áö°í ÀÖ´Â ¼Ò½º ÆÄÀÏÀ» ÀνÄÇÏ°í, GDB°¡ À̵é ÆÄÀϵé Çϳª¿¡¼ ÄÄÆÄÀÏµÈ Äڵ忡 µé¾î°£´Ù¸é, GDB´Â C³ª C++·Î ÀÛ¾÷ ¾ð¾î¸¦ ¼³Á¤ÇÑ´Ù. ¼¼ºÎÀû »çÇ×À» À§ÇØ GDB·Î ¼Ò½º ¾ð¾î Ãß·ÐÇϱâ.¼½¼ÇÀ» ÂüÁ¶Çضó.
±âº»ÀûÀ¸·Î, GDB°¡ C³ª C++ Ç¥Çö½ÄÀ» ÆĽÌÇÒ¶§, ŸÀÔ °Ë»ç´Â »ç¿ëµÇÁö ¾Ê´Â´Ù. ±×·¯³ª, ¸¸ÀÏ ¿©·¯ºÐÀÌ Å¸ÀÔ °Ë»ç¸¦ ÄÑ ³õ¾Ò´Ù¸é, GDB´Â ´ÙÀ½ÀÇ °æ¿ì µÎ º¯¼öÀÇ Å¸ÀÔÀ» °°Àº °ÍÀ¸·Î °íÇôÇÑ´Ù.
typedef
¸¦ ÅëÇØ °°ÀÌ ¼±¾ðµÇ¾ú´ø ŸÀÔÀ»
°¡Áö°í ÀÖ´Ù.
¸¸ÀÏ ÄÑÁ® ÀÖ´Ù¸é, ¹üÀ§ °Ë»ç´Â ¼öÄ¡Àû ¿¬»êÀÚ·Î ÇàÇØÁø´Ù. º¯¼ö À妽º´Â °Ë»çµÇÁö ¾Ê´Â´Ù. ¿Ö³ÄÇϸé, À妽ºµéÀº ÀÚÁÖ ¹è¿ ÀÚü·Î°¡ ¾Æ´Ñ Æ÷ÀÎÅ͸¦ ÀÎÅؽºÇϱâ À§ÇØ »ç¿ëµÇ±â ¶§¹®ÀÌ´Ù.
set print union
¿Í show print union
¸í·É¾î´Â union
ŸÀÔ¿¡ Àû¿ëµÈ´Ù. `on'·Î ¼³Á¤µÇ¾úÀ»¶§, struct
³ª class
³»ºÎÀÇ ¾î¶² union
¶ÇÇÑ Ãâ·ÂµÈ´Ù.
±×·¸Áö ¾ÊÀ¸¸é, ±×°ÍÀº `{...}'ó·³ ³ªÅ¸³´Ù.
@
¿¬»êÀÚ´Â Æ÷ÀÎÅ͵é°ú ¸Þ¸ð¸® ÇÒ´ç ÇÔ¼ö·Î Çü¼ºµÈ µ¿Àû ¹è¿ÀÇ µð¹ö±ëÀ» µµ¿ÍÁØ´Ù.
Ç¥Çö½Ä ¼½¼ÇÀ» ÂüÁ¶Çضó.
¸î¸î GDB ¸í·É¾îµéÀ» C++¿¡¼ À¯¿ëÇÏ´Ù. ±×¸®°í ¸î¸î ¸í·É¾îµéÀº C++»ç¿ëÀ» À§ÇØ µðÀÚÀ뵂 ¾ú´Ù. Á¤¸®Çϸé:
breakpoint menus
rbreak regex
catch exceptions
info catch
ptype typename
set print demangle
show print demangle
set print asm-demangle
show print asm-demangle
set print object
show print object
set print vtbl
show print vtbl
Overloaded symbol names
symbol(types)
.
¿©·¯ºÐÀº ¶ÇÇÑ ÀÌ¿ëÇÒ¼ö ÀÖ´Â ¼±ÅÃÀ» ¸®½ºÆ® Çϱâ À§Çؼ³ª ¸®½ºÆ®µÈ ŸÀÔÀ» ¸¶Ä¡±â À§ÇØ
GDB ¸í·É¾î-¶óÀÎ ¿Ï¼ºÇüÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.
ÀÌ°Í¿¡ °üÇÑ ¼¼ºÎ»çÇ×À» º¸°íÀÚÇϸé, ¸í·É¾î ¿Ï¼º ¼½¼ÇÀ»
ÂüÁ¶Çضó.
Modula-2¸¦ Áö¿øÇϱâ À§ÇØ GDB¸¦ ¸¸µé±â À§ÇÑ È®ÀåµéÀº GNU Modula-2 ÄÄÆÄÀÏ·¯(ÇöÀçµµ °³¹ßÁß)¿¡¼ ³ª¿Ô´Ù. ´Ù¸¥ Modula-2 ÄÄÆÄÀÏ·¯µéÀº ÇöÀç Áö¿øµÇÁö ¾ÊÀ¸¸ç, ±×°Íµé¿¡ ÀÇÇØ ¸¸µé¾îÁø ½ÇÇà ÆÄÀϵéÀ» µð¹ö±ëÇϱâ À§ÇÑ ½Ãµµ´Â GDB°¡ ½ÇÇà ½Éº¼ Å×À̺íÀ» ÀÐÀº °Íó·³ ´ëºÎºÐ ¿¡·¯¸¦ ÁØ´Ù.
¿¬»êÀڴ ƯÁ¤ ŸÀÔÀÇ °ªÀ¸·Î Á¤ÀǵǾî¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î, +
´Â
¼ýÀÚ¿¡¼ Á¤ÀǵÇÁö¸¸ ±¸Á¶Ã¼¿¡¼´Â ¾Æ´Ï´Ù. ¿¬»êÀÚµéÀº ÀÚÁÖ ±×·ì ŸÀÔÀ¸·Î Á¤ÀǵȴÙ.
Modula-2ÀÇ ¸ñÀûÀ» À§ÇØ, ´ÙÀ½ Á¤ÀǵéÀÌ ÀÖ´Ù:
INTEGER
, CARDINAL
, ±×¸®°í
ÇÏÀ§ ¹üÀ§·Î ÀÌ·ç¾îÁø´Ù.
CHAR
±×¸®°í ÇÏÀ§ ¹üÀ§·Î ÀÌ·ç¾îÁø´Ù.
REAL
·Î ÀÌ·ç¾îÁø´Ù.
POINTER TO type
°ú °°ÀÌ ¼±¾ðµÈ °ÍÀ¸·Î ÀÌ·ç¾îÁø´Ù.
SET
±×¸®°í BITSET
ŸÀÔÀ¸·Î
ÀÌ·ç¾îÁø´Ù.
BOOLEAN
ŸÀÔÀ¸·Î ÀÌ·ç¾îÁø´Ù.
´ÙÀ½ ¿¬»êÀڵ鵵 Áö¿øµÇ¸ç Áõ°¡ÇÏ´Â ¿ì¼±±ÇÀ¸·Î ³ªÅ¸³´Ù.:
,
:=
:=
valueÀÇ °ªÀº valueÀÌ´Ù.
<, >
<=, >=
<
¿Í ¿¬»ê¼øÀ§°¡ °°´Ù.
=, <>, #
<
°ú ¿¬»ê¼øÀ§°¡ °°´Ù. GDB ½ºÅ©¸³Æ®¿¡¼, ´ÜÁö <>
¸¸
ºÎµîÀ» À§ÇØ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù. ¿Ö³ÄÇϸé #
´Â ½ºÅ©¸³Æ®ÀÇ ÁÖ¼®°ú Ãæµ¹Çϱ⠶§¹®ÀÌ´Ù.
IN
<
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
OR
AND, &
@
+, -
*
/
*
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
DIV, MOD
*
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
-
INTEGER
°ú REAL
µ¥ÀÌÅÍ¿¡¼ Á¤ÀǵȴÙ.
^
NOT
^
°ú ¿¬»ê¼øÀ§°¡ °°´Ù.
.
RECORD
ÇÊµå ¼±ÅÃÀÚ. RECORD
µ¥ÀÌÅÍ¿¡¼ Á¤ÀǵȴÙ.
^
°ú ¿ì¼±¼øÀ§°¡ °°´Ù.
[]
ARRAY
µ¥ÀÌÅÍ¿¡¼ Á¤ÀǵȴÙ. ^
°ú ¿¬»ê¼øÀ§°¡
°°´Ù.
()
PROCEDURE
°´Ã¼¿¡¼ Á¤ÀǵȴÙ. ^
°ú
¿¬»ê¼øÀ§°¡ °°´Ù.
::, .
°æ°í: Sets and their operations are not yet supported, so GDB treats the use of the operator
IN
, or the use of operators+
,-
,*
,/
,=
, ,<>
,#
,<=
, and>=
on sets as an error.
Modula-2´Â ¸î¸î ³»Àå ÇÁ·Î½ÃÁ®¿Í ÇÔ¼ö¸¦ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù. ÀÌ°É ±â¼úÇÒ¶§, ´ÙÀ½ ¸ÞŸ º¯¼öµéÀÌ »ç¿ëµÈ´Ù.
ARRAY
º¯¼ö¸¦ ³ªÅ¸³½´Ù.
CHAR
»ó¼ö³ª º¯¼ö¸¦ ³ªÅ¸³½´Ù.
SET OF mtype
À̾î¾ß ÇÑ´Ù.
(mtype´Â ŸÀÔ mÀÌ´Ù.)
¸ðµç Modula-2 ³»Àå ÇÁ·Î½ÃÁ®´Â ´ÙÀ½¿¡ ¼³¸íÇÏ´Â °Íó·³ °á°ú¸¦ ¸®ÅÏÇÑ´Ù.
ABS(n)
CAP(c)
CHR(i)
DEC(v)
DEC(v,i)
EXCL(m,s)
FLOAT(i)
HIGH(a)
INC(v)
INC(v,i)
INCL(m,s)
MAX(t)
MIN(t)
ODD(i)
ORD(x)
SIZE(x)
TRUNC(r)
VAL(t,i)
°æ°í: ÁýÇÕ°ú ±×°ÍµéÀÇ ¿¬»êÀº ¾ÆÁ÷ Áö¿øµÇÁö ¾Ê´Â´Ù. ±×·¡¼ GDB´Â ÇÁ·Î½ÃÁ®
INCL
°úEXCL
ÀÇ »ç¿ëÀ» ¿¡·¯·Î½á ´ëÇÑ´Ù.
GDB´Â ´ÙÀ½ ¹æ¹ýÀ¸·Î Modula-2ÀÇ »ó¼öµéÀ» Ç¥ÇöÇϵµ·Ï ¿©·¯ºÐ¿¡°Ô Çã¿ëÇÑ´Ù.:
'
)³ª ´õºÒ ("
) Àο뱸ÀÇ ÀÇÇØ ´ÝÇôÁø ´ÜÀÏ
¹®ÀÚ·Î ÀÌ·ç¾îÁø´Ù.
±×µéÀº ¼ø¼ °ª¿¡ ÀÇÇØ Ç¥ÇöµÇ¸ç(ASCII °ª), `C'°¡ µÚµû¸¥´Ù.
'
)³ª ´õºí ("
) Àο뱸°°Àº
½Ö¿¡ ÀÇÇØ ´ÝÇôÁø ¿¬¼ÓµÈ ¹®ÀÚµé·Î ÀÌ·ç¾îÁø´Ù.
C ½ºÅ¸ÀÏÀÇ À̽ºÄÉÀÌÇÁ ¼ø¼ ¶ÇÇÑ Çã¿ëµÈ´Ù. À̽ºÄÉÀÌÇÁ ¼ø¼¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» ¿øÇϸé
C ±×¸®°í C++ »ó¼öµé ¼½¼ÇÀ» ÂüÁ¶Çضó.
TRUE
±×¸®°í FALSE
·Î ÀÌ·ç¾îÁø´Ù.
ŸÀÔ°ú ¹üÀ§ °Ë»ç¸¦ ÀÚµ¿ÀûÀ¸·Î GDB¿¡ ÀÇÇØ ¼³Á¤µÈ´Ù¸é, ÀÛ¾÷ ¾ð¾î°¡ Modula-2·Î ¹Ù²ð¶§´Â
¾ðÁ¦³ª ±âº»ÀûÀ¸·Î on
°¡ µÈ´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀ̳ª GDB°¡ ¼±ÅÃµÈ ÀÛ¾÷ ¾ð¾î¿¡
°ü°è¾øÀÌ ÀϾÙ.
¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÚµ¿ÀûÀ¸·Î ¾ð¾î¸¦ ¼³Á¤Çϵµ·Ï GDB¸¦ Çã¿ëÇÑ´Ù¸é, `.mod' ¶ó´Â À̸§ÀÇ ÀÛ¾÷ ¾ð¾î¸¦ Modula-2·Î ¼³Á¤Çϱâ À§ÇØ ÆÄÀÏ¿¡¼ ÄÄÆÄÀÏµÈ ÄÚµå·Î µé¾î°£´Ù. GDB·Î ¼Ò½º ¾ð¾î ÃßÁ¤Çϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
¸î¸î º¯È´Â µð¹ö±ë Çϱ⠽±µµ·Ï Modula-2 ÇÁ·Î±×·¥À» ¸¸µé±â À§ÇØ ¸¸µé¾ú´Ù. ÀÌ°ÍÀº ŸÀÔ ¾ö°ÝÇÔÀ» ´úÇϵµ·Ï ÇÑ´Ù.:
:=
)´Â ¿À¸¥ÂÊ ÀÎÀÚÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù.
°æ°í: À̹ø ¸±¸®Áî¿¡¼, GDB´Â ¾ÆÁ÷ ŸÀÔÀ̳ª ¹üÀ§ °Ë»ç¸¦ ÇÏÁö ¾Ê´Â´Ù.
GDB´Â ´ÙÀ½ Á¶°Ç¿¡¼ µÎ Modula-2 º¯¼ö ŸÀÔÀ» °°Àº°ÍÀ¸·Î °í·ÁÇÑ´Ù.:
TYPEt1 = t2
¹®ÀåÀ¸·Î °°°Ô ¼±¾ðµÈ ŸÀÔÀÌ´Ù.
ŸÀÔ °Ë»ç°¡ enableµÈ »óȲÀ̶ó¸é, ŸÀÔÀÌ °°Áö ¾Ê´Â º¯¼öµéÀ» ÇÕÄ¡´Â ½Ãµµ´Â ¿¡·¯ÀÌ´Ù.
¹üÀ§ °Ë»ç´Â ¸ðµç ¼öÄ¡Àû ¿¬»ê, ´ëÀÔ, ¹è¿ À妽º ¹Ù¿îµå, ±×¸®°í ¸ðµç ³»Àå ÇÔ¼ö¿Í ÇÁ·Î½ÃÁ®¿¡¼ ÇàÇØÁø´Ù.
::
±×¸®°í .
Modula-2 ¹üÀ§ ¿¬»êÀÚ(.
)¿Í GDB ¹üÀ§ ¿¬»êÀÚ(::
) »çÀÌ¿¡´Â
¾à°£ÀÇ ¹Ì¹¦ÇÑ Â÷ÀÌ°¡ ÀÖ´Ù. ¹®¹ýÀº ºñ½ÁÇÏ´Ù:
module . id scope :: id
scope´Â ¸ðµâÀ̳ª ÇÁ·Î½ÃÁ®ÀÇ À̸§ÀÌ°í, module´Â ¸ðµâÀÇ À̸§ÀÌ°í id´Â ´Ù¸¥ ¸ðµâÀ» Á¦¿ÜÇÏ°í ÇÁ·Î±×·¥ ³» ¼±¾ðµÈ ½Äº°ÀÚÀÌ´Ù.
::
¿¬»êÀÚ´Â ½Äº°ÀÚ id¸¦ À§ÇØ scope¿¡ ÀÇÇØ
ÁöÁ¤µÈ ¹üÀ§¸¦ ãµµ·Ï GDB¸¦ ¸¸µç´Ù.
¸¸ÀÏ ÁöÁ¤µÈ ¹üÀ§¿¡¼ ¹ß°ßµÇÁö ¾Ê´Â´Ù¸é, GDB´Â scope¿¡ ÀÇÇØ ÁöÁ¤µÈ °ÍÀ»
Çϳª ´Ý°í ¸ðµç ¹üÀ§¸¦ ã´Â´Ù.
module°¡ ÁöÁ¤ÇÑ Á¤ÀÇ ¸ðµâ¿¡¼ Æ÷ÇÔµÈ id¿¡
ÀÇÇØ ÁöÁ¤µÈ ½Äº°ÀÚ¸¦ À§ÇØ .
¿¬»êÀÚ´Â GDB°¡ ÇöÀç ¹üÀ§¸¦ °Ë»çÇϵµ·Ï ¸¸µç´Ù.
ÀÌ ¿¬»êÀÚ¿¡¼, ¸¸ÀÏ ½Äº°ÀÚ id°¡ Á¤ÀÇµÈ ¸ðµâ module¿¡ Æ÷ÇÔµÇÁö
¾Ê°Å³ª id°¡ module¿¡¼ ½Äº°ÀÚ°¡ ¾Æ´Ï¶ó¸é ¿¡·¯ÀÌ´Ù.
¸î¸î GDB ¸í·É¾îµéÀº Modula-2 ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ¶§ °ÅÀÇ »ç¿ëµÇÁö ¾Ê´Â´Ù.
set print
¿Í show print
ÀÇ ´Ù¼¸ ÇÏÀ§ ¸í·É¾î´Â
ƯÈ÷ C¿Í C++À» À§ÇØ Àû¿ëµÈ´Ù: `vtbl', `demangle',
`asm-demangle', `object', and `union'
óÀ½ 4°³´Â C++¿¡ Àû¿ëµÇ¸ç ¸¶Áö¸·Àº C union
ŸÀÔ¿¡ Àû¿ëµÇ¸ç Modula-2¿¡¼´Â
Á÷Á¢ À¯»çÇÑ °ÍÀº ¾ø´Ù.
´Ù¸¥ ¾ð¾î¸¦ »ç¿ëÇÏ´Â µ¿¾È ÀÌ¿ëÇÒ¼ö ÀÖ´Â ¹Ý¸é @
¿¬»êÀÚ(Ç¥Çö½Ä ¼½¼ÇÀ» ÂüÁ¶Çضó)´Â Modula-2¿¡¼´Â À¯¿ëÇÏÁö ¾Ê´Ù.
ÀÌ°ÍÀº C¿Í C++¿¡¼´Â ÇÒ¼ö ÀÖÁö¸¸ Modula-2¿¡¼´Â ¸¸µé¼ö ¾ø´Â dynamic arraysÀÇ µð¹ö±ëÀ» ÇÇÇϱâ À§ÇÑ ÀǵµÀÌ´Ù.
±×·¯³ª, ÁÖ¼Ò°¡ Á¤¼öÇü »ó¼ö¿¡ ÀÇÇØ ÁöÁ¤µÉ¼ö Àֱ⠶§¹®¿¡, »ý¼ºÀÚ `{type}adrexp'´Â ¿©ÀüÈ÷ À¯¿ëÇÏ´Ù.
(Ç¥Çö½Ä ¼½¼ÇÀ» ÂüÁ¶Çضó.)
GDB ½ºÅ©¸³Æ®¿¡¼, Modula-2 ºñµîÈ£ ¿¬»êÀÚ #
´Â ÁÖ¼®ÀÉ ½ÃÀÛÀ¸·Î½á Çؼ®µÈ´Ù.
´ë½Å¿¡ <>
¸¦ »ç¿ëÇضó.
ÀÌ ¼½¼Ç¿¡¼ ±â¼úÇÑ ¸í·É¾îµéÀº ÇÁ·Î±×·¥¿¡ Á¤ÀÇµÈ ½Éº¼(º¯¼ö À̸§, ÇÔ¼ö ±×¸®°í ŸÀÔ) ¿¡ °üÇÑ °ÍÀ» ¹°¾î º¼¼öÀÖµµ·Ï Çã¿ëÇÑ´Ù. ÀÌ Á¤º¸´Â ÇÁ·Î±×·¥ÀÇ ÅؽºÆ®·Î ÀÖÀ¸¸ç ÇÁ·Î±×·¥ ½ÇÇàÁß ¹Ù²îÁö ¾Ê´Â´Ù. GDB´Â ¿©·¯ºÐÀÌ GDB¸¦ ½ÃÀÛÇÒ¶§(ÆÄÀÏ ¼±ÅÃÇϱ⼽¼ÇÀ» ÂüÁ¶ Çضó) °¡¸®Å°´Â ÆÄÀÏÀ̳ª, ¶Ç´Â ÆÄÀÏ-°ü¸® ¸í·É¾îµé(ÆÄÀϵéÀ» ÁöÁ¤Çϱâ À§ÇÑ ¸í·É¾îµé¼½¼ÇÀ» ÂüÁ¶Çضó) Áß Çϳª·Î ÀÌ Á¤º¸¸¦ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÇ ½Éº¼ Å×ÀÌºí ¾È¿¡¼ ¹ß°ßÇÑ´Ù.
°¡²û, ¿©·¯ºÐÀº ÀÌ»óÇÑ ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ´Â ½Éº¼À» ÂüÁ¶ÇÒ ÇÊ¿ä°¡ ÀÖÀ¸¸ç, GDB´Â º¸Åë ´Ü¾î ±¸ºÐÀڷνá ó¸®ÇÑ´Ù. °¡Àå ÀÚÁÖ ÀÖ´Â °æ¿ì°¡ ´Ù¸¥ ¼Ò½º ÆÄÀÏ(ÇÁ·Î±×·¥ º¯¼öµé¼½¼ÇÀ» ÂüÁ¶Çضó)ÀÇ Á¤Àû º¯¼ö¸¦ ÂüÁ¶ÇÒ¶§ÀÌ´Ù. ÆÄÀÏ À̸§µéÀº µð¹ö±ë ½Éº¼Ã³·³ °´Ã¼ ÆÄÀÏ·Î ±â·ÏµÇÁö¸¸, GDB´Â º¸Åë 3°³ÀÇ ´Ü¾î `foo' `.' `c'ó·³ `foo.c'¸¦ ÀüÇüÀûÀÎ ÆÄÀÏ À̸§À» ÆĽÌÇÑ´Ù. GDB°¡ ´ÜÀÏ ½Éº¼·Î½á `foo.c'¸¦ ÀνÄÇϵµ·Ï Çϱâ À§ÇØ, ´ÜÀÏ ÀοëºÎÈ£·Î ¹¾î¶ó; ¿¹¸¦ µé¾î,
p 'foo.c'::x
ÀÌ°ÍÀº `foo.c'ÆÄÀÏÀÇ ¹üÀ§³»¿¡ ÀÕ´Â x
ÀÇ °ªÀ» º¸±â À§ÇؼÀÌ´Ù.
info address symbol
whatis exp
whatis
$
ÀÇ µ¥ÀÌÅÍ ÇüÀ» Ãâ·ÂÇÑ´Ù.
ptype typename
ptype exp
ptype
ptype
´Â ŸÀÔÀÇ À̸§ ´ë½Å¿¡ ¼¼ºÎÀû Ư¡À» Ãâ·ÂÇÔÀ¸·Î½á whatis
¿Í´Â ´Ù¸£´Ù.
¿¹¸¦ µé¾î, º¯¼ö ¼±¾ð¿¡¼:
struct complex {double real; double imag;} v;µÎ°³ÀÇ ¸í·É¾î°¡ ´ÙÀ½ Ãâ·ÂÀ»:
(gdb) whatis v type = struct complex (gdb) ptype v type = struct complex { double real; double imag; }
whatis
ó·³, °ª È÷½ºÆ®·Î³» ¸¶Áö¸· º¯¼ö $
ÀÇ Å¸ÀÔÀ» °¡¸®Å°´Â º¯¼ö ¾øÀÌ ptype
À» »ç¿ëÇضó.
info types regexp
info types
value
¸¦ Æ÷ÇÔÇÏ´Â À̸§ÀÇ ÇÁ·Î±×·¥³» ¸ðµç ŸÀÔ¿¡ °üÇÑ
Á¤º¸¸¦ ÁØ´Ù. ±×·¯³ª `i type ^value$'´Â ¿ÏÀüÇÑ À̸§ÀÌ value
ÀΠŸÀÔ¿¡ °üÇÑ Á¤º¸¸¸ ÁØ´Ù.
ÀÌ ¸í·É¾î´Â µÎ°¡Áö¸é¿¡¼ ptype
¿Í ´Ù¸£´Ù: ù°, whatis
ó·³ ±×°ÍÀº ¼¼ºÎÀûÀÎ »çÇ×Àº Ãâ·ÂÇÏÁö ¾Ê´Â´Ù; µÑ°, ±×°ÍÀº ŸÀÔÀÌ Á¤ÀÇµÈ ¸ðµç
¼Ò½º ÆÄÀÏÀ» ³ª¿ÇÑ´Ù.
info source
info sources
info functions
info functions regexp
step
¸¦ Æ÷ÇÔÇÏ´Â À̸§ÀÇ ¸ðµç ¤¾»ï¼ö¸¦ ¹ß°ßÇÑ´Ù.; `info fun ^step'´Â step
·Î ½ÃÀÛÇÏ´Â À̸§ÀÇ ¸ðµç°ÍÀ» ¹ß°ßÇÑ´Ù.
info variables
info variables regexp
set symbol-reloading on
set symbol-reloading off
symbol-reloading
¸¦ off·Î ³õ¾Æ¾ß ÇÑ´Ù.
±×·¸Áö ¾ÊÀ¸¸é GDB´Â °°Àº À̸§À» °¡Áö´Â ¸î¸î ¸ðµâ(´Ù¸¥ µð·ºÅ丮³ª ¶óÀ̺귯¸®)À» Æ÷ÇÔÇÏ´Â Ä¿´Ù¶õ ÇÁ·Î±×·¥À» ¸µÅ©ÇÒ¶§ ½Éº¼µéÀ» ¹ö¸®±â¶§¹®ÀÌ´Ù.
show symbol-reloading
on
³ª off
¼³Á¤À» º¸¿©ÁØ´Ù.
maint print symbols filename
maint print psymbols filename
maint print msymbols filename
info sources
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ´ë½Å¿¡ `maint print psymbols'¸¦ »ç¿ëÇÑ´Ù¸é,
´ýÇÁ´Â GDB°¡ ºÎºÐÀûÀ¸·Î ¾Ë°í ÀÖ´Â ½Éº¼¿¡ °üÇÑ Á¤º¸¸¦ º¸¿©ÁØ´Ù.--Áï, GDB°¡ ´ëÃæ
ÈȾî ÀÐÀº ÆÄÀϵ鿡 Á¤ÀÇµÈ ½Éº¼µé¸¸, ±×·¯³ª ¿ÏÀüÈ÷ ÀÐÁö ¾ÊÀº °ÍÀº Á¦¿ÜÇÏ°í.
¸¶Ä§³», `maint print msymbols'´Â GDB°¡ ¸î¸î ½Éº¼µéÀ» ÀÐÀº °¢ °´Ã¼ ÆÄÀÏÀ» ¿ä±¸Çϱâ À§ÇØ ÃÖ¼Ò ½Éº¼ Á¤º¸¸¦ ´ýÇÁÇÑ´Ù.
GDB°¡ ½Éº¼(symbol-file
¿¡¼ ±â¼ú)µéÀ» Àд ¹æ¹ýÀ» À§Çؼ, ÆÄÀÏÀ» ÁöÁ¤Çϱâ À§ÇÑ ¸í·É¾îµé ¼½¼ÇÀ» ÂüÁ¶Çضó.
ÀÏ´Ü ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥¿¡¼ ¿¡·¯¸¦ ¹ß°ßÇß´Ù°í »ý°¢Çϸé, ¿©·¯ºÐÀº ½ÇÇàÀÇ ³ª¸ÓÁö¿¡¼ Á¤È®ÇÑ °á°ú¸¦ ¾ò±â À§ÇØ ¸íÈ®È÷ ¿¡·¯¸¦ ¼öÁ¤ÇÏ´Â °ÍÀ» ¿øÇÒ°ÍÀÌ´Ù. ¿©·¯ºÐÀº ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ¹Ù²Ù±â À§ÇØ GDBÀÇ Æ¯Â¡À» »ç¿ëÇÏ¿©, ½ÇÇè¿¡ ÀÇÇØ ´äÀ» ¹ß°ßÇÒ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î, ¿©·¯ºÐÀº »õ·Î¿î °ªÀ» º¯¼ö³ª ¸Þ¸ð¸® À§Ä¡¿¡ ÀúÀåÇÒ¼ö ÀÖ´Ù. ¶Ç, ÇÁ·Î±×·¥¿¡ ½Ã±×³ÎÀ» ÁÙ¼ö ÀÖ°í, ´Ù¸¥ ÁÖ¼Ò¿¡¼ ´Ù½Ã ½ÃÀÛÇϰųª ½ÉÁö¾î ÇÔ¼ö¿¡¼ ¹ÝȯÇÒ¼öµµ ÀÖ´Ù.
º¯¼öÀÇ °ªÀ» ¼öÁ¤Çϱâ À§ÇØ, ´ëÀÔ Ç¥Çö½ÄÀ» Æò°¡ÇÑ´Ù. Ç¥Çö½Ä¼½¼ÇÀ» ÂüÁ¶Çضó. ¿¹¸¦ µé¾î,
print x=4
°ª 4¸¦ º¯¼ö x
¿¡ ÀúÀåÇÏ°í, ´ëÀÔ Ç¥Çö½ÄÀÇ °ªÀ» Ãâ·ÂÇÑ´Ù.
Áö¿øµÇ´Â ¾ð¾î¿¡¼ ¿¬»êÀÚ¿¡ °üÇÑ Á¤º¸¸¦ ´õ ¿øÇϸé, ´Ù¸¥ ¾ð¾î¿¡¼ GDB »ç¿ëÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
¿©·¯ºÐÀÌ ´ëÀÔ °ª º¸´Â°Í¿¡ Èï¹Ì°¡ ¾ø´Ù¸é, print
´ë½Å¿¡ set
¸¦ »ç¿ëÇضó. set
´Â Ç¥Çö½ÄÀÇ °ªÀ» Ãâ·ÂÇÏÁö ¾Ê°í °ª È÷½ºÅ丮(
°ª È÷½ºÅ丮 ¼½¼ÇÀ» ÂüÁ¶Çضó)¿¡ ³õÁö ¾Ê´Â°ÍÀ»
Á¦¿ÜÇÏ°í print
¿Í °°´Ù.
Ç¥Çö½ÄÀº °á°ú¸¦ À§Çؼ¸¸ Æò°¡µÈ´Ù.
¸¸ÀÏ set
¸í·É¾îÀÇ ÀÎÀÚ ½ºÆ®¸µÀÇ ½ÃÀÛÀÌ set
ÇÏÀ§ ¸í·É¾î¿Í
µ¿ÀÏÇÏ°Ô ³ªÅ¸³´Ù¸é, set
´ë½Å¿¡ set variable
¸í·É¾î¸¦ »ç¿ëÇضó.
ÀÌ ¸í·É¾î´Â ÇÏÀ§ ¸í·É¾î°¡ ¾ø´Ù´Â°ÍÀ» Á¦¿ÜÇÏ°í set
¿Í µ¿ÀÏÇÏ´Ù.
¿¹¸¦ µé¾î, ¸¸ÀÏ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ width
º¯¼ö¸¦ °¡Áö°í ÀÖ´Ù¸é,
¿©·¯ºÐÀº `set width=13'·Î »õ °ªÀ» ¼³Á¤ÇÑ´Ù¸é ¿¡·¯°¡ ¹ß»ý¸¦ ¸¸³ª°Ô
µÈ´Ù. ¿Ö³ÄÇϸé, GDB´Â set width
¸í·É¾î¸¦ °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù.:
(gdb) whatis width type = double (gdb) p width $4 = 13 (gdb) set width=47 Invalid syntax in expression.
¹°·Ð ¹«È¿ÇÑ Ç¥Çö½ÄÀº `=47'ÀÌ´Ù.
ÇÁ·Î±×·¥ º¯¼ö width
¸¦ ¼³Á¤Çϱâ À§ÇØ, ´ÙÀ½°ú °°ÀÌ »ç¿ëÇضó.
(gdb) set var width=47
GDB´Â Cº¸´Ù ´ëÀԽà ´õ À¯¿¬ÇÑ º¯È¯À» Çã¿ëÇÑ´Ù.; ¿©·¯ºÐÀº Á¤¼ö °ªÀ» Æ÷ÀÎÅÍ °ªÀ̳ª ¹Ý´ë·Î Çؼ ÀÚÀ¯½º·´°Ô ÀúÀåÇÒ¼ö ÀÖ´Ù. ±×¸®°í ¿©·¯ºÐÀº ¾î¶² ±¸Á¶Ã¼µµ °°Àº ±æÀ̳ª ªÀº ´Ù¸¥ ±¸Á¶Ã¼·Î º¯È¯ÇÒ¼ö ÀÖ´Ù.
°ªÀ» ¸Þ¸ð¸®³» ÀÓÀÇÀÇ °÷¿¡ ÀúÀåÇϱâ À§ÇØ, ÁöÁ¤µÈ ÁÖ¼Ò(Ç¥Çö½Ä¼½¼ÇÀ» ÂüÁ¶Çضó)¿¡ ÁöÁ¤µÈ ŸÀÔÀÇ °ªÀ» ¸¸µé±â
À§ÇÑ »ý¼ºÀÚ `{...}'¸¦ »ç¿ëÇضó.
¿¹¸¦ µé¾î, {int} 0x83040
´Â Á¤¼ö·Î½á ¸Þ¸ð¸® À§Ä¡ 0x83040
¸¦ °¡¸®Å²´Ù.
set {int}0x83040 = 4
ÀÌ°ÍÀº °ª 4¸¦ ¸Þ¸ð¸® À§Ä¡¿¡ ÀúÀåÇÑ´Ù.
º¸Åë, ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» °è¼ÓÇÒ¶§, ¿©·¯ºÐÀº continue
¸í·É¾î¸¦
°¡Áö°í ¸ØÃá À§Ä¡¿¡¼ °è¼Ó ÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀº ´ë½Å¿¡ ´ÙÀ½ ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ¿©·¯ºÐ ÀÚ½ÅÀÌ ¼±ÅÃÇÑ ÁÖ¼Ò¿¡¼ °è¼Ó ÇÒ¼ö ÀÖ´Ù.
jump linespec
jump
¸í·É¾î´Â ÇöÀç ½ºÅà ÇÁ·¹ÀÓÀ̳ª ½ºÅà Æ÷ÀÎÅÍ, ¾î¶² ¸Þ¸ð¸® À§Ä¡ÀÇ
³»¿ë, ÇÁ·Î±×·¥ Ä«¿îÅÍ ¿ÜÀÇ ·¹Áö½ºÅ͵îÀ» ¹Ù²ÙÁö ¾Ê´Â´Ù.
¶óÀÎ linespec°¡ ÇöÀç ½ÇÇà½ÃÁ¡¿¡¼ ´Ù¸¥ ÇÔ¼ö¿¡ ÀÖ´Ù¸é, ¸¸ÀÏ µÎ ÇÔ¼ö°¡ ´Ù¸¥ ÇüÅÂÀÇ ÀÎÀÚ³ª Áö¿ª º¯¼ö¸¦ ¿¹»óÇÑ´Ù¸é °á°ú´Â ¾Ë¼ö ¾ø´Ù.
ÀÌ·± ÀÌÀ¯¶§¹®¿¡, jump
¸í·É¾î´Â ¸¸ÀÏ ÁöÁ¤µÈ ¶óÀÎÀÌ ÇöÀç ½ÇÇàÇÔ¼ö³»¿¡
ÀÖ´ÂÁö ¾ø´ÂÁö È®½ÅÀÌ ¿ä±¸µÈ´Ù. ±×·¯³ª, ¸¸ÀÏ ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥ÀÇ ±â°è¾î Äڵ忡 Àͼ÷ÇÏ´Ù¸é ¿¹ÃøÇÒ¼ö ¾ø´Â °á°ú Á¶Â÷µµ ¿¹ÃøÇÒ¼ö ÀÖ´Ù.
jump *address
¿©·¯ºÐÀº »õ·Î¿î °ªÀ» ·¹Áö½ºÅÍ $pc
¿¡ ÀúÀåÇÏ¿© jump
¿Í
°°Àº È¿°ú¸¦ °¡Áú¼ö ÀÖ´Ù. Â÷ÀÌÁ¡Àº ÀÌ°ÍÀÌ ÇÁ·Î±×·¥ÀÌ µ¹¾Æ°¡´Â ÇÁ·Î±×·¥À» ½ÃÀÛÇÏ
Áö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù; ¿©·¯ºÐÀÌ continueÇÒ¶§ µ¹¾Æ°¥°÷ÀÇ ÁÖ¼Ò¸¸ ¹Ù²Û´Ù.
¿¹¸¦ µé¾î,
set $pc = 0x485
ÀÌ°ÍÀº ÇÁ·Î±×·¥ÀÌ ¸ØÃá ÁÖ¼Òº¸´Ù ´ÙÀ½ continue
·ê ¸¸µé°Å³ª ÁÖ¼Ò 0x485
¿¡¼ ¸í·É¾î ½ÇÇàÀ» steppingÇÏ°Ô ¸¸µç´Ù.
°è¼Ó°ú ´Ü°è ¼½¼ÇÀ» ÂüÁ¶Çضó.
jump
¸í·É¾î¸¦ »ç¿ëÇÏ´Â °¡Àå ÀϹÝÀûÀÎ °æ¿ì´Â ´õ ¼¼ºÎÀûÀ¸·Î ½ÇÇàÀ»
°Ë»çÇϱâ À§ÇØ ÀÌ¹Ì ½ÇÇàµÈ ÇÁ·Î±×·¥ÀÇ ÀϺκÐÀ» µÚ--´õ ¸¹Àº breakpoint¸¦ ¼³Á¤--
·Î °¡´Â°ÍÀÌ´Ù.
signal signal
signal 2
±×¸®°í signal
SIGINT
´Â ÀÎÅÍ·´Æ® ½ÅÈ£¸¦ º¸³»´Â °°Àº ¹æ¹ýÀÌ´Ù.
¼±ÅÃÀûÀ¸·Î, ¸¸ÀÏ signal °¡ 0À̶ó¸é ½ÅÈ£¸¦ ÁÖ´Â°Í ¾øÀÌ ½ÇÇàÀ» °è¼Ó
ÇÑ´Ù.
ÀÌ°ÍÀº ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ ½ÅÈ£·Î ¸ØÃß¾úÀ»¶§ ±×¸®°í
continue
¸í·É¾î·Î ´Ù½Ã ½ÃÀÛÇÒ¶§ ½ÅÈ£¸¦ º¼ °æ¿ì À¯¿ëÇÏ´Ù.;`signal 0' Àº ½ÅÈ£ ¾øÀÌ ´Ù½Ã ½ÃÀÛÇϵµ·Ï ÇÑ´Ù.
signal
´Â ¸í·É¾î ½ÇÇàÈÄ¿¡ µÎ¹ø RET ¸¦ ´©¸¦¶§ ¹Ýº¹ÇÏÁö ¾Ê´Â´Ù.
signal
¸í·É¾î È£ÃâÀº ½©¿¡¼ kill
±â´É°ú °°Áö ¾Ê´Ù.
kill
·Î ½ÅÈ£¸¦ º¸³»´Â°ÍÀº GDB°¡ ½Ã±×³Î Çڵ鸵 Å×ÀÌºí¿¡ ÀÇÁ¸ÇÏ¿©
½ÅÈ£°¡ ÇؾßÇÒ°ÍÀ» °áÁ¤Çϵµ·Ï ¾ß±â ½ÃŲ´Ù.
(½ÅÈ£µé ¼½¼ÇÀ» ÂüÁ¶Çضó).
signal
¸í·É¾î´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡ Á÷Á¢ ½ÅÈ£¸¦ º¸³½´Ù.
return
return expression
return
¸í·É¾î¸¦ °¡Áö°í ÇÔ¼ö È£ÃâÀÇ ½ÇÇàÀ» Ãë¼ÒÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀÌ expression ÀÎÀÚ¸¦ Áشٸé, ÇØ´ç °ªÀº ÇÔ¼öÀÇ ¹Ýȯ°ªÀ¸·Î »ç¿ëµÈ´Ù.
¿©·¯ºÐÀÌ return
¸¦ »ç¿ëÇÑ´Ù¸é, GDB ´Â ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓÀ»
¹ö¸°´Ù(±×¸®°í ÇØ´ç ÇÁ·¹ÀÓ³»¿¡ ÀÖ´Â ¸ðµç ÇÁ·¹ÀÓµé).
¿©·¯ºÐÀº ¹Ì¸® ¹ÝȯµÈ ÇÁ·¹ÀÓÀ» ¹ö¸®µµ·Ï ¸¸µëÀ¸·Î½á ÀÌ°ÍÀ» »ý°¢ÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀÌ ¹ÝȯµÈ °ªÀ» ÁöÁ¤ÇÏ±æ ¿øÇÑ´Ù¸é, return
¿¡ ´ëÇÑ ÀÎÀڷμ
±× °ªÀ» ÁÖ¸éµÈ´Ù.
ÀÌ°ÍÀº ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓ (ÇÁ·¹ÀÓ ¼±ÅÃÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.) À» ÆËÇÏ¸ç ±×°Í ³»ºÎ¿¡ ÀÖ´Â ´Ù¸¥ ÇÁ·¹ÀÓµéÀº °¡Àå ±í¼÷È÷ ³²¾Æ ÀÖ´Â ÇÁ·¹ÀÓÀ¸·Î½á È£Ãâ ÇÔ¼ö¿¡ ³²´Â´Ù. ±× ÇÁ·¹ÀÓÀº ¼±ÅõǾî Áø´Ù. ÁöÁ¤µÈ °ªÀº ÇÔ¼öÀÇ ¹Ýȯ °ªµéÀ» À§ÇØ »ç¿ëµÇ´Â ·¹Áö½ºÅÍ¿¡ ÀúÀåµÈ´Ù.
return
¸í·É¾î´Â ½ÇÇàÀ» ´Ù½Ã ½ÃÀÛÇÏÁö ¾Ê´Â´Ù.; ÀÌ°ÍÀº ÇÔ¼ö°¡ ´ÜÁö ¹ÝȯµÇ¾ú´Ù¸é Á¸ÀçÇÏ´Â »óÅ·ΠÇÁ·Î±×·¥À» ³²±ä´Ù.
´ëÁ¶ÀûÀ¸·Î, finish
¸í·É¾î´Â
(°è¼Ó°ú ´Ü°è ¼½¼ÇÀ» ÂüÁ¶Çضó.)
¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓÀÌ ÀÚ¿¬ÀûÀ¸·Î ¹ÝȯµÉ¶§±îÁö ½ÇÇàÀ» °è¼Ó ÇÑ´Ù.
call expr
void
¹Ýȯ °ªÀ» Ãâ·ÂÇÏ´Â °Í ¾øÀÌ Ç¥Çö½Ä exprÀ» Æò°¡ÇÑ´Ù.
¿©·¯ºÐÀº ¸¸ÀÏ ¿©·¯ºÐÀÌ void
¹Ýȯ°ªÀ» °¡Áö°í Ãâ·ÂÀ» ³ÀâÇÏ°Ô ÇÏÁö ¾Ê°í
ÇÁ·Î±×·¥¿¡¼ ÇÔ¼ö ½ÇÇàÀ» ¿øÇÑ´Ù¸é, print
¸í·É¾îÀÇ º¯Á¾À»
°¡Áö°í ÀÌ°ÍÀ» ÇÒ¼ö ÀÖ´Ù.
¸¸ÀÏ °á°ú°¡ void°¡ ¾Æ´Ï¶ó¸é, Ãâ·ÂµÇ°í °ª È÷½ºÅ丮¿¡ ÀúÀåµÈ´Ù.
»õ·Î¿î »ç¿ëÀÚ-Á¦¾î º¯¼ö, call_scratch_address´Â GDB°¡ Ÿ°Ù¿¡¼ ÇÔ¼ö¸¦ È£Ãâ ÇÒ¶§ »ç¿ëµÇ±â À§ÇÑ ¿µ¿ªÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ°ÍÀº ½ºÅà ¿µ¿ª¿¡ ³õ´Â ÀϹÝÀû ¹æ¹ýÀº ¸í·É¾î¿Í µ¥ÀÌÅÍ °ø°£ÀÌ ±¸ºÐµÈ ½Ã½ºÅÛ¿¡¼´Â ÀÛµ¿ÇÏÁö ¾Ê±â ¶§¹®¿¡ ÇÊ¿äÇÏ´Ù.
±âº»ÀûÀ¸·Î, GDB´Â ÇÁ·Î±×·¥ ½ÇÇà ÄÚµå(¶Ç´Â ÄÚ¾î ÆÄÀÏ)¸¦ Æ÷ÇÔÇÏ´Â ÆÄÀÏÀ» ¿¬´Ù. ÀÌ°ÍÀº ±â°è ÄÚµåÀÇ ¿ì¿¬ÇÑ º¯°æÀ» ¸·´Â´Ù; ±×·¯³ª ÀÌ°ÍÀº ¶ÇÇÑ ÀǵµÀûÀÎ ÇÁ·Î±×·¥ ÀÌÁø ÆÄÀÏ ÆÐÄ¡µµ ¸·´Â´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÌÁø ÆÄÀÏÀ» ÆÐÄ¡ÇÏ±æ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº set write
¸í·É¾î·Î ÇÒ¼ö
ÀÖ´Ù. ¿¹¸¦ µé¾î, ¿©·¯ºÐÀº ³»ºÎ µð¹ö±× Ç÷¡±×³ª ºñ»ó º¹±¸¸¦ ¸¸µé±â¸¦ ¿øÇÒÁöµµ ÀÖ´Ù.
set write on
set write off
set write
¸¦ ¹Ù²Û ÈÄ¿¡, ´Ù½Ã ·ÎµåÇØ¾ß ÇÑ´Ù.(exec-file
³ª
core-file
¸í·É¾î¸¦ »ç¿ëÇÏ¿©)
show write
GDB´Â ½Éº¼ Å×À̺íÀ» Àаí ÇÁ·Î±×·¥À» ½ÃÀÛÇϱâ À§Çؼ µð¹ö±ë µÇ´Â ÇÁ·Î±×·¥ÀÇ À̸§À» ¾Ë ÇÊ¿ä°¡ ÀÖ´Ù. Àü¿¡ µ¹¾Æ°£ ÄÚ¾î ´ýÇÁ¸¦ µð¹ö±ëÇϱâ À§ÇØ, ¿©·¯ºÐÀº GDB¿¡°Ô ÄÚ¾î ´ýÇÁ ÆÄÀÏÀÇ À̸§À» ¸»ÇØ¾ß ÇÑ´Ù.
¿©·¯ºÐÀº ½ÇÇàÆÄÀÏ À̸§°ú ÄÚ¾î ´ýÇÁ ÆÄÀÏ À̸§µéÀ» ÁöÁ¤ÇÏ±æ ¿øÇÒÁöµµ ¸ð¸¥´Ù. ÀÌ°ÍÀ» Çϱâ À§ÇÑ ÀϹÝÀû ¹æ¹ýÀº ½ÃÀ۽ÿ¡ GDBÀÇ ½ÃÀÛ ÀÎÀÚ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. (GDB¿¡ µé¾î°¡°í ³ª°¡±â ¼½¼ÇÀ» ÂüÁ¶Çضó.)
°¡²û GDB ¼¼¼Çµ¿¾È¿¡ ´Ù¸¥ ÆÄÀÏ·Î ¹Ù²Ù´Â°Ô ÇÊ¿äÇÏ´Ù. ¶Ç´Â ¿©·¯ºÐÀº GDB¸¦ µ¹¸®°í »ç¿ëÇÒ ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ´Â°É ÀØÀ»¼öµµ ÀÖ´Ù. ÀÌ·¯ÇÑ »óȲ¿¡¼ »õ·Î¿î ÆÄÀϵéÀ» ÁöÁ¤ÇÏ´Â GDB ¸í·É¾îµéÀº À¯¿ëÇÏ´Ù.
file filename
run
¸í·É¾î¸¦ »ç¿ëÇÒ¶§ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ µð·ºÅ丮¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í GDB ÀÛ¾÷ µð·ºÅ丮¿¡¼ ÆÄÀÏÀÌ ¹ß°ßµÇÁö
¾Ê´Â´Ù¸é, shellÀÌ ÇÁ·Î±×·¥À» µ¹¸±±â À§ÇØ ÇÏ´Â °Íó·³ GDB´Â Ž»öÇϱâ À§ÇÑ µð·ºÅ丮ÀÇ ¸®½ºÆ®·Î½á ȯ°æ º¯¼ö PATH
¸¦ »ç¿ëÇÑ´Ù.
¿©·¯ºÐÀº path
¸í·É¾î¸¦ »ç¿ëÇÏ¿© GDB¿Í ÇÁ·Î±×·¥À» À§ÇØ, ÀÌ º¯¼öÀÇ °ªÀ» ¹Ù²Ü¼ö ÀÖ´Ù.
¸Þ¸ð¸® ´ëÀÀ ÆÄÀϵéÀ» °¡Áø ½Ã½ºÅÛ¿¡¼, º¸Á¶ ÆÄÀÏ `filename.syms'´Â filenameÀÇ ½Éº¼ Å×À̺í Á¤º¸¸¦ °¡Áø´Ù.
¸¸ÀÏ ±×·¸´Ù¸é, GDB´Â ´õ »¡¸® ½ÃÀÛÇÏ·Á°í
`filename.syms'¿¡¼ ½Éº¼ Å×À̺í·Î ´ëÀÀÇÑ´Ù.
ÆÄÀÏ ¿É¼Ç `-mapped' °ú `-readnow'¿¡ ´ëÇÑ ¼³¸íÀ» ÂüÁ¶Çضó.
(¸í·É¾î ¶óÀο¡¼ ÀÌ¿ëÇÒ¼ö ÀÖÀ¸¸ç, ¾Æ·¡¿¡¼ ¼³¸íÇÑ °Íó·³ ¸í·É¾î file
,
symbol-file
, ¶Ç´Â add-symbol-file
¿¡¼ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù.)
file
file
Àº GDB°¡ ½ÇÇà ÆÄÀÏ°ú ½Éº¼ Å×ÀÌºí¿¡ ´ëÇØ °¡Áö°í ÀÖ´Â
°ÍÀ» ¹ö¸®µµ·Ï ¸¸µç´Ù.
exec-file [ filename ]
PATH
¸¦ Ž»öÇÑ´Ù.
filenameÀ» »ý·«ÇÏ´Â °ÍÀº ½ÇÇà ÆÄÀÏ¿¡¼ Á¤º¸¸¦ ¹ö¸°´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
symbol-file [ filename ]
PATH´Â ÇÊ¿äÇÏ´Ù¸é Ž»öÇÑ´Ù. °°Àº ÆÄÀÏ¿¡¼ µ¹¸®±â À§ÇØ ½Éº¼ Å×À̺í°ú
ÇÁ·Î±×·¥À» °¡Áö°í file
¸í·É¾î¸¦ »ç¿ëÇÑ´Ù.
ÀÎÀÚ ¾ø´Â symbol-file
Àº ÇÁ·Î±×·¥ ½Éº¼ Å×À̺íÀÇ GDB Á¤º¸¸¦ ±ú²ýÈ÷ ÇÑ´Ù.
symbol-file
¸í·É¾î´Â GDB°¡ Æí¸® º¯¼ö, °ª È÷½ºÅ丮 ±×¸®°í ¸ðµç breakpoint
±×¸®°í ÀÚµ¿ µð½ºÇ÷¹ÀÌ Ç¥Çö½ÄÀÇ ³»¿ëÀ» Àصµ·Ï ÇÑ´Ù.
±×°ÍµéÀº ³»ºÎ µ¥ÀÌÅÍ ±â·Ï ½Éº¼µé°ú µ¥ÀÌÅÍ Å¸ÀÔ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ Æ÷ÇÔÇϱ⠶§¹®À̸ç,
GDB³» ¹ö·ÁÁ®¾ß ÇÏ´Â ¿¹Àü ½Éº¼ Å×ÀÌºí µ¥ÀÌÅÍÀÇ ÀϺκÐÀÌ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ Çѹø ½ÇÇàÇÑÈÄ ´Ù½Ã RET¸¦ ´©¸¥´Ù¸é, symbol-file
Àº ¹Ýº¹µÇÁö ¾Ê´Â´Ù.
GDB°¡ ƯÁ¤ ȯ°æÀ» À§ÇØ ¼³Á¤µÇ¾úÀ»¶§, GDB´Â ±× ȯ°æ¿¡¼ ¸¸µé¾îÁø Ç¥ÁØ Æ÷¸ËÀÌ ¹«¾ùÀ̵çÁö µð¹ö±ë Á¤º¸¸¦ ÀÌÇØÇÑ´Ù.;¿©·¯ºÐÀº GNU ÄÄÆÄÀÏ·¯³ª ´Ù¸¥ ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÒÁö ¸ð¸¥´Ù.
°¡Àå ÁÁÀº °á°ú´Â GNU ÄÄÆÄÀÏ·¯¿¡¼ ¾ò¾îÁø´Ù.; ¿¹¸¦ µé¾î, gcc
¸¦ »ç¿ëÇϸé,
¿©·¯ºÐÀº ÃÖÀûÈµÈ Äڵ带 À§ÇÑ µð¹ö±ë Á¤º¸¸¦ ¸¸µé¼ö ÀÖ´Ù.
¸î¸î Á¾·ùÀÇ °´Ã¼ ÆÄÀÏ¿¡¼, symbol-file
¸í·É¾î´Â ½Éº¼ Å×À̺íÀ» ÀÐÁö ¾Ê´Â´Ù. ´ë½Å¿¡, ¸í·É¾î´Â ¼Ò½º ÆÄÀÏ°ú Á¸ÀçÇÏ´Â ½Éº¼À» ã±â À§ÇØ ºü¸£°Ô ½Éº¼ Å×À̺íÀ»
°Ë»çÇÑ´Ù. ¼¼ºÎÀûÀÎ °ÍÀº ÃßÈÄ Àд´Ù.
µÎ ´Ü°è ÀбâÀü·«ÀÇ ¸ñÀûÀº ºü¸£°Ô ½ÃÀÛÇϵµ·Ï GDB¸¦ ¸¸µå´Â °ÍÀÌ´Ù. ´ëºÎºÐÀÇ °æ¿ì¸¦ À§ÇØ,
ƯÁ¤ ¼Ò½º ÆÄÀÏÀ» À§ÇÑ ½Éº¼ Å×ÀÌºí ¼¼ºÎ»çÇ×Àº Àд µ¿¾È °¡²û ¸ØÃߴ°ÍÀ» Á¦¿ÜÇÏ°í ´«¿¡
º¸ÀÌÁö ¾Ê´Â´Ù.(set verbose
¸í·É¾î´Â ¿øÇÑ´Ù¸é ÁßÁöµéÀ» ¸Þ¼¼Áö·Î ¹Ù²Ü¼ö ÀÖ´Ù.
°æ°í ¿É¼Ç°ú ¸Þ¼¼Áöµé ¼½¼ÇÀ» ÂüÁ¶Çضó.)
¿ì¸®´Â COFF¿¡¼´Â ¾ÆÁ÷ µÎ ´Ü°è Àü·«À» ¼öÇàÇÏÁö ¾Ê¾Ò´Ù. ½Éº¼ Å×À̺íÀÌ COFFÇü½ÄÀ¸·Î
ÀúÀåµÇ¾úÀ»¶§, symbol-file
´Â ½Éº¼ Å×ÀÌºí µ¥ÀÌÅ͸¦ Àд´Ù.
symbol-file filename [ -readnow ] [ -mapped ]
-
file filename [ -readnow ] [ -mapped ]
-
¸¸ÀÏ ¿©·¯ºÐÀÌ GDB°¡ ÀÌ¿ëÇÒ¼ö ÀÖ´Â Àüü ½Éº¼ Å×À̺íÀ» °¡Áö°í Àִٴ°ÍÀ» È®ÀÎÇÒ±æ
¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº ½Éº¼ Å×À̺í Á¤º¸¸¦ ·ÎµùÇÏ´Â ¸í·É¾î¿¡¼ `-readnow' ¿É¼ÇÀ»
»ç¿ëÇÏ¿© ½Éº¼ Å×À̺íÀ» Àбâ À§ÇØ 2 ´Ü°è Àü·«À¸·Î °ãÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
¸¸ÀÏ ¸Þ¸ð¸® ´ëÀÀ ÆÄÀϵéÀÌ
mmap
½Ã½ºÅÛ ÄÝÀ» ÅëÇØ ½Ã½ºÅÛ¿¡¼ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù¸é,
¿©·¯ºÐÀº ÇÁ·Î±×·¥À» À§ÇÑ Àç »ç¿ë ÆÄÀÏ·Î ¾²µµ·Ï GDB¿¡°Ô ¾ß±â ½ÃÅ°±â À§ÇØ, ´Ù¸¥ ¿É¼Ç `-mapped'¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
GDB µð¹ö±ë ¼¼¼ÇÀº ½ÇÇà ÇÁ·Î±×·¥¿¡¼ ½Éº¼ Å×À̺íÀ» Àд ½Ã°£À» º¸³»±â º¸´Ù´Â
ÀÌ º¸Á¶ ½Éº¼ ÆÄÀÏ(¸¸ÀÏ ÇÁ·Î±×·¥ÀÌ ¹Ù²îÁö ¾Ê´Â´Ù¸é)¿¡¼ ½Éº¼ Á¤º¸¸¦ ´ëÀÀÇÑ´Ù.
`-mapped' ¿É¼ÇÀº `-mapped' ¸í·É¾î ¶óÀÎ ¿É¼ÇÀ» °¡Áö°í GDB¸¦
½ÃÀÛÇÏ´Â °Í°ú °°Àº È¿°ú¸¦ °¡Áø´Ù.
¿©·¯ºÐÀº ÇÁ·Î±×·¥À» À§ÇØ ½Éº¼ Á¤º¸ ¸ðµÎ¸¦ °¡Áö°í ÀÕ´Â º¸Á¶ ½Éº¼À» È®½ÇÈ÷ ¸¸µé±â À§ÇØ
µÎ ¿É¼ÇÀ» °°ÀÌ »ç¿ëÇÒ¼ö ÀÖ´Ù.
myprog¶ó ºÒ¸®´Â ÇÁ·Î±×·¥À» À§ÇÑ º¸Á¶ ½Éº¼ ÆÄÀÏÀº
`myprog.syms'¶ó ºÒ¸°´Ù.
ÀÏ´Ü ÀÌ ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù¸é, ¿©·¯ºÐÀÌ myprog¸¦ µð¹ö±ëÇÒ¶§ GDB´Â ±×°ÍÀ»
»ç¿ëÇϱâ À§ÇØ Ç×»ó ½ÃµµÇÑ´Ù.
`.syms' ÆÄÀÏÀº ¿©·¯ºÐÀÌ GDB¸¦ µ¹¸®°í Àִ ȣ½ºÆ® ¸Ó½Å¿¡ ÀÇÁ¸ÇÑ´Ù.
±×°ÍÀº ³»ºÎ GDB ½Éº¼ Å×À̺íÀÇ Á¤È®ÇÑ À̹ÌÁö¸¦ °¡Áö°í ÀÖ´Ù.
ÀÌ°ÍÀº ¸ÖƼ È£½ºÆ® Ç÷§ÆûÀ» ÅëÇØ °øÀ¯µÉ¼ö ¾ø´Ù.
core-file [ filename ]
-
"¸Þ¸ð¸® ³»¿ë"À¸·Î »ç¿ëµÇ±â À§ÇØ ÄÚ¾î ´ýÇÁ ÆÄÀÏÀÇ °üÇÑ °ÍÀ» ÁöÁ¤ÇÑ´Ù.
ÀüÅëÀûÀ¸·Î, ÄÚ¾î ÆÄÀÏÀº ÄÚ¾î ÆÄÀÏÀÌ »ý¼ºÇÏ´Â ÇÁ·Î¼¼¼ ÁÖ¼Ò °ø°£ÀÇ ÀϺκÐÀ» Æ÷ÇÔÇÑ´Ù.;
GDB´Â ´Ù¸¥ ºÎºÐÀ» À§ÇØ ½ÇÇà ÆÄÀÏ ÀÚü¸¦ Á¢±ÙÇÒ¼ö ÀÖ´Ù.
ÀÎÀÚ ¾ø´Â
core-file
´Â ¾î¶² ÄÚ¾îÆÄÀϵµ »ç¿ëµÇÁö ¾Ê´Â´Ù´Â °ÍÀ» ÁöÁ¤ÇÑ´Ù.
ÇÁ·Î±×·¥ÀÌ GDB¿¡¼ ½ÇÁ¦·Î µ¹¾Æ°¥¶§ ÄÚ¾î ÆÄÀÏÀº ¹«½ÃµÈ´Ù´Â Á¡À» ÁÖÀÇÇضó.
±×·¡¼, ¸¸ÀÏ ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» µ¹¸®°í ´ë½Å¿¡ ÄÚ¾îÆÄÀÏÀ» µð¹ö±ëÇÏ±æ ¿öÇÑ´Ù¸é,
¿©·¯ºÐÀº ÇÁ·Î±×·¥ÀÌ µ¹¾Æ°¡´Â ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ Á׿©¾ß ÇÑ´Ù.
ÀÌ°ÍÀ» Çϱâ À§ÇØ, kill
¸í·É¾î¸¦ »ç¿ëÇضó.
(ÀÚ½Ä ÇÁ·Î¼¼½º Á×À̱⠼½¼ÇÀ» ÂüÁ¶Çضó.)
load filename
-
¿ø°Ý µð¹ö±ë ±â´ÉÀ» GDB¿¡ ¼³Á¤ÇÏ´Â °Í¿¡ ÀÇÁ¸ÇÏ¿©,
load
¸í·É¾î´Â ÀÌ¿ëµÉ¼ö
ÀÖ´Ù. ±×°ÍÀÌ Á¸ÀçÇÑ´Ù¸é, ¿ø°Ý ½Ã½ºÅÛ¿¡¼ µð¹ö±ëÀ» ÀÌ¿ëÇϱâ À§ÇØ filenameÀ»
¸¸µé¼ö ÀÖ´Ù.--¿¹¸¦ µé¾î, ´Ù¿î·Îµå³ª µ¿Àû ¸µÅ©.
load
´Â add-symbol-file
¸í·É¾îó·³, GDB³»ÀÇ filename
½Éº¼ Å×À̺íÀ» ±â·ÏÇÑ´Ù.
¸¸ÀÏ GDB°¡ load
¸í·É¾î¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù¸é, ½ÇÇàÀº ¿¡·¯ ¸Þ¼¼Áö
"You can't do that when your target is ...
"¸¦ °®´Â´Ù.
ÆÄÀÏÀº ½ÇÇà½Ã ÁöÁ¤µÇ´Â ÁÖ¼Ò°¡ ¹«¾ùÀ̵çÁö ·ÎµùµÈ´Ù.
¸î¸î °´Ã¼ ÆÄÀÏ Çü½ÄÀ» À§ÇØ, ¿©·¯ºÐÀº ÇÁ·Î±×·¥À» ¸µÅ©ÇÒ¶§ ·Îµù ÁÖ¼Ò¸¦ ÁöÁ¤ÇÒ¼ö ÀÖ´Ù;
a.out°°Àº ´Ù¸¥ Æ÷¸ËÀ» À§ÇØ, °´Ã¼ ÆÄÀÏ Çü½ÄÀº °íÁ¤ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù.
VxWorks¿¡¼, load
´Â GDB³» ½Éº¼Å×À̺íÀ» Ãß°¡ÇÒ »Ó¸¸ ¾Æ´Ï¶ó ÇöÀç Ÿ°Ù
½Ã½ºÅÛ¿¡¼ µ¿ÀûÀ¸·Î filenameÀ» ¸µÅ©ÇÑ´Ù.
Intel 960 board¿¡ ´ëÇÑ Nindy ÀÎÅÍÆäÀ̽º¿¡¼, load
´Â GDB³» ½Éº¼À» Ãß°¡ÇÒ
»Ó¸¸ ¾Æ´Ï¶ó 960¿¡ filenameÀ» ´Ù¿î·ÎµåÇÑ´Ù.
¿©·¯ºÐÀÌ Hitachi SH, H8/300, ¶Ç´Â H8/500 board¿¡ ¿ø°Ý µð¹ö±ëÀ» ¼±ÅÃÇÒ¶§,
load
¸í·É¾î´Â ÇÁ·Î±×·¥À» Hitachi board(GDB ¿Í Hitachi microprocessors ¼½¼ÇÀ» ÂüÁ¶Çضó.)¿¡ ´Ù¿î ·ÎµåÇÏ°í
È£½ºÆ®(file
¸í·É¾îó·³)³» GDB¸¦ À§ÇÑ ÇöÀç ½ÇÇà Ÿ°ÙÀ¸·Î½á ±×°ÍÀ» ¿¬´Ù.
ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÑ ´ÙÀ½ ´Ù½Ã RET¸¦ ´©¸¥´Ù¸é load
´Â ¹Ýº¹µÇÁö
¾Ê´Â´Ù.
add-symbol-file filename address
-
add-symbol-file filename address [ -readnow ] [ -mapped ]
-
add-symbol-file
¸í·É¾î´Â ÆÄÀÏ filename ¿¡¼ Ãß°¡ÀûÀÎ ½Éº¼ Å×À̺í Á¤º¸¸¦ Àд´Ù.
¿©·¯ºÐÀº filenameÀÌ µ¹¾Æ°¡°í ÀÖ´Â ÇÁ·Î±×·¥¿¡ µ¿ÀûÀ¸·Î ·ÎµùµÉ¶§ ÀÌ ¸í·É¾î¸¦
»ç¿ëÇÒ¼ö ÀÖ´Ù.
address´Â ÆÄÀÏÀÌ ·ÎµùµÇ´Â ¸Þ¸ð¸® ÁÖ¼ÒÀ̾î¾ß ÇÑ´Ù; GDB´Â ÀÚüÀûÀ¸·Î ÀÌ°ÍÀ» ÀÌÇØÇÏÁö
¸øÇÑ´Ù. ¿©·¯ºÐÀº Ç¥Çö½Äó·³ address¸¦ ÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
ÆÄÀÏ filenameÀÇ ½Éº¼ Å×À̺íÀº symbol-file
¸í·É¾î·Î Àд ½Éº¼ Å×ÀÌºí¿¡
Ãß°¡µÈ´Ù. ¿©·¯ºÐÀº ¿©·¯¹ø ADD-SYMBOL-FILE
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù; »õ·Î¿î ½Éº¼
µ¥ÀÌÅÍ´Â ¿¹Àü°Í¿¡ Ãß°¡µÈ´Ù. ´ë½Å¿¡ ¿¹Àü ½Éº¼ µ¥ÀÌÅÍ ¸ðµÎ¸¦ ¹ö¸®±â À§ÇØ, symbol-file
¸í·É¾î¸¦ »ç¿ëÇضó.
¿©·¯ºÐÀÌ ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÑÈÄ RET¸¦ ´©¸¥´Ù¸é, add-symbol-file
´Â ¹Ýº¹µÇÁö ¾Ê´Â´Ù.
¿©·¯ºÐÀº GDB°¡ filenameÀ» À§ÇÑ ½Éº¼ Å×À̺í Á¤º¸¸¦ °ü¸®ÇÏ´Â ¹æ¹ýÀ»
¹Ù²Ù±â À§ÇØ symbol-file
¸í·É¾î ó·³,
`-mapped' and `-readnow' ¿É¼ÇÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.
add-shared-symbol-file
-
add-shared-symbol-file
¸í·É¾î´Â Motorola 88k¸¦ À§ÇÑ OS Harris' CXUX¿¡¼¸¸ »ç¿ëµÉ¼ö ÀÖ´Ù.
GDB´Â ÀÚµ¿ÀûÀ¸·Î °øÀ¯ ¶óÀ̺귯¸®¸¦ ã´Â´Ù. ±×·¯³ª ¸¸ÀÏ GDB°¡ ¹ß°ßÇÏÁö ¸øÇÑ´Ù¸é,
¿©·¯ºÐÀº add-shared-symbol-file
¸¦ µ¹¸±¼ö ÀÖ´Ù. ÀÌ ¸í·É¾î´Â ÀÎÀÚ¸¦ °¡ÁöÁö ¾Ê´Â´Ù.
section
-
section
¸í·É¾î´Â ½ÇÇà ÆÄÀÏÀÇ ¼½¼Ç SECTIOÀÇ ±âº» ÁÖ¼Ò¸¦ ADDR·Î ¹Ù²Û´Ù.
¸¸ÀÏ exec ÆÄÀÏÀÌ ¼½¼Ç ÁÖ¼Ò¸¦ Æ÷ÇÔÇÏÁö ¾Ê°Å³ª ÆÄÀÏ ÀÚü¿¡ ÁöÁ¤µÈ ÁÖ¼Ò°¡ À߸øµÇ¾úÀ»¶§,
ÀÌ ¸í·É¾î´Â »ç¿ëµÉ¼ö ÀÖ´Ù.
°¢ ¼½¼ÇÀº µû·Î µû·Î ¹Ù²î¾î¾ß ÇÑ´Ù. "info files" ¸í·É¾î´Â ¸ðµç ¼½¼Ç°ú ÁÖ¼Ò¸¦
³ª¿ÇÑ´Ù.
info files
-
info target
-
info files
°ú info target
´Â µ¿ÀǾîÀÌ´Ù; µÎ°³´Â ½ÇÇà ÆÄÀÏÀÇ À̸§°¡ GDB°¡ ÇöÀç »ç¿ëÇÏ´Â ÄÚ¾î ´ýÇÁ ÆÄÀÏÀÇ À̸§°ú ·ÎµùµÈ ½Éº¼¿¡¼ ÆÄÀÌÀ» Æ÷ÇÔÇÑ ÇöÀç Ÿ°ÙÀ» Ãâ·ÂÇÑ´Ù. (µð¹ö±ë Ÿ°Ù ÁöÁ¤Çϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.)
¸í·É¾î help target
´Â ÇöÀç °Íº¸´Ù °¡´ÉÇÑ ¸ðµç Ÿ°ÙÀ» ¸®½ºÆ®ÇÑ´Ù.
ÆÄÀÏÀ» ÁöÁ¤ÇÏ´Â ¸ðµç ¸í·É¾î´Â ÀÎÀڷνá Àý´ëÀûÀÌ°í »ó´ëÀûÀÎ ÆÄÀÏÀ̸§ ¸ðµÎ¸¦ Çã¿ëÇÑ´Ù. GB´Â ÆÄÀÏ À̸§À» Àý´ë ÆÄÀÏ À̸§À¸·Î º¯È¯ÇÏ¸ç ±×·± ¹æ½ÄÀ¸·Î ÆÄÀÏÀ̸§À» ±â¾ïÇÑ´Ù.
GDB´Â SunOS, SVr4, Irix 5, ±×¸®°í IBM RS/6000 °øÀ¯ ¶óÀ̺귯¸®¸¦ Áö¿øÇÑ´Ù.
GDB´Â ¿©·¯ºÐÀÌ run
¸í·É¾î¸¦ »ç¿ëÇÒ¶§³ª ÄÚ¾î ÆÄÀÏÀ» °Ë»çÇÒ¶§ ÀÚµ¿ÀûÀ¸·Î
°øÀ¯ ¶óÀ̺귯¸®¿¡¼ ½Éº¼ Á¤ÀǵéÀ» ·ÎµùÇÑ´Ù.
(¿©·¯ºÐÀÌ run
¸í·É¾î¸¦ »ç¿ëÇϱâ Àü¿¡, GDB´Â °øÀ¯ ¶óÀ̺귯¸®³» ÇÔ¼ö¿¡ ´ëÇÑ ÂüÁ¶¸¦ ÀÌÇØÇÏÁö ¸øÇÑ´Ù.--¸¸ÀÏ ¿©·¯ºÐÀÌ ÄÚ¾îÆÄÀÏÀ» µð¹ö±ëÇÏÁö ¾Ê´Â´Ù¸é.)
info share
info sharedlibrary
sharedlibrary regex
share regex
run
À» ŸÀÌÇÎ
ÇÑµÚ ÇÁ·Î±×·¥¿¡ ÀÇÇØ ¿ä±¸µÇ´Â °øÀ¯ ¶óÀ̺귯¸®µéÀ» ·ÎµùÇÑ´Ù.
¸¸ÀÏ regex°¡ »ý·«µÈ´Ù¸é, ÇÁ·Î±×·¥ÀÌ ¿ä±¸ÇÏ´Â ¸ðµç °øÀ¯ ¶óÀ̺귯¸®µéÀº
·ÎµùµÈ´Ù.
½Éº¼ ÆÄÀÏÀ» Àд µ¿¾È, GDB´Â °¡²û ÀνÄÇÏÁö ¸øÇÏ´Â ½Éº¼ ŸÀÔÀ̳ª ÄÄÆÄÀÏ·¯ Ãâ·Â½Ã
¹ö±×°°Àº ¹®Á¦¸¦ ¸¸³´Ù.
±âº»ÀûÀ¸·Î, GDB´Â ±×·± ¹®Á¦¸¦ ¿©·¯ºÐ¿¡°Ô ÀνĽÃÅ°Áö ¾Ê´Â´Ù. ¿Ö³ÄÇÏ¸é ±×°ÍµéÀº
»ó´ëÀûÀ¸·Î ÀϹÝÀûÀ̸ç ÄÄÆÄÀÏ·¯¸¦ µð¹ö±ëÇÏ´Â »ç¶÷µé¿¡°Ô ¿ì¼±ÀûÀ¸·Î Èï¹ÌÀÕ´Â °ÍµéÀ̱â
¶§¹®ÀÌ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ ÁÁÁö ¾Ê´Â ±¸Á¶ÀÇ ½Éº¼ Å×ÀÌºí¿¡ °üÇÑ Á¤º¸¸¦ ÂüÁ¶Çϴµ¥
Èï¹Ì°¡ ÀÖ´Ù¸é, ¿©·¯ºÐÀº ¹®Á¦°¡ ¾ó¸¶³ª ÀϾ´ÂÁö¿¡ °ü°è¾øÀÌ, ±×·± ŸÀÔÀÇ ¹®Á¦¿¡ °üÇÑ
¸Þ¼¼Áö¸¸À» Ãâ·ÂÇϵµ·Ï GDB¿¡°Ô ¿ä±¸ÇÒ¼ö ÀÖ´Ù.; ¶Ç´Â ¿©·¯ºÐÀº set complaints
(°æ°í ¿É¼Ç°ú ¸Þ¼¼Áöµé ¼½¼ÇÀ» ÂüÁ¶Çضó.).
¸í·É¾î·Î ¹®Á¦°¡ ¾ó¸¶³ª ¸¹ÀÌ ÀϾ´ÂÁö¸¦ º¸±â À§ÇØ ´õ ¸¹Àº ¸Þ¼¼Áö¸¦ Ãâ·ÂÇϵµ·Ï
GDB¿¡°Ô ¿ä±¸ÇÒ¼ö ÀÖ´Ù.
ÇöÀç Ãâ·ÂµÈ ¸Þ¼¼Áö¿Í, ±× Àǹ̴Â:
inner block not inside outer block in symbol
(don't know)
" ó·³ º¸¿©Áø´Ù.
block at address out of order
set verbose on
¸¦ ÁöÁ¤ÇÏ¿© ¿µÇâ ¹Þ´Â ¼Ò½º ÆÄÀÏÀÌ ¹«¾ùÀÎÁö¸¦ °áÁ¤
ÇÒ¼ö ÀÖ´Ù. °æ°í ¿É¼Çµé°ú ¸Þ¼¼Áöµé ¼½¼ÇÀ» ÂüÁ¶Çضó.)
bad block start address patched
bad string table offset in symbol n
foo
¸¦ °¡Áöµµ·Ï ½Éº¼À» °í·ÁÇÏ¿© ÀÌ ¹®Á¦¸¦ ÇØ°áÇϸç,
¸¸ÀÏ ¸¹Àº ½Éº¼µéÀÌ ÀÌ À̸§À¸·Î ³¡³´Ù¸é ´Ù¸¥ ¹®Á¦¸¦ ¾ß±âÇÒ¼öµµ ÀÖ´Ù.
unknown symbol type 0xnn
0xnn
´Â 16Áø¼ö·Î À߸ø ÀÌÇØÇÏ°í ÀÖ´Â ½Éº¼ ŸÀÔÀÌ´Ù.
GDB´Â ÀÌ ½Éº¼ Á¤º¸¸¦ ¹«½ÃÇÏ¿© ¿¡·¯¸¦ ÇØ°áÇÑ´Ù. ÀÌ°ÍÀº ºñ·Ï ±×·¯ÇÑ ½Éº¼À» Á¢±ÙÇÒ¼ö
¾ø´ÙÇÒÁö¶óµµ, ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» µð¹ö±ëÇÏ´Â°É Çã¿ëÇÑ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ ±×·± ¹®Á¦¸¦
¸¸³ª°í µð¹ö±ëÇϴ°Íó·³ ´À³¤´Ù¸é, ¿©·¯ºÐÀº gdb
¸¦ µð¹ö±ëÇÒ¼ö ÀÖ°í,
complain
¿¡ breakpont¸¦ ÇÒ¼ö ÀÖ°í, ÇÔ¼ö read_dbx_symtab
·Î
À̵¿ÇÏ¿© ½Éº¼À» °Ë»çÇϱâ À§ÇØ *bufp
¸¦ °Ë»çÇÒ¼ö ÀÖ´Ù.
stub type has NULL name
const/volatile indicator missing (ok if using g++ v1.x), got...
info mismatch between compiler and debugger
target Àº ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ µ¹¾Æ°¡´Â ½ÇÇà ȯ°æÀ» ¸»ÇÑ´Ù.
ÀÚÁÖ, GDB´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥°ú °°Àº È£½ºÆ® ȯ°æ¿¡¼ µ¹¾Æ°£´Ù; ±×·± °æ¿ì,
µð¹ö±ë Ÿ°ÙÀº ¿©·¯ºÐÀÌ file
À̳ª core
¸í·É¾î¸¦
»ç¿ëÇÒ¶§ ºÎ¼öÀû È¿°ú·Î½á ÁöÁ¤µÈ´Ù.
¿©·¯ºÐÀÌ ´õ ¸¹Àº À¯µ¿¼ºÀÌ ÇÊ¿äÇÒ¶§ --
¿¹¸¦ µé¾î, ¹°¸®ÀûÀ¸·Î °¢°¢ ´Ù¸¥ È£½ºÆ®¿¡¼ GDB¸¦ µ¹¸®°Å³ª ½Ã¸®¾ó Æ÷Æ®¸¦ ÅëÇØ
µ¶¸³Çü ½Ã½ºÅÛÀ» Á¦¾îÇϰųª TCP/IPÁ¢¼ÓÀ» ÅëÇØ ½Ç½Ã°£ ½Ã½ºÅÛÀ» Á¦¾îÇÒ¶§ --
¿©·¯ºÐÀº GDB¸¦ À§ÇØ ¼³Á¤µÈ Ÿ°Ù ŸÀÔµéÁß Çϳª¸¦ ÁöÁ¤Çϱâ À§ÇØ
target
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
(Ÿ°Ù °ü¸®¸¦ À§ÇÑ ¸í·É¾îµé ¼½¼ÇÀ» ÂüÁ¶Çضó).
¿©±â¿¡´Â ¼¼ Á¾·ùÀÇ Å¸°ÙÀÌ ÀÖ´Ù: ÇÁ·Î¼¼½ºµé, ÄÚ¾î ÆÄÀϵé, ½ÇÇà ÆÄÀϵé GDB´Â °¢ Ŭ·¡½º¿¡¼ Çϳª¾¿ ¼¼°³ÀÇ È°µ¿ Ÿ°ÙµéÀ» µ¿½Ã¿¡ ÀÛµ¿½Ãų¼ö ÀÖ´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀÌ ÇÁ·Î¼¼½º¸¦ ½ÃÀÛÇÏ°í ÄÚ¾î ÆÄÀÏ¿¡¼ÀÇ ÀÛµ¿À» Æ÷±âÇÏÁö ¾Ê°í ÇØ´ç È°µ¿À» Á¶»çÇϴ°ÍÀ» Çã¿ëÇÑ´Ù.
¿¹¸¦ µé¾î, ¿©·¯ºÐÀÌ `gdb a.out' ¸¦ ½ÇÇàÇÑ´Ù¸é, ½ÇÇà ÆÄÀÏ
a.out
¸¸ÀÌ È°µ¿ Ÿ°ÙÀÌ´Ù.
¿©·¯ºÐÀÌ ÄÚ¾îÆÄÀϵµ ¿ª½Ã ¸í½ÃÇÑ´Ù¸é --¾Æ¸¶µµ ¾Õ¿¡¼ Å©·¡½¬µÇ°í ÄÚ¾î ´ýÇÁµÈ-- GDB´Â µÎ°³ÀÇ È°µ¿ Ÿ°ÙÀ» °¡Áö°Ô µÇ°í tandem¿¡¼ À̰͵éÀ» »ç¿ëÇÏ¿© ¸Þ¸ð¸® ÁÖ¼Ò¿¡
´ëÇÑ ¿ä±¸¸¦ ¸¸Á·½ÃÅ°±â À§ÇØ
corefile Ÿ°Ù¿¡¼ óÀ½ ã°í ±× ´ÙÀ½¿¡ ½ÇÇà ÈÀÏ¿¡¼ ã´Â´Ù.
(ÀüÇüÀûÀ¸·Î, À̵é Ÿ°ÙÀÇ µÎ Ŭ·¡½ºµéÀº º¹ÀâÇÏ´Ù. ¿Ö³ÄÇϸé ÄÚ¾î ÆÄÀϵéÀº ´ÜÁö
ÇÁ·Î±×·¥ÀÇ Àбâ-¾²±â ¸Þ¸ð¸®--º¯¼ö±×¸®°í µîµî--¿Í ¸Ó½ÅÀÇ »óŸ¸À» Æ÷ÇÔÇÏÁö¸¸
½ÇÇà ÈÀÏÀº ÇÁ·Î±×·¥ÀÇ ÅؽºÆ®¿Í ÃʱâÈµÈ µ¥ÀÌÅ͸¸À» Æ÷ÇÔÇÑ´Ù.)
¿©·¯ºÐÀÌ run
À» ŸÀÔÇÑ´Ù¸é, ¿©·¯ºÐÀÇ ½ÇÇà ÈÀÏ ¿ª½Ã È°µ¿
ÇÁ·Î¼¼½º Ÿ°ÙÀÌ µÈ´Ù.
ÇÁ·Î¼¼½º Ÿ°ÙÀÌ È°¼ºÈµÇ¸é ¸Þ¸ð¸® ÁÖ¼Ò¸¦ ¿ä±¸ÇÏ´Â ¸ðµç GDB ¸í·É¾îµéÀº ÀÌ Å¸°ÙÀ»
ÂüÁ¶ÇÑ´Ù; È°¼ºÈµÈ ÄÚ¾î ÆÄÀÏÀ̳ª ½ÇÇà ÆÄÀÏ Å¸°Ù¿¡¼ ÁÖ¼Ò´Â ÇÁ·Î¼¼½º Ÿ°ÙÀÌ È°
¼ºÈµÇ´Â µ¿¾ÈÀº ¸ðÈ£ÇØÁø´Ù.
»õ·Î¿î ÄÚ¾î ÆÄÀÏÀ̳ª ½ÇÇà Ÿ°ÙÀ» ¼±ÅÃÇϱâ À§ÇØ core-file
±×¸®°í exec-file
¸í·É¾îµéÀ» »ç¿ëÇضó.
(ÆÄÀÏÀ» ÁöÁ¤Çϱâ À§ÇÑ ¸í·É¾îµé ¸¦ ÂüÁ¶Çضó).
ÀÌ¹Ì µ¹¾Æ°¡°í ÀÖ´Â ÇÁ·Î¼¼½º¸¦ Ÿ°ÙÀ¸·Î ÁöÁ¤Çϱâ À§ÇØ
attach
¸í·É¾î¸¦ »ç¿ëÇضó.(ÀÌ¹Ì µ¹¾Æ°¡°í ÀÖ´Â ÇÁ·Î¼¼½º µð¹ö±ë ¼½¼ÇÀ» ÂüÁ¶Çضó).
target type parameters
target
¸í·É¾î´Â ¹Ýº¹ÇÏÁö ¾Ê´Â´Ù.
help target
info target
À̳ª info files
¸¦
»ç¿ëÇضó.
(ÆÄÀÏÀ» ÁöÁ¤Çϱâ À§ÇÑ ¸í·É¾îµé ¼½¼ÇÀ» ÂüÁ¶Çضó.).
help target name
set gnutarget args
set gnutarget
¸í·É¾î¸¦ °¡Áö°í ÆÄÀÏ Æ÷¸ËÀ» ÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
´ëºÎºÐÀÇ target
¸í·É¾îµé°ú ´Þ¸®,
gnutarget
°ú target
Àº ¸Ó½ÅÀÌ ¾Æ´Ñ ÇÁ·Î±×·¥À»
°¡¸®Å²´Ù.
°æ°í: set gnutarget
À¸·Î ÆÄÀÏ Æ÷¸ËÀ» ÁöÁ¤Çϱâ À§ÇØ,
¿©·¯ºÐÀº ½ÇÁ¦ BFD À̸§À» ¾Ë¾Æ¾ß ÇÑ´Ù.
ÆÄÀÏÀ» ÁöÁ¤Çϱâ À§ÇÑ ¸í·É¾îµé ¼½¼ÇÀ» ÂüÁ¶Çضó.
show gnutarget
gnutarget
ÆÄÀÏ Æ÷¸ËÀÌ ¹«¾ùÀÎÁö¸¦ º¸¿©ÁÖ±â
À§ÇØ show gnutarget
¸í·É¾î¸¦ »ç¿ëÇضó.
¿©·¯ºÐÀÌ gnutarget
¼³Á¤ÇÏÁö ¾Ê¾Ò´Ù¸é,
GDB´Â ÀÚµ¿ÀûÀ¸·Î °¢ ÆÄÀÏÀ» À§ÇÑ ÆÄÀÏ Æ÷¸ËÀ» °áÁ¤Çϸç
show gnutarget
´Â The current BDF target is "auto"
¸¦
º¸¿©ÁØ´Ù.
¿©±â¿¡ ¸î¸î ÀϹÝÀû Ÿ°ÙÀÌ ÀÖ´Ù.(GDB ¼³Á¤¿¡ ÀÇÁ¸ÇÏ¿© ÀÌ¿ëÇÒ¼ö ÀÖµçÁö ¾øµçÁö):
target exec program
target core filename
target remote dev
target remote
´Â Áö±Ý load
¸í·É¾î¸¦ Áö¿øÇÑ´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀÌ Å¸°Ù ½Ã½ºÅÛ¿¡
´ëÇÑ ½ºÅͺ긦 °®´Â ´Ù¸¥ ¹æ¹ýÀ» °¡Áö°í Àְųª ¿©·¯ºÐÀÌ ´Ù¿î ·Îµå·Î ¶³¾îÁ® ÀÖÁö
¾ÊÀº ¸Þ¸ð¸® ¾î¶²°÷¿¡ ³õÀ»¼ö ÀÖÀ» °æ¿ì¸¸ À¯¿ëÇÏ´Ù.
target sim
target udi keyword
target amd-eb dev speed PROG
target remote
ó·³
dev ´Â ½Ã¸®¾ó ÀåÄ¡ÀÌ´Ù.;
speed ´Â ¿©·¯ºÐÀÌ ¶óÀÎ ¼Óµµ¸¦ ÁöÁ¤Çϵµ·Ï Çã¿ëÇÑ´Ù;
±×¸®°í PROG ´Â PC¿¡ DOS°¡ ³ªÅ¸³ª´Â
°Íó·³ µð¹ö±ëÀ» À§ÇØ ÇÁ·Î±×·¥ÀÇ À̸§ÀÌ´Ù.is the
AMD29K¸¦ À§ÇÑ EBMON ÇÁ·ÎÅäÄÝ.
target hms dev
device
±×¸®°í speed
¸¦ »ç¿ëÇضó.
GDB ±×¸®°í Hitachi ¸¶ÀÌÅ©·Î ÇÁ·Î¼¼¼ ¼½¼ÇÀ» ÂüÁ¶Çضó.
target nindy devicename
target st2000 dev speed
target vxworks machinename
target bug dev
target cpu32bug dev
target op50n dev
target w89k dev
target est dev
target rom68k dev
target array dev
target sparclite dev
´Ù¸¥ Ÿ°ÙµéÀÌ GDBÀÇ ´Ù¸¥ ¼³Á¤µéÀ» ÀÌ¿ëÇÑ´Ù; ¿©·¯ºÐÀÇ ¼³Á¤Àº ´õ ¸¹Àº Ÿ°ÙÀ̰ųª °ÅÀÇ ¾ø´Â Ÿ°ÙµéÀÌ´Ù.
¿©·¯ºÐÀº Áö±Ý Ÿ°Ù ½Ã½ºÅÛÀÌ »ç¿ëÇÏ´Â ¹ÙÀÌÆ® ¼ø¼¸¦ ¼±ÅÃÇÒ¼ö ÀÖ´Ù.
set endian big
±×¸®°í set endian little
¸í·É¾î¸¦
»ç¿ëÇضó.
½ÇÇà°ú °ü·ÃµÈ ¹ÙÀÌÆ® ¼ø¼ÀÇ »ç¿ëÀ» À§ÇØ GDB¿¡ ¸í·ÉÇϱâ À§Çؼ
set endian auto
¸í·É¾î¸¦ »ç¿ëÇضó.
¿©·¯ºÐÀº show endian
¸í·É¾î¸¦ °¡Áö°í ÇöÀç ¼³Á¤µÈ ¹ÙÀÌÆ® ¼ø¼¸¦
º¼¼ö ÀÖ´Ù.
°æ°í: ÇöÀç, ´ÜÁö ³»ÀåµÈ MIPS ¼³Á¤¸¸ÀÌ Å¸°ÙÀÇ ¹ÙÀÌÆ® ¼ø¼ÀÇ µ¿Àû ¼±ÅÃÀ»
Áö¿øÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î GDB¸¦ µ¹¸±¼ö ¾ø´Â ¸Ó½Å¿¡¼ µ¹¾Æ°¡´Â ÇÁ·Î±×·¥À» µð¹ö±ë ÇÑ´Ù¸é, ¿ø°Ý µð¹ö±ëÀ» »ç¿ëÇϴ°ÍÀº À¯¿ëÇÏ´Ù. ¿¹¸¦ µé¾î, ¿©·¯ºÐÀÌ OS Ä¿³ÎÀ» ¿ø°Ýµð¹ö±ëÇÒ¶§³ª ¿ÏÀüÇÑ Æ¯Â¡ÀÇ µð¹ö°Å¸¦ µ¹¸±±â¿¡ ÃæºÐÇÑ ÀϹÝÀûÀÎ OS¸¦ °¡Áö°í ÀÖÁö ¾ÊÀº ÀÛÀº ½Ã½ºÅÛ¿¡¼ »ç¿ëÇÒ¼ö ÀÖ´Ù.
GDB ¸î¸î ¼³Á¤µéÀº Ưº°ÇÑ µð¹ö±ë Ÿ°Ùµé°ú ÇÔ²² ÀÛµ¿µÉ¼ö ÀÖµµ·Ï ½Ã¸®¾óÀ̳ª TCP/IP ÀÎÅÍÆäÀ̽º¸¦ °¡Áö°í ÀÖ´Ù. °Ô´Ù°¡, GDB´Â ¿©·¯ºÐÀÌ ¿ø°Ý ½ºÅÓ(stubs)--GDB¿Í Åë½ÅÇϱâ À§ÇØ ¿ø°Ý ½Ã½ºÅÛ¿¡¼ µ¹¾Æ°¡´Â ÄÚµå--À» ¾´´Ù¸é »ç¿ëÇÒ¼ö ÀÖ´Â ÀϹÝÀûÀÎ ½Ã¸®¾ó ÇÁ·ÎÅäÄÝ(GDB¿¡ ÇÑÁ¤µÇ¾î ÀÖÁö¸¸ ´Ù¸¥ ƯÁ¤ Ÿ°Ù ½Ã½ºÅÛ¿¡´Â ÇÑÁ¤µÇ¾î ÀÖÁö ¾Ê´Ù)À» °¡Áö°í ÀÖ´Ù.
´Ù¸¥ ¿ø°Ý Ÿ°Ùµéµµ ¿©·¯ºÐÀÇ GDB¼³Á¤¿¡¼ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù; ¸®½ºÆ®¸¦ º¸°íÀÚ Çϸé
help target
¸¦ »ç¿ëÇضó.
´Ù¸¥ ¸Ó½Å(µð¹ö±ë target ¸Ó½Å)¿¡¼ µ¹¾Æ°¡´Â ÇÁ·Î±×·¥À» µð¹ö±ëÇϱâ À§ÇØ, ¿©·¯ºÐÀº ¿ì¼± ÇÁ·Î±×·¥À» À§ÇØ ¿ì¼± ÁغñÇؾßÇÒ Çʼö»çÇ×µé ¸ðµÎ¸¦ Àç ¹è¿ÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î, C ÇÁ·Î±×·¥À» À§ÇØ ¿©·¯ºÐÀÌ ÇÊ¿äÇÑ°Í:
´ÙÀ½ ´Ü°è´Â GDB°¡ µ¹¾Æ°¡°í ÀÖ´Â ¸Ó½Å(host ¸Ó½Å)°ú Åë½ÅÇϱâ À§ÇØ ½Ã¸®¾ó Æ÷Æ®¸¦ »ç¿ëÇϱâ À§ÇØ Á¶Á¤ÇÏ´Â °ÍÀÌ´Ù. ÀϹÝÀûÀ¸·Î, ±¸Á¶´Â ´ÙÀ½°ú °°ÀÌ º¸ÀδÙ:
gdbserver
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
¼¼ºÎ »çÇ×À» À§ÇØ, gdbserver
ÇÁ·Î±×·¥ »ç¿ëÇϱâ À» ÂüÁ¶Çضó.
debugging stub´Â ¿ø°Ý ¸Ó½ÅÀÇ ¾ÆÅ°ÅØÃÄ¿¡ ÀÇÁ¸ÇÑ´Ù; ¿¹¸¦ µé¾î, SPARC º¸µåÀÇ ÇÁ·Î±×·¥À» µð¹ö±ë Çϱâ À§ÇØ `sparc-stub.c'¸¦ »ç¿ëÇضó.
À̵é ÀÛµ¿ ¿ø°Ý stub´Â GDB¿Í ÇÔ²² ¹èÆ÷µÈ´Ù:
i386-stub.c
m68k-stub.c
sh-stub.c
sparc-stub.c
sparcl-stub.c
GDB ¹èÆ÷Ædz» `README'´Â ´Ù¸¥ ÃÖ±Ù Ãß°¡µÈ stub°¡ ³ª¿µÇ¾î ÀÖ´Ù.
¿©·¯ºÐÀÇ ¾ÆÅ°ÅØÃĸ¦ À§ÇÑ debugging stub´Â ÀÌµé ¼¼ ¼ºê ·çƾÀ» Á¦°øÇÑ´Ù.:
set_debug_traps
handle_exception
À» Á¶Á¤ÇÑ´Ù. ¿©·¯ºÐÀº ÇÁ·Î±×·¥ ½ÃÀÛ±Ùó¿¡¼ ÀÌ ¼ºê·çƾÀ» È£ÃâÇØ¾ß ÇÑ´Ù.
handle_exception
handle_exception
¸¦ Á¶Á¤ÇÑ´Ù.
handle_exception
´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ ½ÇÇà(¿¹¸¦ µé¾î, breakpoint)
µµÁß ¸ØÃ⶧ Á¦¾î¸¦ °¡Áø´Ù. ±×¸®°í È£½ºÆ® ¸Ó½Å¿¡ ÀÖ´Â GDB¿Í Åë½ÅÀ» Áß°³ÇÑ´Ù.
ÀÌ°ÍÀº Åë½Å ÇÁ·ÎÅäÄÝÀÌ ÀÌÇàµÇÁø´Ù.; handle_exception
´Â
Ÿ°Ù ¸Ó½Å¿¡¼ GDB¸¦ ´ë½ÅÇؼ ÇൿÇÑ´Ù.; ±×°ÍÀº ÇÁ·Î±×·¥ »óÅ¿¡¼ ¿ä¾à Á¤º¸¸¦
º¸³»¸é¼ ½ÃÀÛÇÑ´Ù. ±×¸®°í ½ÇÇàÀ» °è¼Ó ÇÏ°í, ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» ´Ù½Ã ½ÃÀÛÇϵµ·Ï
¸¸µé±â À§ÇØ GDB ¸í·É¾î¸¦ ½ÇÇàÇÒ¶§±îÁö GDB°¡ ÇÊ¿äÇÒ¶§ Á¤º¸¸¦ Á¶»çÇÏ°í Àü´ÞÇÑ´Ù.;
±×·± ¸é¿¡¼, handle_exception
´Â Ÿ°Ù ¸Ó½Å¿¡¼ ÀÚ½ÅÀÇ Äڵ忡°Ô
Á¦¾î¸¦ ¸®ÅÏÇÑ´Ù.
breakpoint
handle_exception
¿¡°Ô Àü´ÞÇÏ´Â °ÍÀÌ´Ù--°á°úÀûÀ¸·Î, GDB¿¡°Ô. ¸î¸î ¸Ó½Å¿¡¼, ½Ã¸®¾ó Æ÷Æ®·Î °£´ÜÈ÷ ¹Þ´Â ¹®ÀÚµé
¶ÇÇÑ trapÀ» ¹ß»ý½ÃŲ´Ù.; ¶Ç, ±×·± »óȲ¿¡¼ ¿©·¯ºÐÀº ÀÚ½ÅÀÇ ÇÁ·Î±×·¥¿¡¼
breakpoint
¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ¾ø´Ù.--°£´ÜÈ÷, È£½ºÆ®¿¡¼ `target remote'À» µ¹¸®¸é GDB ¼¼¼ÇÀÌ Á¦¾î¸¦ °®´Â´Ù.
¸¸ÀÏ À̰͵éÁß ¾î¶² °Íµµ »ç½ÇÀÌ ¾Æ´Ï¶ó¸é, ¶Ç´Â ¸¸ÀÏ ¿©·¯ºÐÀÌ ´Ü¼øÈ÷ ¿©·¯ºÐÀÇ µð¹ö±ë ¼¼¼ÇÀÇ ½ÃÀÛÀ» À§ÇØ ¹Ì¸® °áÁ¤ÇÑ ÁöÁ¡¿¡¼ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥À» ¸ØÃßµµ·Ï ¸¸µé±â¸¦ ¿øÇÑ´Ù¸é, breakpoint
¸¦ È£ÃâÇضó.
GDB¿¡¼ debugging stub´Â Ưº°ÇÑ chip ¾ÆÅ°ÅØÃĸ¦ À§ÇØ ¼³Á¤µÈ´Ù. ±×·¯³ª À̰͵éÀº ¿©·¯ºÐÀÇ µð¹ö±ë Ÿ°Ù ¸Ó½Å¿¡ °üÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù.
¹«¾ùº¸´Ùµµ ¿©·¯ºÐÀº ½Ã¸®¾ó Åë½Å°ú Åë½Å ÇÏ´Â ¹æ¹ýÀ» stub¿¡°Ô ¸»ÇØ¾ß ÇÑ´Ù.
int getDebugChar()
getchar
¿Í °°´Ù; ´Ù¸¥ À̸§Àº
¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é µÎ°³¸¦ ±¸º°Çϵµ·Ï ¿©·¯ºÐ¿¡°Ô Çã¿ëÇϱâ À§ÇؼÀÌ´Ù.
void putDebugChar(int)
putchar
¿Í °°´Ù; ´Ù¸¥ À̸§Àº
¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é µÎ°³¸¦ ±¸º°Çϵµ·Ï ¿©·¯ºÐ¿¡°Ô Çã¿ëÇϱâ À§ÇؼÀÌ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÛµ¿ÁßÀÎ ÇÁ·Î±×·¥À» ¸ØÃßµµ·Ï GDB¸¦ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº ÀÎÅÍ·´Æ®-driven
µå¶óÀ̹ö¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ±×¸®°í ^C
(`\003', control-C ¹®ÀÚ)¸¦ ¹ÞÀ»¶§ ¸ØÃßµµ·Ï ÇØ¾ß ÇÑ´Ù.
±×°ÍÀº GDB°¡ ¿ø°Ý ½Ã½ºÅÛÀ» ¸ØÃßµµ·Ï ¸¸µé¶§ »ç¿ëµÇ´Â ¹®ÀÚÀÌ´Ù.
GDB¸¦ Àû´çÇÑ »óÅ·Πµ¹¸®±â À§ÇØ µð¹ö±ë Ÿ°Ù¿¡¼ °¡Á®¾ß ÇÒ°ÍÀº Ç¥ÁØ stub¸¦
¹Ù²Ù´Â °ÍÀÌ´Ù.; ºü¸£°í ÁöÀúºÐÇÑ ¹æ¹ýÀº breakpoint ¸í·É¾î¸¦ ½ÇÇàÇÏ´Â °ÍÀÌ´Ù.
("´õ·´´Ù"¶ó´Â ¸»Àº GDB°¡ SIGINT
´ë½Å¿¡ SIGTRAP
¸¦
º¸°íÇÑ´Ù´Â °ÍÀÌ´Ù.)
¿©·¯ºÐ¿¡°Ô ÇÊ¿äÇÑ ´Ù¸¥ ·çƾµéÀº:
void exceptionHandler (int exception_number, void *exception_address)
exceptionHandler
¿¡¼ µµ¿ò ¾øÀÌ ±×°ÍµéÀ» ÀÎÅÍ·´Æ® ¸¶½ºÅ©¸¦ ÇÒ¼ö ÀÖ´Ù.
void flush_i_cache()
¿©·¯ºÐÀº ¶ÇÇÑ ÀÌ ¶óÀ̺귯¸® ·çƾÀ» ÀÌ¿ëÇÒ¼ö ÀÖµµ·Ï È°½ÇÈ÷ ¸¸µé¾î¾ß ÇÑ´Ù:
void *memset(void *, int, int)
memset
ÀÌ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ libc.a
ÀÇ ¹«·á ¹öÀüÀ» °¡Áö°í ÀÖ´Ù¸é, memset
˼
°Å±â¿¡ ÀÖ´Ù; ±×·¸Áö ¾ÊÀ¸¸é, ¿©·¯ºÐÀº Çϵå¿þ¾î Á¦Á¶¾÷ü¼ ¾ò°Å³ª ÀÚ½ÅÀÌ ½á¾ß
ÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ GNU C ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é, ¿©·¯ºÐÀº ´Ù¸¥ Ç¥ÁØ ¶óÀ̺귯¸®
¼ºê ·çƾÀÌ ÇÊ¿äÇÒÁö ¸ð¸¥´Ù.; ÀÌ°ÍÀº ÇÑ stub¿¡¼ ´Ù¸¥°ÍÀ¸·Î ¹Ù²ï´Ù. ±×·¯³ª
ÀϹÝÀûÀ¸·Î stubµéÀº gcc
°¡ inlineÄÚµå·Î ¸¸µå´Â ÀÏ¹Ý ¶óÀ̺귯¸®
¼ºê·çƾÀ» »ç¿ëÇÑ´Ù.
°á·ÐÀûÀ¸·Î, ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ Áغñ°¡ µÇ¾î ÀÖ´Ù¸é, ¿©·¯ºÐÀº ´ÙÀ½ ´Ü°è¸¦ ¹â¾Æ¾ß ÇÑ´Ù.
getDebugChar
,putDebugChar
,flush_i_cache
,memset
,exceptionHandler
.
set_debug_traps(); breakpoint();
exceptionHook
¶ó ºÒ¸®´Â º¯¼ö¸¦ Á¦°øÇØ¾ß ÇÑ´Ù.
º¸Åë ¿©·¯ºÐÀÇ »ç¿ëÀº:
void (*exceptionHook)() = 0;±×·¯³ª
set_debug_traps
¸¦ È£ÃâÇϱ⿡ ¾Õ¼, ¿©·¯ºÐÀº ÇÁ·Î±×·¥³» ÇÔ¼ö¿¡ Æ÷ÀÎÅ͸¦
¼³Á¤Çضó. ±×·¯¸é ±× ÇÔ¼ö´Â GDB
°¡ trap(¿¹¸¦ µé¾î, bus error)¿¡¼ ¸ØÃáÈÄ °è¼ÓµÉ¶§ È£ÃâµÈ´Ù.
exceptionHook
°¡ °¡¸®Å°´Â ÇÔ¼ö´Â ÆĶó¹ÌÅÍ Çϳª·Î È£ÃâµÈ´Ù; ¿¹¿Ü ¹øÈ£ÀÎ int
.
target remote
¸í·É¾î¸¦ »ç¿ëÇÏ¿© Åë½ÅÀ» ¼³Á¤Çضó.
ÀÎÀڴ Ÿ°Ù ¸Ó½Å°ú Åë½ÅÇÏ´Â ¹æ¹ýÀ» °¡¸®Å²´Ù.--Á÷Á¢ ½Ã¸®¾ó ¶óÀο¡ ¿¬°áÇÏ´Â µð¹ÙÀ̽º À̸§À̳ª
TCP Æ÷Æ®(º¸Åë Ÿ°Ù ¸Ó½Å¿¡ ½Ã¸®¾ó ¶óÀÎÀ» °¡Áö°í ÀÖ´Â Å͹̳Π¼¹ö)¸¦ ÅëÇØ.
¿¹¸¦ µé¾î, `/dev/ttyb'¶ó´Â À̸§ÀÇ µð¹ÙÀ̽º¿¡ Á¢¼ÓÇÏ´Â ½Ã¸®¾ó ¶óÀÎÀ» »ç¿ëÇϱâ À§ÇØ:
target remote /dev/ttybTCP ¿¬°áÀ» »ç¿ëÇϱâ À§ÇØ,
host:port
ÇüÅÂÀÇ ÀÎÀÚ¸¦ »ç¿ëÇضó.
¿¹¸¦ µé¾î, manyfarms
¶ó´Â À̸§ÀÇ Å͹̳Π¼¹öÀÇ Æ÷Æ® 2828¿¡ ¿¬°áÇϱâ À§ÇØ:
target remote manyfarms:2828
Áö±Ý ¿©·¯ºÐÀº ¿ø°Ý ½Ã½ºÅÛÀ» °Ë»çÇÏ°í µ¥ÀÌÅ͸¦ ¹Ù²Ù°í step°ú continue¸¦ À§ÇØ ÀÏ¹Ý ¸í·É¾î ¸ðµÎ¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
¿ø°Ý ÇÁ·Î±×·¥À» ´Ù½Ã ½ÃÀÛÇÏ°í µð¹ö±ëÀ» ¸ØÃß±â À§ÇØ, detach
¸í·É¾î¸¦ »ç¿ëÇضó.
GDB°¡ ¿ø°Ý ÇÁ·Î±×·¥À» ±â´Ù¸±¶§´Â ¾ðÁ¦³ª, ¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÎÅÍ·´Æ® ¹®ÀÚ(C-C)¸¦ ŸÀÔÇÑ´Ù¸é, GDB´Â ÇÁ·Î±×·¥À» ¸ØÃß°Ô ÇÑ´Ù. ÀÌ°ÍÀº ¿ø°Ý ½Ã½ºÅÛÀÌ »ç¿ëÇÏ´Â Çϵå¿þ¾î¿Í ½Ã¸®¾ó µå¶óÀ̹öÀÇ ÀϺκп¡ ÀÇÁ¸ÇÏ¿© ¼º°øÇÒÁöµµ ½ÇÆÐÇÒÁöµµ ¸ð¸¥´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ ´Ù½Ã ÀÎÅÍ·´Æ® ¹®ÀÚ¸¦ ŸÀÌÇÎÇÑ´Ù¸é, GDB´Â ÀÌ ÇÁ·ÒÇÁÆ®¸¦ º¸¿©ÁØ´Ù:
Interrupted while waiting for the program. Give up (and stop debugging it)? (y or n)
¸¸ÀÏ ¿©·¯ºÐÀÌ y¸¦ ŸÀÌÇÎÇÑ´Ù¸é, GDB´Â ¿ø°Ý µð¹ö±ë ¼¼¼ÇÀ» ²÷´Â´Ù. (¸¸ÀÏ ¿©·¯ºÐÀÌ ³ªÁß¿¡ ´Ù½Ã ¿øÇÑ´Ù°í °áÁ¤ÇÑ´Ù¸é, ¿©·¯ºÐÀº ´Ù½Ã ¿¬°áÇϱâ À§ÇØ `target remote'¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.) ¸¸ÀÏ ¿©·¯ºÐÀÌ n¶ó°í ŸÀÌÇÎÇÑ´Ù¸é, GDB´Â waiting»óÅ·Π´Ù½Ã µ¹¾Æ°£´Ù.
GDB¿¡¼ Á¦°øÇÏ´Â stub ÆÄÀϵéÀº Ÿ°ÙÂÊÀÇ Åë½Å ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÑ´Ù. ±×¸®°í GDB ÂÊÀº GDB ¼Ò½º ÆÄÀÏ `remote.c'À» »ç¿ëÇÑ´Ù. º¸Åë, ¿©·¯ºÐÀº Åë½ÅÇϱâ À§ÇØ ÀÌ ¼ºê·çƾÀ» »ç¿ëÇÒ¼ö ÀÖÀ¸¸ç, ¼¼ºÎÀûÀÎ °ÍÀº ¹«½ÃÇضó. (¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÚ½ÅÀÇ stub ÆÄÀÏÀ» »ç¿ëÇÑ´Ù¸é, ¿©·¯ºÐÀº ¿©ÀüÈ÷ ¼¼ºÎÀûÀÎ °ÍÀº ¹«½ÃÇÒ¼ö ÀÖ´Ù: Á¸ÀçÇÏ´Â stubÆÄÀϵéÁß Çϳª·Î ½ÃÀÛÇضó. `sparc-stub.c'´Â Àß ±¸¼ºµÇ¾úÀ¸¸ç Àб⠽±´Ù)
±×·¯³ª, ¿©·¯ºÐÀº ÇÁ·ÎÅäÄÝ¿¡ °üÇØ ¾Ë¾Æ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.--¿¹¸¦ µé¾î, ¸¸ÀÏ Å¸°Ù ¸Ó½Å¿¡ ÇϳªÀÇ ½Ã¸®¾ó Åë½Å¸¸ ÀÖ´Ù¸é, ¿©·¯ºÐÀº ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ Æ¯º°ÇÑ ¹«¾ùÀΰ¡¸¦ ÇÏ±æ ¿øÇÑÁöµµ ¸ð¸¥´Ù.
¸ðµç GDB ¸í·É¾îµé°ú ÀÀ´äµéÀº checksumÀ» Æ÷ÇÔÇÑ ÆÐŶÀ¸·Î º¸³»Áø´Ù. ÆÐŶÀº ¹®ÀÚ `$'·Î ½ÃÀÛÇϸç `#'·Î ³¡³ª¸ç 2°³ÀÇ ¼ýÀÚ checksumÀÌ µÚµû¸¥´Ù.
$packet info#checksum
checksumÀº packet info ¹®ÀÚµéÀÇ ÇÕ modulo 256À¸·Î½á °è»êµÈ´Ù.
È£½ºÆ®³ª Ÿ°Ù ¸Ó½ÅÀÌ ÆÐŶÀ» ¹ÞÀ»¶§ ¿¹»óµÇ´Â ù ÀÀ´äÀº ½ÂÀÎÀÌ´Ù.; ´ÜÀÏ ºÐÀÚ, `+'(ÆÐŶÀ» ¿Ã¹Ù¸£°Ô ¹Þ¾Ò´Ù´Â °ÍÀ» °¡¸®Å°±â À§ÇØ)³ª `-'(ÀçÀü¼ÛÀ» ¿ä±¸Çϱâ À§ÇØ)
È£½ºÆ®(GDB)´Â ¸í·É¾î¸¦ º¸³»°í, Ÿ°Ù(ÇÁ·Î±×·¥°ú ÇÕÃÄÁø debugging stub)Àº ÀÀ´ä½Ã µ¥ÀÌÅ͸¦ º¸³½´Ù. Ÿ°Ù ¶ÇÇÑ ÇÁ·Î±×·¥ÀÌ ¸ØÃ⶧ µ¥ÀÌÅ͸¦ º¸³½´Ù.
¸í·É¾î ÆÐŶÀº ¸í·É¾îÀÇ Á¾·ù¸¦ ±¸º°Çϴ ù ¹®ÀÚ·Î ±¸º°µÈ´Ù.
ÇöÀç Áö¿øµÇ´Â ¸í·É¾î ¸î°³°¡ ÀÖ´Ù.(`gdb/remote.c.'¿¡ ¸í·É¾îÀÇ ¿ÏÀüÇÑ ¸®½ºÆ®°¡ ÀÖ´Ù.)
g
G
maddr,count
Maddr,count:...
c
caddr
s
saddr
k
?
T
¸¸ÀÏ ¿©·¯ºÐÀÌ ½Ã¸®¾ó ¿¬°á½Ã ¹®Á¦Á¡À» °¡Áö°í ÀÖ´Ù¸é, ¿©·¯ºÐÀº ¸í·É¾î set remotedebug
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
ÀÌ°ÍÀº ´Ù½Ã º¸³½ ¸ðµç ÆÐŶÀ» ¿ø°Ý ¸Ó½Å¿¡ ½Ã¸®¾ó ¶óÀÎÀ» ÅëÇؼ º¸°íÇϵµ·Ï GDB¸¦ ¸¸µç´Ù.
ÆÐŶ µð¹ö±ë Á¤º¸´Â GDB Ç¥ÁØ Ãâ·Â ½ºÆ®¸²¿¡ Ãâ·ÂµÈ´Ù. set remotedebug off
´Â
ÀÌ°ÍÀ» ²ô¸ç show remotedebug
´Â ÇöÀç »óŸ¦ º¸¿©ÁØ´Ù.
gdbserver
ÇÁ·Î±×·¥ »ç¿ë
gdbserver
Àº Unix °°Àº ½Ã½ºÅÛÀ» À§ÇÑ Á¦¾î ÇÁ·Î±×·¥À̸ç target remote
¸¦ ÅëÇØ ¿ø°Ý GDB·Î ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡ ¿¬°áÇϴ°ÍÀ» Çã¿ëÇÑ´Ù.
--±×·¯³ª º¸Åë debugging stub¿¡ ¸µÅ· ¾øÀÌ.
gdbserver
´Â debugging stub¸¦ ¿ÏÀüÈ÷ ´ë½ÅÇÏÁö ¸øÇÑ´Ù. ¿Ö³ÄÇϸé ÀÌ°ÍÀº
GDB ÀÚü°¡ ÇÏ´Â °Í°ú °°Àº OS ±â´ÉÀ» ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù.
»ç½Ç, ¿ø°Ý GDB¿¡ ¿¬°á Çϱâ À§ÇØ gdbserver
¸¦ µ¹¸±¼ö ÀÖ´Â ½Ã½ºÅÛÀº ·ÎÄÿ¡¼ GDB¸¦ µ¹¸±¼ö ÀÖ´Ù.
±×·³¿¡µµ ºÒ±¸ÇÏ°í, gdbserver
´Â °¡²û À¯¿ëÇÏ´Ù. ¿Ö³ÄÇϸé GDB ÀÚüº¸´Ù
´õ ÀÛÀº ÇÁ·Î±×·¥À̱⠶§¹®ÀÌ´Ù. GDB ¸ðµÎ¸¦ Æ÷ÆÃÇÏ´Â °Íº¸´Ù ½±´Ù.
±×·¡¼ ¿©·¯ºÐÀº gdbserver
¸¦ »ç¿ëÇÏ¿© »õ·Î¿î ½Ã½ºÅÛ¿¡¼ º¸´Ù »¡¸®
½ÃÀÛÇÒ¼ö ÀÖ´Ù.
°á·ÐÀûÀ¸·Î, ¸¸ÀÏ ¿©·¯ºÐÀÌ real-time ½Ã½ºÅÛÀ» À§ÇÑ Äڵ带 °³¹ßÇÑ´Ù¸é,
¿©·¯ºÐÀº real-time ÀÛµ¿°ú °ü·ÃµÈ ±³È¯Àº ¿¹¸¦ µé¾î, Å©·Î½º-ÄÄÆÄÀÏó·³ ´Ù¸¥ ½Ã½ºÅÛ¿¡¼µµ
°¡´ÉÇÏ°Ô °³¹ßÇÏ´Â ÀÛ¾÷ ¸¸Å Æí¸®ÇÏ°Ô ¸¸µç´Ù´Â °ÍÀ» ¹ß°ßÇÒ °ÍÀÌ´Ù.
¿©·¯ºÐÀº µð¹ö±ëÀ» À§ÇÑ ºñ½ÁÇÑ ¼±ÅÃÀ» ¸¸µé±â À§ÇØ gdbserver
¸¦ »ç¿ëÇÒ¼ö
ÀÖ´Ù.
GDB¿Í gdbserver
´Â Ç¥ÁØ GDB ¿ø°Ý ½Ã¸®¾ó ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© ½Ã¸®¾ó
¶óÀÎÀ̳ª TCP ¿¬°áÀ» ÅëÇØ Åë½ÅÇÑ´Ù.
gdbserver
´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ ½Éº¼ Å×À̺íÀ» ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â´Ù.
±×·¡¼ ¿©·¯ºÐÀº °ø°£ÀÌ ÇÊ¿äÇÏ´Ù¸é ÇÁ·Î±×·¥À» strip ÇÒ¼ö ÀÖ´Ù.
È£½ºÆ® ½Ã½ºÅÛÀÇ GDB´Â ½Éº¼ ¸ðµÎ¸¦ °¡Áö°í ÀÖ´Ù.
¼¹ö¸¦ »ç¿ëÇϱâ À§ÇØ, ¿©·¯ºÐÀº GDB¿Í Åë½ÅÇÏ´Â ¹æ¹ýÀ» ¸»ÇØ¾ß ÇÑ´Ù;
ÇÁ·Î±×·¥ÀÇ À̸§; ±×¸®°í ÇÁ·Î±×·¥À» À§ÇÑ ÀÎÀÚµé.
¹®¹ýÀº:
target> gdbserver comm program [ args ... ]comm´Â µð¹ÙÀ̽º ¸í(½Ã¸®¾ó ¶óÀÎÀ» »ç¿ëÇϱâ À§ÇØ)À̳ª TCP È£½ºÆ® À̸§ ±×¸®°í Æ÷Æ® ¹øÈ£Áß ÇϳªÀÌ´Ù. ¿¹¸¦ µé¾î, ÀÎÀÚ `foo.txt'¸¦ °¡Áø Emacs¸¦ µð¹ö±ë Çϱâ À§Çؼ ±×¸®°í ½Ã¸®¾ó Æ÷Æ® `/dev/com1'·Î GDB¿Í Åë½ÅÇϱâ À§ÇØ:
target> gdbserver /dev/com1 emacs foo.txt
gdbserver
´Â Åë½ÅÇϱâ À§ÇØ È£½ºÆ® GDB¸¦ À§ÇØ ±â´Ù¸°´Ù.
½Ã¸®¾ó ¶óÀÎ ´ë½Å TCP ¿¬°áÀ» »ç¿ëÇϱâ À§ÇØ:
target> gdbserver host:2345 emacs foo.txtÀü ¿¹¿Í À¯ÀÏÇÑ Â÷ÀÌÁ¡Àº TCP¸¦ ÅëÇØ È£½ºÆ® GDB¿ÍÀÇ Åë½ÅÀ» ÁöÁ¤Çϴ ù ÀÎÀÚÀÌ´Ù. `host:2345' ÀÎÀÚ´Â
gdbserver
´Â ¸Ó½Å `host'¿¡¼
·ÎÄÝ TCP Æ÷Æ® 2345¿¡ TCP ¿¬°áÀ» ±â´ëÇÑ´Ù´Â ÀǹÌÀÌ´Ù.
(ÇöÀç, `host' ºÎºÐÀº ¹«½ÃµÈ´Ù.) ¿©·¯ºÐÀº Ÿ°Ù ½Ã½ºÅÛ¿¡¼ ÀÌ¹Ì »ç¿ëµÇ°í
ÀÖ´Â TCP Æ÷Æ®°¡ ¾Æ´Ï¶ó¸é ¿øÇÏ´Â Æ÷Æ® ¹øÈ£ ¾î¶²°ÍÀ̵çÁö ¼±ÅÃÇÒ¼ö ÀÖ´Ù.
(¿¹¸¦ µé¾î, 23
´Â telnet
¸¦ À§ÇØ ¿¹¾àµÇ¾î ÀÖ´Ù.)
(3)
¿©·¯ºÐÀº È£½ºÆ® GDB target remote
¸í·É¾î·Î °°Àº Æ÷Æ® ¹øÈ£¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
gdbserver
·Î Åë½ÅÀ» ¼³Á¤Çϱâ À§ÇØ target
remote
¸¦ »ç¿ëÇضó.
ÀÎÀÚ´Â ÀåÄ¡ À̸§À̰ųª host:PORT
ÇüÅÂÀÇ TCP Æ÷Æ® ±â¼úÀÚÀÌ´Ù.
¿¹¸¦ µé¾î:
(gdb) target remote /dev/ttyb½Ã¸®¾ó ¶óÀÎ `/dev/ttyb'·Î ¼¹ö¿Í Åë½ÅÇÑ´Ù. ±×¸®°í
(gdb) target remote the-target:2345È£½ºÆ® `the-target'ÀÇ Æ÷Æ® 2345¿Í TCP ¿¬°áÀ» ÅëÇØ Åë½ÅÇÑ´Ù. TCP ¿¬°áÀ» À§ÇØ, ¿©·¯ºÐÀº
target remote
¸í·É¾î¸¦ »ç¿ëÇϱ⠾ռ gdbserver
¸¦
½ÃÀÛÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¿©·¯ºÐÀº È£½ºÆ® ½Ã½ºÅÛ¿¡ ÀÇÁ¸ÇÏ´Â ÅؽºÆ® ¿¡·¯¸¦ °¡Áú °ÍÀÌ´Ù. ±×·¯³ª
º¸ÅëÀº `Connection refused'¿Í °°Àº °ÍÀ» º»´Ù.
gdbserve.nlm
ÇÁ·Î±×·¥ »ç¿ëÇϱâ
gdbserve.nlm
´Â NetWare ½Ã½ºÅÛÀ» À§ÇÑ Á¦¾î ÇÁ·Î±×·¥À̸ç target remote
¸¦
ÅëÇÏ¿© ¿ø°Ý GDB¿Í ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥À» ¿¬°áÇÏ´Â °É Çã¿ëÇÑ´Ù.
GDB¿Í gdbserve.nlm
´Â Ç¥ÁØ GDB ¿ø°Ý ½Ã¸®¾ó ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿©,
½Ã¸®¾ó ¶óÀÎÀ» ÅëÇÏ¿© Åë½ÅÇÑ´Ù.
gdbserve.nlm
´Â ¿©·¯ºÐ ÇÁ·Î±×·¥ÀÇ ½Éº¼ Å×À̺íÀÌ ÇÊ¿äÇÏÁö ¾Ê´Â´Ù. ±×·¡¼ ¿©·¯ºÐÀº
°ø°£À» ÀúÀåÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é ÇÁ·Î±×·¥À» stripÇÒ¼ö ÀÖ´Ù.
È£½ºÆ® ½Ã½ºÅÛ¿¡¼ GDB´Â ¸ðµç ½Éº¼ Çڵ鸵À» ÇÑ´Ù.
¼¹ö¸¦ »ç¿ëÇϱâ À§ÇØ, ¿©·¯ºÐÀº GDB¿Í Åë½ÅÇϱâ À§ÇÑ ¹æ¹ýÀ» ¸»ÇÒ¼ö ÀÖ´Ù; ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ À̸§;
±×¸®°í ÇÁ·Î±×·¥À» À§ÇÑ ÀÎÀÚµé.
¹®¹ýÀº:
load gdbserve [ BOARD=board ] [ PORT=port ] [ BAUD=baud ] program [ args ... ]board¿Í port´Â ½Ã¸®¾ó ¶óÀÎÀ» ÁöÁ¤ÇÑ´Ù; baud ´Â ¿¬°á¿¡¼ »ç¿ëÇÏ´Â baud ºñÀ²À» °¡¸®Å²´Ù. port¿Í node´Â 0ÀÌ ±âº»À̸ç baud´Â 9600 bps°¡ ±âº» °ªÀÌ´Ù. ¿¹¸¦ µé¾î, ÀÎÀÚ `foo.txt'¸¦ °¡Áø Emacs¸¦ µð¹ö±ë Çϱâ À§ÇØ ±×¸®°í ½Ã¸®¾ó Æ÷Æ® ¹øÈ£ 2³ª 19200 bps ¿¬°áÀ» »ç¿ëÇÏ´Â º¸µå 1·Î GDB¿Í Åë½ÅÇϱâ À§ÇÏ¿©:
load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
gdbserve.nlm
·Î Åë½ÅÀ» ¼³Á¤Çϱâ À§ÇØ target remote
¸¦ »ç¿ëÇضó.
ÀÎÀÚ´Â ÀåÄ¡ À̸§(`/dev/ttyb' ó·³, ½Ã¸®¾ó ÀåÄ¡)ÀÌ´Ù.
¿¹¸¦ µé¾î:
(gdb) target remote /dev/ttyb½Ã¸®¾ó ¶óÀÎ `/dev/ttyb'·Î ¼¹ö¿Í Åë½ÅÇÑ´Ù.
Nindy´Â Intel 960 Ÿ°Ù ½Ã½ºÅÛÀ» À§ÇÑ ROM Monitor ÇÁ·Î±×·¥ÀÌ´Ù. GDB°¡ Nindy¸¦ »ç¿ëÇÏ´Â ¿ø°Ý Intel 960À» Á¦¾îÇϱâ À§ÇØ ¼³Á¤µÇ¾úÀ»¶§, ¿©·¯ºÐÀº ¸î¸î ¹æ¹ýÀ¸·Î 960¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀ» GDB¿¡°Ô ¸»ÇÒ¼ö ÀÖ´Ù.
target
À» »ç¿ëÇÏ¿©.
Ÿ°ÙÀ» °ü¸®Çϱâ À§ÇÑ ¸í·É¾îµé ¼½¼ÇÀ» ÂüÁ¶Çضó.
¸¸ÀÏ ¿©·¯ºÐÀÌ ¾î¶² ¸í·É¾î ¶óÀÎ ¿É¼ÇµéÀ» »ç¿ëÇÏÁö ¾Ê°í gdb
¸¦ ½ÃÀÛÇÑ´Ù¸é,
¿©·¯ºÐÀº ÀϹÝÀûÀÎ GDB ÇÁ·ÒÇÁÆ®¿¡ µµÂøÇϱâ Àü¿¡ »ç¿ëÇÒ ½Ã¸®¾ó Æ÷Æ®°¡ ÇÁ·ÒÇÁÆ® µÈ´Ù.:
Attach /dev/ttyNN -- specify NN, or "quit" to quit:
Á¢¹Ì»ç(`/dev/tty' ´ÙÀ½)°¡ »ç¿ëÇÏ±æ ¿øÇÏ´Â ½Ã¸®¾ó Æ÷Æ®¸¦ ½Äº°ÇÏ´Â °ÍÀº ¹«¾ùÀ̵çÁö ÇÁ·ÒÇÁÆ®·Î ÀÀ´äÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ¼±ÅÃÇÑ´Ù¸é, ¿©·¯ºÐÀº ºó ¶óÀÎÀ» °¡Áö°í ÇÁ·ÒÇÁÆ®¿¡ ÀÀ´äÇÏ¿© Nindy ¿¬°áÀÌ ¾øÀ̵µ ½ÃÀÛÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀÌ ÀÌ·¸°Ô ÇϵçÁö ÈÄ¿¡ Nindy¿¡ ¿¬°áÇÏ±æ ¿øÇÑ´Ù¸é, target
¸¦ »ç¿ëÇضó.
(Ÿ°ÙÀ» °ü¸®Çϱâ À§ÇÑ ¸í·É¾îµé ¼½¼ÇÀ» ÂüÁ¶Çضó.)
À̰͵éÀº ºÎÂøµÈ Nindy-960 º¸Æ®¸¦ °¡Áö°í GDB ¼¼¼ÇÀ» ½ÃÀÛÇϱâ À§ÇÑ ½ÃÀÛ ¿É¼ÇµéÀÌ´Ù.:
-r port
tty
(e.g. `-r a')¸¦ À§ÇÑ ´ÜÀÏ Á¢¹Ì»ç.
-O
°æ°í: ¸¸ÀÏ ¿©·¯ºÐÀÌ `-O'¸¦ ÁöÁ¤ÇÏ¿´´Ù¸é, ±×·¯³ª »õ·Î¿î ÇÁ·ÎÅäÄÝÀ» ¿¹»óÇϴ Ÿ°Ù ½Ã½ºÅÛ¿¡ Á¢¼ÓÀ» ½ÃµµÇÏ°í, ¿¬°áÀÌ ½ÇÆÐÇÏ¸é ½ºÇÇÆ®°¡ À߸ø ¸ÂÃß¾îÁ® Àִ°Íó·³ º¸ÀδÙ. GDB´Â ¸î¸î ´Ù¸¥ ¶óÀÎ ¼Óµµ·Î ´Ù½Ã ¿¬°áÇϱâ À§ÇØ ½ÃµµÇÑ´Ù. ¿©·¯ºÐÀº ÀÎÅÍ·´Æ®·Î ÀÌ Ã³¸®¸¦ ±×¸¸µÑ¼ö ÀÖ´Ù.
-brk
BREAK
½ÅÈ£¸¦ º¸³»¾ß¸¸ ÇÑ´Ù.
°æ°í: ¸¹Àº Ÿ°Ù ½Ã½ºÅÛÀº ÀÌ°ÍÀ» ¿ä±¸ÇÏ´Â Çϵå¿þ¾î¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù; ±×°ÍÀº ¸î¸î º¸µå¿¡¼¸¸ ÀÛµ¿ÇÑ´Ù.
Ç¥ÁØ `-b' ¿É¼ÇÀº ½Ã¸®¾ó Æ÷Æ®¿¡¼ »ç¿ëµÇ´Â ¶óÀÎ ½ºÇǵ带 Á¦¾îÇÑ´Ù.
reset
GDB´Â a29k ÇÁ·Î¼¼¼ Æйи®¸¦ µð¹ö±ëÇϱâ À§ÇØ AMDÀÇ UDI("Universal Debugger Interface") ÇÁ·ÎÅäÄݸ¦ Áö¿øÇÑ´Ù.
MiniMON ¸ð´ÏÅÍ¿¡¼ µ¹¾Æ°¡´Â AMD Ÿ°ÙÀ» °¡Áö°í ÀÌ ¼³Á¤À» »ç¿ëÇϱâ À§ÇØ, ¿©·¯ºÐÀº
ÁöºÒÇÏ´Â °Í ¾øÀÌ AMD¿¡¼ ÀÌ¿ëÇÒ¼ö ÀÖ´Â ÇÁ·Î±×·¥ MONTIP
°¡ ÇÊ¿äÇÏ´Ù.
¿©·¯ºÐÀº ¶ÇÇÑ AMD¿¡¼ ÀÌ¿ëÇÒ¼ö ÀÕ´Â UDI-conformant a29k ½Ã¹Ä·¹ÀÌÅÍ ÇÁ·Î±×·¥ ISSTIP
¸¦ °¡Áö°í GDB¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
target udi keyword
AMD´Â DOS ±â¹Ý ¸ðƼ³Ê ÇÁ·Î±×·¥ EBMON
°ú ÇÔ²² PC¿¡ ¸Â´Â a29k °³¹ß º¸µå¸¦ ¹èÆ÷ÇÑ´Ù.
°£´ÜÈ÷ ¸»ÇØ, ÀÌ °³¹ß ½Ã½ºÅÛÀº "EB29K"¶ó ºÒ¸°´Ù.
Unix ½Ã½ºÅÛ¿¡¼ GDB¸¦ ÀÌ¿ëÇÏ¿© EB29K º¸µå¿¡ ÀÖ´Â ÇÁ·Î±×·¥À» µ¹¸®±â À§Çؼ, ¿©·¯ºÐÀº
¿ì¼± PC¿Í À¯´Ð½º ½Ã½ºÅÛÀÇ ½Ã¸®¾ó Æ÷Æ®¸¦ ¿¬°áÇØ¾ß ÇÑ´Ù.
´ÙÀ½¿¡¼ ¿ì¸®´Â ¿©·¯ºÐÀÌ PCÀÇ `COM1'Æ÷Æ®¿Í À¯´Ð½º ½Ã½ºÅÛÀÇ `/dev/ttya'¸¦ ÄÉÀ̺íÀ» ¿¬°áÇß´Ù°í °¡Á¤ÇÑ´Ù.
´ÙÀ½ ´Ü°è´Â PCÀ§ÀÇ DOS¿¡¼ ´ÙÀ½À» ÇÏ¿© PC Æ÷Æ®¸¦ ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù.:
C:\> MODE com1:9600,n,8,1,none
ÀÌ ¿¹Á¦--MS DOS 4.0½Ã½ºÅÛ¿¡¼--´Â PC Æ÷Æ®¸¦ 9600 bps·Î, Æи®Æ¼ ¾ø°í, 8 µ¥ÀÌÅÍ ºñÆ®, 1 stop ºñÆ® ±×¸®°í "retry" Àº ¾ø´Â°ÍÀ¸·Î ¼³Á¤ÇÑ´Ù.; ¿©·¯ºÐÀº Unix ÂÊ Åë½ÅÀ» ¼³Á¤ÇÒ¶§ Åë½Å ÀÎÀÚ¸¦ ÀÏÄ¡½ÃÄÑ¾ß ÇÑ´Ù.
PC Á¦¾î¸¦ ½Ã¸®¾ó ¶óÀÎÀÇ Unix ÂÊ¿¡ ÁÖ±âÀ§ÇØ, DOS Äֿܼ¡¼ ´ÙÀ½À» ŸÀÌÇÎÇضó.:
C:\> CTTY com1
(ÈÄ¿¡, ¸¸ÀÏ ¿©·¯ºÐÀÌ DOS ÄַܼΠÁ¦¾î¸¦ °¡Á®¿À±æ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº ¸í·É¾î CTTY con
¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù-- ±×·¯³ª ¿©·¯ºÐÀº Á¦¾î¸¦ °¡Áö°í ÀÖ´Â ÀåÄ¡·Î º¸³»¾ß¸¸ ÇÑ´Ù.
¿¹Á¦¿¡¼ `COM1' ½Ã¸®¾ó ¶óÀÎÀ¸·Î)
Unix È£½ºÆ®¿¡¼, PC¿Í Åë½ÅÇϱâ À§ÇØ tip
³ª cu
°°Àº Åë½Å
ÇÁ·Î±×·¥À» »ç¿ëÇضó; ¿¹·Î,
cu -s 9600 -l /dev/ttya
cu
¿É¼ÇÀº ¶óÀÎ ½ºÇÇµå ±×¸®°í »ç¿ëÇÒ ½Ã¸®¾ó Æ÷Æ® ÁöÁ¤ÇÏ´Â°É º¸¿©ÁØ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ´ë½Å¿¡ tip
¸¦ »ç¿ëÇÑ´Ù¸é, ¿©·¯ºÐÀÇ ¸í·É¾î ¶óÀÎÀº ´ÙÀ½°ú
°°´Ù:
tip -9600 /dev/ttya
¿©·¯ºÐÀÇ ½Ã½ºÅÛÀº ¿ì¸®°¡ tip
¿¡ ´ëÇÑ ÀÎÀÚ·Î º¸¿©ÁØ `/dev/ttya'¿Í
´Ù¸¥ À̸§À» ¿ä±¸ÇÒÁö ¸ð¸¥´Ù. »ç¿ëÇÒ Æ÷Æ®¸¦ Æ÷ÇÔÇÏ¿© Åë½Å ÆĶó¹ÌÅ͵éÀº
"remote" ±â¼ú ÆÄÀÏ¿¡ ÀÖ´Âtip
ÀÎÀÚ¿Í °ü·ÃÀÌ ÀÖ´Ù.--º¸Åë ½Ã½ºÅÛ Å×À̺í
`/etc/remote'.
tip
³ª cu
¿¬°á »ç¿ëÀº, DOS ÀÛ¾÷ µð·ºÅ丮¸¦ ¿©·¯ºÐÀÇ a29k
ÇÁ·Î±×·¥ÀÇ º¹»çº»À» Æ÷ÇÔÇÏ´Â µð·ºÅ丮·Î ¹Ù²Û´Ù. ±×¸®°í PC ÇÁ·Î±×·¥ EBMON
¸¦
½ÃÀÛÇÑ´Ù.(EB29K Á¦¾î ÇÁ·Î±×·¥Àº AMD¿¡ ÀÇÇØ ¿©·¯ºÐÀÇ º¸µå¿¡ Á¦°øµÈ´Ù.) ¿©·¯ºÐÀº
¿©·¯ºÐÀº ´ÙÀ½°ú ºñ½ÁÇÏ°Ô EBMON
ÀÇ ÃʱâÈ Ãâ·ÂÀ» º¸¾Æ¾ß ÇÑ´Ù.
±×¸®°í EBMON
ÇÁ·ÒÇÁÆ® `#'·Î ³¡³´Ù.
C:\> G: G:\> CD \usr\joe\work29k G:\USR\JOE\WORK29K> EBMON Am29000 PC Coprocessor Board Monitor, version 3.0-18 Copyright 1990 Advanced Micro Devices, Inc. Written by Gibbons and Associates, Inc. Enter '?' or 'H' for help PC Coprocessor Type = EB29K I/O Base = 0x208 Memory Base = 0xd0000 Data Memory Size = 2048KB Available I-RAM Range = 0x8000 to 0x1fffff Available D-RAM Range = 0x80002000 to 0x801fffff PageSize = 0x400 Register Stack Size = 0x800 Memory Stack Size = 0x1800 CPU PRL = 0x3 Am29027 Available = No Byte Write Available = Yes # ~.
±×¸®°í cu
³ª tip
ÇÁ·Î±×·¥(EBMON
ÇÁ·ÒÇÁÆ®¿¡¼
~.
¸¦ ŸÀÌÇÎÇÏ¿© ¿¹Á¦¿¡¼ ÇàÇØÁ³´Ù)À» Á¾·áÇÑ´Ù.
EBMON
´Â ÀÛµ¿À» °è¼ÓÇϸç GDB¿¡ ÀΰèÇϱâ À§ÇØ ÁغñÇÑ´Ù.
ÀÌ ¿¹Á¦¿¡¼, ¿ì¸®´Â °°Àº 29k ÇÁ·Î±×·¥ÀÌ PC¿Í À¯´Ð½º ½Ã½ºÅÛ¿¡ ÀÖ´Ù´Â °ÍÀ» È®½ÇÈ÷
Çϱâ À§ÇØ °¡Àå Æí¸®ÇÑ ¹æ¹ýÀ» »ç¿ëÇß´Ù; PC/NFS ¿¬°áÀº À¯´Ð½º È£½ºÆ®¿¡ ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛ Ã³·³
PC À§¿¡ "drive G:
"¸¦ ¼³Á¤ÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ PC/NFS³ª µÎ ½Ã½ºÅÛÀ» ¿¬°áÇÒ¼ö ÀÖ´Â °ÍÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù¸é, ¿©·¯ºÐÀº À¯´Ð½º ½Ã½ºÅÛ¿¡¼ PC·Î 29k ÇÁ·Î±×·¥À» °¡Áú¼ö ÀÖ´Â ´Ù¸¥ ¹æ¹ýÀ» °áÁ¤ÇØ¾ß ÇÑ´Ù--¾Æ¸¶µµ Ç÷ÎÇÇ-µð½ºÅ© Àü´Þ; GDB´Â ½Ã¸®¾ó ¶óÀÎÀ¸·Î ´Ù¿î·Îµå¸¦ ÇÏÁö ¾Ê´Â´Ù.
¸¶Áö¸·À¸·Î, À¯´Ð½º ½Ã½ºÅÛ¿¡ ÀÖ´Â ¿©·¯ºÐÀÇ 29kÀÇ À̹ÌÁö¸¦ Æ÷ÇÔÇÏ´Â µð·ºÅ丮·Î
cd
ÇÏ°í GDB¸¦ ½ÃÀÛÇضó--¿©·¯ºÐÀÇ 29k ÇÁ·Î±×·¥ÀÇ À̸§À» ÀÎÀÚ·Î ÁöÁ¤ÇÏ¿©:
cd /usr/joe/work29k gdb myfoo
Áö±Ý ¿©·¯ºÐÀº target
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù:
target amd-eb /dev/ttya 9600 MYFOO
ÀÌ ¿¹Á¦¿¡¼, À¯¸®´Â ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥Àº `myfoo'¶ó ºÒ¸®´Â ÆÄÀÏ¿¡ ÀÖ´Ù°í
°¡Á¤ÇÑ´Ù.
target amd-eb
ÀÇ ¸¶Áö¸· ÀÎÀÚ·Î ÁÖ¾îÁø ÆÄÀÏ À̸§Àº DOS¿¡ ³ªÅ¸³ ÇÁ·Î±×·¥ÀÇ
À̸§À̾î¾ß ÇÑ´Ù. ¿ì¸® ¿¹Á¦¿¡¼, ÀÌ°ÍÀº ´Ü¼øÈ÷ MYFOO
ÀÌÁö¸¸, ÀϹÝÀûÀ¸·Î
±×°ÍÀº DOS °æ·Î¸¦ Æ÷ÇÔÇÒ¼ö ÀÖÀ¸¸ç Unix ÂÊ¿¡¼ À̸§°ú ºñ½ÁÇÏÁö ¾Ê´Â Àü´Þ ¸ÞÄ«´ÏÁò¿¡
ÀÇÁ¸ÇÑ´Ù.
À̽ÃÁ¡¿¡¼, ¿©·¯ºÐÀº ¿©·¯ºÐÀÌ ¿øÇÏ´Â ¾î¶² breakpoint¸¦ ¼³Á¤ÇÒ¼ö ÀÖ´Ù; ¿©·¯ºÐÀÌ 29k
º¸µå¿¡¼ µ¹¾Æ°¡´Â ÇÁ·Î±×·¥À» º¸±æ ¿øÇÑ´Ù¸é, GDB ¸í·É¾î run
¸¦ »ç¿ë
Çضó.
¿ø°Ý ÇÁ·Î±×·¥ µð¹ö±ëÀ» ¸ØÃß°Ô Çϱâ À§ÇØ, GDB detach
¸í·É¾î¸¦ »ç¿ëÇضó.
PCÀÇ Á¦¾î¸¦ ÄַܼΠ¸®ÅÏÇϱâ À§ÇØ, GDB ¼¼¼ÇÀ» ¸¶Ä£ÈÄ EBMON
¿¡ ¿¬°áÇϱâ
À§ÇØ ´Ù½Ã tip
³ª cu
¸¦ »ç¿ëÇضó.
¿©·¯ºÐÀº EBMON
¸¦ ²ô±â À§ÇØ ¸í·É¾î q
¸¦ ŸÀÔÇÒ¼ö ÀÖ´Ù.
±×¸®°í Á¦¾î¸¦ DOS ¸í·É¾î ¶óÀÎ ÀÎÅÍÇÁ¸®ÅÍ¿¡ ¸®ÅÏÇÑ´Ù.
ÁÖ DOS Äֿܼ¡ ¸í·É¾î ÀÔ·ÂÀ» ¹ÝȯÇϱâ À§ÇØ CTTY con
¸¦ ŸÀÌÇÎÇضó.
±×¸®°í tip
³ª cu
¸¦ ¸¶Ä¡±â À§ÇØ ~.¸¦
ŸÀÌÇÎÇضó.
target amd-eb
¸í·É¾î´Â ÇöÀç ÀÛ¾÷ µð·ºÅ丮¿¡ ¿¬°á½Ã ¹®Á¦Á¡µéÀ» µð¹ö±ë
Çϴµ¥ µ½±â À§ÇØ ÆÄÀÏ `eb.log'¸¦ ¸¸µç´Ù.
`eb.log'´Â º¸³»´Â ¸í·É¾î¿¡ ´ëÇÑ ¿¡ÄÚ¸¦ Æ÷ÇÔÇÏ¿© EBMON
¿¡¼
³ª¿À´Â ¸ðµç°ÍÀ» ´Ù ±â·ÏÇÑ´Ù.
´Ù¸¥ À©µµ¿ì â¿¡¼ ÀÌÆÄÀÏ¿¡ `tail -f'¸¦ µ¹¸®¸é EBMON
¿¡¼
¹ß»ýÇÏ´Â ¹®Á¦Á¡À̳ª PCÂÊ ¿¬°á¿¡¼ ¿¹»óÄ¡ ¸øÇÑ À̺¥Æ®¸¦ ÀÌÇØÇϴµ¥ µµ¿ÍÁØ´Ù.
ST2000À» È£½ºÆ® ½Ã½ºÅÛ¿¡ ¿¬°áÇϱâ À§Çؼ´Â Á¦Á¶¾÷üÀÇ ¸Þ´º¾óÀ» ÂüÁ¶Çضó. ÀÏ´Ü ST2000À» ¹°¸®ÀûÀ¸·Î ¿¬°áÇÏ°í, ¿©·¯ºÐÀº ÀÛµ¿ÇÒ¼ö ÀÖ´Ù: To connect your ST2000 to the host system, see the manufacturer's manual. Once the ST2000 is physically attached, you can run:
target st2000 dev speed
µð¹ö±ë ȯ°æÀ¸·Î ¼³Á¤ÇÑ´Ù. dev´Â `/dev/ttya'ó·³, º¸Åë ½Ã¸®¾ó ¶óÀÎÀ» ÅëÇØ ST2000¿¡ ¿¬°áÇÏ´Â ½Ã¸®¾ó ÀåÄ¡ÀÇ À̸§ÀÌ´Ù.
¿©·¯ºÐÀº ¹®Á¢ hostname:portnumber
À» »ç¿ëÇÏ¿©
TCP ¿¬°á(¿¹¸¦ µé¾î, ½Ã¸®¾ó ¶óÀÎÀ» Å͹̳ΠconcentratorÀ» ÅëÇØ ¿¬°áÇϱâ À§ÇØ)·Î½á dev¸¦ ÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
load
¿Í attach
¸í·É¾î´Â ÀÌ Å¸°Ù¿¡¼ Á¤ÀǵǾî ÀÖÁö ¾Ê´Ù;
¿©·¯ºÐÀº ÇÁ·Î±×·¥À» Ç¥ÁØ ÀÛµ¿ ó·³ ST2000¿¡ ·ÎµåÇØ¾ß ÇÑ´Ù.
GDB´Â ºÐ¸®Çؼ µð¹ö±ë Á¤º¸(½Éº¼)¿Í È£½ºÆ® ÄÄÇ»ÅÍ¿¡¼ ÀÌ¿ëÇÒ¼ö ÀÖ´Â ÇÁ·Î±×·¥ÀÇ µð¹ö±ë
Á¤º¸¸¦ Àд´Ù.
ÀÌµé º¸Á¶ GDB ¸í·É¾î´Â ST2000 ȯ°æ¿¡¼ ¿©·¯ºÐÀ» µµ¿ÍÁØ´Ù.:
st2000 command
connect
GDB´Â Unix È£½ºÆ®¿¡¼ ³×Æ®¿÷»ó¿¡¼ µ¹¾Æ°¡°í ÀÖ´Â VxWorks Ÿ°ÙÀÇ Å½ºÅ©¸¦ spawn ½ÃÅ°°í
µð¹ö±ë½ÃÅ°´Â°Å¸¦ °¡´ÉÇÏ°Ô ÇØÁØ´Ù.
VxWorks ½©¿¡¼ spawnµÇ¾î ÀÌ¹Ì ÀÛµ¿ÁßÀΠŽºÅ©µµ µð¹ö±ëÇÒ¼ö ÀÖ´Ù.
GDB´Â Unix È£½ºÆ®¿Í VxWorks Ÿ°Ù¿¡¼ µ¹¾Æ°¡´Â Äڵ带 »ç¿ëÇÑ´Ù.
ÇÁ·Î±×·¥ gdb
´Â À¯´Ð½º È£½ºÆ®¿¡¼ ¼³Ä¡µÇ°í ½ÇÇàµÈ´Ù.
(È£½ºÆ®¿¡¼ µð¹ö±ë ÇÁ·Î±×·¥À» À§ÇØ GDB¿Í ±¸º°µÇ¾î vxgdb
¶ó´Â À̸§À¸·Î ¼³Ä¡µÈ´Ù.)
VxWorks-timeout args
vxworks-timeout
¿É¼ÇÀ» Áö¿øÇÑ´Ù.
ÀÌ ¿É¼ÇÀº À¯Àú¿¡ ÀÇÇØ ¼³Á¤µÇ¸ç args´Â GDB°¡ rpc ÀÀ´äÀ» ±â´Ù¸®´Â Ãʸ¦ ³ªÅ¸³½´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÇ VxWorks Ÿ°ÙÀÌ ´À¸° ¼ÒÇÁÆ®¿þ¾î ½Ã¹Ä·¹ÀÌÅͳª thin ³×Æ®¿÷ ¶óÀÎÀÇ ¹Ý´ëÂÊÀ̶ó¸é
¿©·¯ºÐÀº ÀÌ°ÍÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.
VxWorks¿¡ ¿¬°á½Ã ´ÙÀ½ Á¤º¸°¡ ¸Å´º¾ó¿¡ ÀÖ¾ú´Ù; VxWorksÀÇ »õ·Î¿î ¸±¸®Áî´Â ¼öÁ¤µÈ ¸Å´º¾óÀ» »ç¿ëÇÑ´Ù.
To use GDB with VxWorks, you must rebuild your VxWorks kernel
to include the remote debugging interface routines in the VxWorks
library `rdb.a'. To do this, define INCLUDE_RDB
in the
VxWorks configuration file `configAll.h' and rebuild your VxWorks
kernel. The resulting kernel contains `rdb.a', and spawns the
source debugging task tRdbTask
when VxWorks is booted. For more
information on configuring and remaking VxWorks, see the manufacturer's
manual.
ÀÏ´Ü ¿©·¯ºÐÀº VxWorks ½Ã½ºÅÛ À̹ÌÁö¿¡ `rdb.a'¸¦ Æ÷ÇÔÇÏ°í GDB¸¦ ¹ß°ßÇϱâ
À§ÇØ ¿©·¯ºÐÀÇ À¯´Ð½º ½ÇÇà °æ·Î¸¦ ¼³Á¤Çϸé, ¿©·¯ºÐÀº GDB¸¦ µ¹¸± Áغñ°¡ µÈ´Ù.
¿©·¯ºÐÀÇ Unix È£½ºÆ®¿¡¼, gdb
¸¦ µ¹·Á¶ó.(¶Ç´Â ÀνºÅç¿¡ ÀÇÁ¸ÇÏ¿©, vxgdb
)
GDB´Â ÇÁ·ÒÇÁÆ®¸¦ º¸¿©ÁØ´Ù:
(vxgdb)
GDB ¸í·É¾î target
´Â ³×Æ®¿÷¿¡¼ VxWorks¿¡ ¿¬°áÇÏ´Â °É Çã¿ëÇÑ´Ù.
È£½ºÆ® À̸§ÀÌ "tt
"ÀΠŸ°Ù¿¡ ¿¬°áÇϱâ À§ÇØ, ŸÀÔÇÎÇضó:
(vxgdb) target vxworks tt
GDB´Â ´ÙÀ½°ú °°Àº ¸Þ¼¼Áö¸¦ º¸¿©ÁØ´Ù:
Attaching remote machine across net... Connected to tt.
GDB´Â ºÎÆ®µÈÈÄ, VxWorks Ÿ°Ù¿¡ ·ÎµåµÈ °´Ã¼ ¸ðµâÀÇ ½Éº¼ Å×À̺íÀ» Àд´Ù. GDB´Â ¸í·É¾î ã±â °æ·Î¿¡ ¸®½ºÆ®µÈ µð·ºÅ丮 °Ë»öÀ¸·Î À̵é ÆÄÀÏÀ» ã´Â´Ù. (ÇÁ·Î±×·¥ ȯ°æ ¼½¼ÇÀ» ÂüÁ¶Çضó); ¸¸ÀÏ °´Ã¼ ÆÄÀÏÀ» ã´Â°É ½ÇÆÐÇÑ´Ù¸é, ´ÙÀ½°ú °°Àº ¸Þ¼¼Áö°¡ Ãâ·ÂµÈ´Ù:
prog.o: No such file or directory.
ÀÌ·± ÀÏÀÌ ÀÏ¾î ³µÀ»¶§, Àû´çÇÑ µð·ºÅ丮¸¦ GDB ¸í·É¾î path
·Î °Ë»ö °æ·Î¿¡
Ãß°¡Çضó. ±×¸®°í ´Ù½Ã target
¸í·É¾î¸¦ ½ÇÇàÇضó.
¸¸ÀÏ ¿©·¯ºÐÀÌ VxWorks Ÿ°Ù¿¡ ¿¬°áÇÏ°í ¾ÆÁ÷ ·ÎµåµÇÁö ¾ÊÀº °´Ã¼¸¦ µð¹ö±ë Çϱæ
¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº GDB load
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
load
¸í·É¾î¿¡ ´ëÇÑ ÀÎÀڷνá ÁÖ¾îÁö´Â °´Ã¼ ÆÄÀÏÀº ½ÇÁ¦·Î 2¹ø ¿¸°´Ù: Äڵ带
´Ù¿î ·Îµå Çϱâ À§ÇØ VxWorks Ÿ°Ù¿¡ ÀÇÇؼ Çѹø, ±×¸®°í ½Éº¼ Å×À̺íÀ» Àбâ À§ÇØ GDB¿¡ ÀÇÇؼ.
ÀÌ°ÍÀº ¸¸ÀÏ ÇöÀç ÀÛ¾÷ µð·ºÅ丮°¡ µÎ ½Ã½ºÅÛ °£¿¡ ´Ù¸£´Ù¸é ¹®Á¦¸¦ ¾ß±âÇÒ¼ö ÀÖµû.
¸¸ÀÏ µÎ ½Ã½ºÅÛÀÌ °°Àº ÆÄÀϽýºÅÛÀ¸·Î ¸¶¿îÆ®µÈ NFS¸¦ °¡Áö°í ÀÖ´Ù¸é, ¿©·¯ºÐÀº Àý´ë °æ·Î¸¦
»ç¿ëÇÏ¿© ÀÌµé ¹®Á¦¸¦ ÇÇÇÒ¼ö ÀÖ´Ù.
´Ù¸¥ ¹æ¹ýÀ¸·Î, °´Ã¼ ÆÄÀÏÀÌ ÀÖ´Â µð·ºÅ丮¿Í °æ·Î ¾øÀÌ À̸§À¸·Î ÆÄÀÏÀ» ÂüÁ¶ÇÏ¿©
ÀÛ¾÷ µð·ºÅ丮¸¦ ¼³Á¤ÇÏ´Â °Íµµ °£´ÜÇÏ´Ù.
¿¹¸¦ µé¾î, ÇÁ·Î±×·¥ `prog.o'Àº VxWorks³» `vxpath/vw/demo/rdb'¿¡
ÀÖ°í È£½ºÆ®¿¡¼´Â `hostpath/vw/demo/rdb'¿¡ ÀÖ´Ù°í ÇÏÀÚ.
ÀÌ ÇÁ·Î±×·¥À» ·Îµå ÇϱâÀ§ÇØ, VxWorks¿¡¼´Â ÀÌ·¸°Ô ŸÀÌÇÎÇضó:
-> cd "vxpath/vw/demo/rdb"
v ±×¸®°í, GDB¿¡¼´Â:
(vxgdb) cd hostpath/vw/demo/rdb (vxgdb) load prog.o
GDB´Â ´ÙÀ½°ú ºñ½ÁÇÏ°Ô ¹ÝÀÀÀ» Ãâ·ÂÇÑ´Ù:
Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
¿©·¯ºÐÀº ¼Ò½º ÆÄÀÏ¿¡ ÇØ´çÇÏ´Â °ÍÀ» °íÄ¡°í Àç ÄÄÆÄÀÏ ÇÑÈÄ °´Ã¼ ¸ðµâÀ» ´Ù½Ã ·ÎµåÇϱâ À§ÇØ
load
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
ÀÌ°ÍÀº GDB°¡ ÇöÀç Á¤ÀÇµÈ ¸ðµç breakpoint, ÀÚµ¿ µð½ºÇ÷¹ÀÌ, Æí¸® º¯¼öµé, ±×¸®°í
°ª È÷½ºÅ丮¸¦ Áö¿ìµµ·Ï GDB¸¦ ¸¸µç´Ù.
(ÀÌ°ÍÀº Ÿ°Ù ½Ã½ºÅÛÀÇ ½Éº¼ Å×À̺íÀ» ÂüÁ¶ÇÏ´Â µð¹ö°Å µ¥ÀÌÅÍ ±¸Á¶Ã¼µéÀÇ ¿ÏÀü¼ºÀ» º¸Á¸Çϱâ
À§ÇØ ÇÊ¿äÇÏ´Ù.)
¿©·¯ºÐÀº ´ÙÀ½°ú °°Àº attach
¸í·É¾î¸¦ »ç¿ëÇÏ¿© Á¸ÀçÇϴ ŽºÅ©¸¦ ¿¬°áÇÒ¼ö
ÀÖ´Ù:
(vxgdb) attach task
task´Â VxWorks 16Áø¼ö ŽºÆ® IDÀÌ´Ù. ŽºÅ©´Â ¿©·¯ºÐÀÌ GDB¿¡ ¿¬°áÇÒ¶§ µ¹¸®°Å³ª ÀϽà ÁßÁö½Ãų¼ö ÀÖ´Ù. ÀÛµ¿ÁßÀΠŽºÅ©´Â ¿¬°á½ÃÅ°´Â ŸÀÓ¿¡¼ ÁßÁöµÈ´Ù.
GDB´Â Sparclet Ÿ°Ù¿¡¼ µ¹¾Æ°¡´Â ŽºÅ©µéÀ» À¯´Ð½º È£½ºÆ®¿¡¼ µð¹ö±ë ÇÒ¼ö ÀÖ´Ù.
GDB´Â Unix È£½ºÆ®¿Í Sparclet Ÿ°Ù ¸ðµÎ¿¡¼ µ¹¾Æ°¡´Â Äڵ带 »ç¿ëÇÑ´Ù.
ÇÁ·Î±×·¥ gdb
´Â Unix È£½ºÆ®¿¡ ¼³Ä¡ÇÏ°í ½ÇÇàµÈ´Ù.
timeout args
remotetimeout
¿É¼ÇÀ» Áö¿øÇÑ´Ù.
ÀÌ ¿É¼ÇÀº À¯Àú¿¡ ÀÇÇØ ¼³Á¤µÇ¸ç args´Â ÀÀ´äÀ» À§ÇØ GDB°¡ ±â´Ù·Á¾ß ÇÏ´Â
Ãʸ¦ ³ªÅ¸³½´Ù.
µð¹ö±ëÀ» À§ÇØ ÄÄÆÄÀÏÇÒ¶§, µð¹ö±ë Á¤º¸¸¦ °®±â À§ÇØ "-g" ¿É¼ÇÀ» Æ÷ÇÔÇضó. ±×¸®°í ¿©·¯ºÐÀÌ Å¸°Ù¿¡ ·ÎµåÇÏ±æ ¿øÇÏ´Â °÷¿¡ ÇÁ·Î±×·¥À» Àç¹èÄ¡ ½ÃÅ°±â À§ÇØ "-Ttext" ¿É¼ÇÀ» Æ÷ÇÔÇضó. ¿©·¯ºÐÀº ¶ÇÇÑ ¼½¼ÇÀÇ Å©±â¸¦ ÁÙÀ̱â À§ÇØ "-n"À̳ª "-N"À» ´õÇÏ±æ ¿øÇÒÁöµµ ¸ð¸¥´Ù.
sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
¿©·¯ºÐÀº ÁÖ¼Ò°¡ ¿©·¯ºÐÀÌ ÀǵµÇÑ °÷ÀÎÁö¸¦ °Ë»çÇϱâ À§ÇØ objdump¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
sparclet-aout-objdump --headers --syms prog
ÀÏ´Ü ¿©·¯ºÐÀÌ GDB¸¦ ¹ß°ßÇϱâ À§ÇØ Unix ½ÇÇà Ž»ö °æ·Î¸¦ ¼³Á¤Çϸé, ¿©·¯ºÐÀÎ GDB¸¦ µ¹¸±
Áغñ°¡ µÈ °ÍÀÌ´Ù. ¿©·¯ºÐÀÇ Unix È£½ºÆ®¿¡¼, gdb
¸¦ µ¹¸°´Ù.
(¶Ç´Â ¼³Ä¡½Ã ÀÇÁ¸ÇÏ¿©, sparclet-aout-gdb
)
GDB´Â ÇÁ·ÒÇÁÆ®¸¦ º¸¿©ÁØ´Ù:
(gdbslet)
GDB ¸í·É¾î file
´Â ¿©·¯ºÐÀÌ µð¹ö±ëÇÒ ÇÁ·Î±×·¥À» ¼±ÅÃÇϵµ·Ï ÇÑ´Ù.
(gdbslet) file prog
±×¸®°í GDB´Â `prog'ÀÇ ½Éº¼ Å×À̺íÀ» Àд °É ½ÃµµÇÑ´Ù. GDB´Â ¸í·É¾î Ž»ö °æ·Î¿¡ ¸®½ºÆ®µÈ µð·ºÅ丮¿¡¼ ÆÄÀÏÀ» ã´Â´Ù. ¸¸ÀÏ ÆÄÀÏÀÌ µð¹ö±ë Á¤º¸(¿É¼Ç "-g")¸¦ °¡Áö°í ÄÄÆÄÀÏ µÇ¾ú´Ù¸é, ¼Ò½º ÆÄÀÏÀº ¿ª½Ã °Ë»öµÈ´Ù. GDB´Â µð·ºÅ丮 Ž»ö °æ·Î¿¡ ³ª¿µÈ µð·ºÅ丮¸¦ Ž»öÇÏ¿© ¼Ò½º ÆÄÀϵéÀ» ãÀ»¼ö ÀÖ´Ù. (ÇÁ·Î±×·¥ ȯ°æ ¼½¼ÇÀ» ÂüÁ¶Çضó.) ¸¸ÀÏ ÆÄÀÏÀ» ã´Â°É ½ÇÆÐÇÑ´Ù¸é, ´ÙÀ½°ú °°Àº ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÑ´Ù:
prog: No such file or directory.
ÀÌ·±ÀÏÀÌ ÀϾ¶§, ¾Ë¸Â´Â µð·ºÅ丮¸¦ GDB ¸í·É¾î path
·Î Ž»ö °æ·Î¿¡
Ãß°¡½ÃÅ°°í dir
À» ÇÏ°í ´Ù½Ã target
¸í·É¾î¸¦ ½ÇÇàÇضó.
GDB ¸í·É¾î target
´Â ¿©·¯ºÐÀÌ Sparclet Ÿ°Ù¿¡ ¿¬°áÇϵµ·Ï ÇÑ´Ù.
½Ã¸®¾ó Æ÷Æ® "ttya
"·Î Ÿ°Ù°ú ¿¬°áÇϱâ À§ÇØ:
(gdbslet) target sparclet /dev/ttya Remote target sparclet connected to /dev/ttya main () at ../prog.c:3
GDB´Â ´ÙÀ½°ú °°Àº ¸Þ¼¼Áö¸¦ º¸¿©ÁØ´Ù:
Connected to ttya.
ÀÏ´Ü Sparclet Ÿ°Ù¿¡ ¿¬°áÇϸé, ¿©·¯ºÐÀº È£½ºÆ®¿¡¼ Ÿ°ÙÀ¸·Î ÆÄÀÏÀ» ´Ù¿î ·ÎµåÇÏ´Â
GDB load
¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
ÆÄÀÏÀ̸§°ú ·Îµå ¿ÀÇÁ¼ÂÀº load
¸í·É¾î¿¡ ´ëÇÑ ÀÎÀڷνá ÁÖ¾îÁø´Ù.
ÆÄÀÏ Æ÷¸ËÀÌ aoutÀ̱⠶§¹®¿¡, ÇÁ·Î±×·¥Àº ½ÃÀÛ ÁÖ¼Ò¿¡ ·ÎµåµÇ¾î¾ß ÇÑ´Ù.
¿©·¯ºÐÀº ÀÌ °ªÀ» ã±â À§ÇØ objdump¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
·Îµå ¿ÀÇÁ¼ÂÀº °¢ ÆÄÀÏ ¼½¼ÇÀÇ VMA(virtual memory address)¿¡ ´õÇØÁø ¿ÀÇÁ¼ÂÀÌ´Ù.
¿¹¸¦ µé¾î, ¸¸ÀÏ ÇÁ·Î±×·¥ `prog'¸¦ ÅؽºÆ® ÁÖ¼Ò 0x1201000¿¡, µ¥ÀÌÅ͸¦ 0x12010160¿¡,
bss¸¦ 0x12010170¿¡ ¸µÅ©ÇÑ´Ù¸é:
(gdbslet) load prog 0x12010000 Loading section .text, size 0xdb0 vma 0x12010000
Äڵ尡 ÇÁ·Î±×·¥ÀÌ ¸µÅ©µÈ °÷°ú ´Ù¸¥ ÁÖ¼Ò¿¡ ·ÎµåµÈ´Ù¸é, ¿©·¯ºÐÀº ½Éº¼ Å×À̺íÀ» ¸Ê ÇÒ¼ö
ÀÖ´Â °÷À» GDB¿¡°Ô ¸»Çϱâ À§ÇØ section
°ú add-symbol-file
¸í·É¾î¸¦
»ç¿ëÇÒÁöµµ ¸ð¸¥´Ù.
¿©·¯ºÐÀº GDB ½ÇÇà Á¦¾î ¸í·É¾î b
, step
, run
µîµîÀ»
»ç¿ëÇÏ¿© ŽºÅ©¸¦ µð¹ö±ëÇÒ¼ö ÀÖ´Ù.
¸í·É¾îÀÇ ¸®½ºÆ®¸¦ À§ÇØ GDB ¸Å´º¾óÀ» ÂüÁ¶Çضó.
(gdbslet) b main Breakpoint 1 at 0x12010000: file prog.c, line 3. (gdbslet) run Starting program: prog Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3 3 char *symarg = 0; (gdbslet) step 4 char *execarg = "hello!"; (gdbslet)
GDB´Â ¿©·¯ºÐÀÇ Hitachi SH, H8/300 ¶Ç´Â H8/500°ú ¾Ö±âÇÒ¶§ ´ÙÀ½°ÍµéÀ» ¾Ë¾Æ¾ß ÇÑ´Ù:
¸¸ÀÏ ¿©·¯ºÐÀÌ ½Ã¸®¾ó ÀåÄ¡¸¦ ¼³Á¤ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é gdb
¸í·É¾î `device port' ¸¦ »ç¿ëÇضó.
±âº»ÀûÀÎ port´Â È£½ºÆ®¿¡¼ ÀÌ¿ë°¡´ÉÇÑ Æ÷Æ®ÀÌ´Ù. ÀÌ°ÍÀº Unix È£½ºÆ®¿¡¼ ÇÊ¿äÇϸç
`/dev/ttya' °°Àº °ÍÀ» ¸»ÇÑ´Ù.
gdb
´Â Åë½Å ½ºÇǵ带 ¼³Á¤Çϱâ À§ÇÑ ¸í·É¾î¸¦ °¡Áö°í ÀÖ´Ù:`speed bps'. ÀÌ ¸í·É¾î´Â À¯´Ð½º È£½ºÆ®¿¡¼¸¸ »ç¿ëµÈ´Ù; DOS È£½ºÆ®¿¡¼, DOS mode ¸í·É¾î¸¦
°¡Áö°í GDB ¹Û¿¡¼ ¶óÀÎ ½ºÇǵ带 ¼³Á¤Çضó.
(¿¹¸¦ µé¾î, 9600 bps ¿¬°áÀ» À§ÇØ `mode com2:9600,n,8,1,p')
`device' ¸í·É¾î¿Í `speed' ¸í·É¾î´Â ¿©·¯ºÐÀÌ Hitachi ¸¶ÀÌÅ©·Î ÇÁ·Î¼¼¼
ÇÁ·Î±×·¥À» µð¹ö±ëÇϱâ À§ÇØ À¯´Ð½º È£½ºÆ®¸¦ »ç¿ëÇÒ¶§ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ DOS È£½ºÆ®¸¦ »ç¿ëÇÑ´Ù¸é, GDB´Â PC ½Ã¸®¾ó Æ÷Æ®¸¦ »ç¿ëÇÏ¿© °³¹ß º¸µå¿Í Åë½ÅÇϱâ
À§ÇØ asynctsr
¶ó ºÒ¸®´Â º¸Á¶ terminate-and-stay-resident ÇÁ·Î±×·¥¿¡
ÀÇÁ¸ÇÑ´Ù.
¿©·¯ºÐÀº Hitachi SH³ª H8/300H¿¡¼ Äڵ带 °³¹ßÇϱâ À§ÇØ E7000 in-circuit emulator¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù. GDB¸¦ E7000¿¡ ¿¬°áÇϱâ À§ÇÑ `target e7000' ¸í·É¾î ÇüÅÂÁß Çϳª¸¦ »ç¿ëÇضó.
target e7000 port speed
target e7000 hostname
telnet
¸¦ »ç¿ëÇÑ´Ù.
¸î¸î GDB ¸í·É¾îµåµéÀº H8/300 À̳ª H8/500 ¼³Á¤¿¡¼¸¸ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù.:
set machine h8300
set machine h8300h
set memory mod
show memory
small
, big
, medium
,
and compact
ÀÌ´Ù.
GDB´Â ½Ã¸®¾ó ¶óÀο¡ ¿¬°áµÈ MIPS º¸µå¿Í Åë½ÅÇϱâ À§ÇØ MIPS ¿ø°Ý µð¹ö±ë ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀÌ `--target=mips-idt-ecoff'·Î GDB¸¦ ¼³Á¤ÇÒ¶§ ÀÌ¿ëÇÑ´Ù.
Ÿ°Ù º¸µå¿¡ ¿¬°áÀ» ÁöÁ¤Çϱâ À§ÇØ GDB ¸í·É¾îµéÀ» »ç¿ëÇÑ´Ù:
target mips port
gdb
¸¦ ½ÃÀÛÇضó.
º¸µå¿¡ ¿¬°áÇϱâ À§ÇØ, ¸í·É¾î `target mips port'¸¦ »ç¿ëÇضó.
port´Â º¸µå¿¡ ¿¬°áÇÏ´Â ½Ã¸®¾ó Æ÷Æ®ÀÇ À̸§ÀÌ´Ù.
¸¸ÀÏ ÇÁ·Î±×·¥ÀÌ º¸µå¿¡ ´Ù¿î·ÎµåµÇ¾î ÀÖÁö ¾Ê´Ù¸é, ¿©·¯ºÐÀº ´Ù¿î ·Îµå¸¦ À§ÇØ load
¸í·É¾î¸¦ »ç¿ëÇضó. ¿©·¯ºÐÀº ÀϹÝÀûÀÎ GDB ¸í·É¾î ¸ðµÎ¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î, ÀÌ·±¼ø¼·Î ½Ã¸®¾ó Æ÷Æ®¸¦ ÅëÇØ Å¸°Ù º¸µå¿¡ ¿¬°áµÇ¸ç ·Îµå µÇ°í µð¹ö°Å¸¦ ÅëÇؼ
prog¶ó ºÒ¸®´Â ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù:
host$ gdb prog GDB is free software and ... (gdb) target mips /dev/ttyb (gdb) load prog (gdb) run
target mips hostname:portnumber
target pmon port
target ddb port
target lsi port
GDB´Â ¶ÇÇÑ MIPS Ÿ°ÙÀ» À§ÇØ Æ¯Á¤ ¸í·É¾îµéÀ» Áö¿øÇÑ´Ù:
set processor args
show processor
set processor
¸í·É¾î¸¦ »ç¿ëÇضó.
¿¹¸¦ µé¾î, set processor r3041
´Â 3401Ĩ¿¡ ¾Ë¸Â´Â CPO ·¹Áö½ºÅ͸¦
»ç¿ëÇϵµ·Ï GDB¿¡°Ô ¸»ÇÑ´Ù.
GDB°¡ »ç¿ëÇÏ°í ÀÖ´Â MIPS ÇÁ·Î¼¼¼°¡ ¹«¾ùÀÎÁö¸¦ º¸±â À§ÇØ show processor
¸í·É¾î¸¦ »ç¿ëÇضó.
GDB°¡ »ç¿ëÇÏ°í ÀÖ´Â ·¹Áö½ºÅ並 º¸±â À§Çؼ´Â info reg
¸í·É¾î¸¦ »ç¿ëÇضó.
set mipsfpu double
set mipsfpu single
set mipsfpu none
show mipsfpu
mipsfpu
º¯¼ö¿¡ °üÇØ
ÁúÀÇÇÒ¼ö ÀÖ´Ù.
set remotedebug n
show remotedebug
remotedebug
º¯¼ö¸¦ ¼³Á¤ÇÏ¿© º¸µå¿ÍÀÇ Åë½Å¿¡ °üÇÑ µð¹ö±ë Á¤º¸¸¦
º¼¼ö ÀÖ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ `set remotedebug 1'¸¦ »ç¿ëÇÏ¿© 1
·Î
¼³Á¤ÇÑ´Ù¸é, ¸ðµç ¹®ÀÚ´Â Ãâ·ÂµÈ´Ù. ¿©·¯ºÐÀº ¸í·É¾î `show remotedebug'·Î
¾î¶²¶§µçÁö ÇöÀç °ªÀ» °Ë»çÇÒ¼ö ÀÖ´Ù.
set timeout seconds
set retransmit-timeout seconds
show timeout
show retransmit-timeout
set timeout seconds
¸í·É¾î¸¦
»ç¿ëÇÏ¿© ÆÐŶÀ» ±â´Ù¸®´Â µ¿¾È »ç¿ëÇϴ ŸÀÓ ¾Æ¿ôÀ» Á¦¾îÇÒ¼ö ÀÖ´Ù.
±âº» °ªÀº 5ÃÊÀÌ´Ù. ºñ½ÁÇÏ°Ô, ¿©·¯ºÐÀº set
retransmit-timeout seconds
¸í·É¾î¸¦ »ç¿ëÇÏ¿© ÆÐŶÀÇ ½ÂÀÎÀ»
±â´Ù¸®´Â µ¿¾È »ç¿ëµÇ´Â ŸÀӾƿôÀ» Á¦¾îÇÒ¼ö ÀÖ´Ù.
±âº»°ªÀº 3ÃÊÀÌ´Ù.
¿©·¯ºÐÀº show timeout
°ú show
retransmit-timeout
·Î µÎ °ªÀ» °Ë»çÇÒ¼ö ÀÖ´Ù.(ÀÌµé ¸í·É¾î´Â GDB°¡ `--target=mips-idt-ecoff'·Î ¼³Á¤ÇÒ¶§ ¸¸ ÀÌ¿ëÇÒ¼ö ÀÖ´Ù.)
set timeout
¿¡ ÀÇÇØ ¼³Á¤µÇ´Â ŸÀÓ ¾Æ¿ôÀº GDB°¡ ÇÁ·Î±×·¥ÀÌ ¸ØÃß´Â °É ±â´Ù¸±¶§´Â
Àû¿ëµÇÁö ¾Ê´Â´Ù.
±×·± °æ¿ì, GDB´Â ¿µ¿øÈ÷ ±â´Ù¸°´Ù. ¿Ö³ÄÇϸé ÇÁ·Î±×·¥ÀÌ ¸ØÃáÈÄ ¾ó¸¶³ª ¿À·§µ¿¾È µ¹¾Æ°¬´ÂÁö¸¦
¾Ë ¹æ¹ýÀÌ ¾ø±â ¶§¹®ÀÌ´Ù.
¸î¸î ¼³Á¤À» À§ÇØ, GDB´Â ¿©·¯ºÐÀÌ Çϵå¿þ¾î CPU ´ë½Å ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ¼ö Àִµ¥ »ç¿ëÇÒ¼ö ÀÖ´Â CPU simulator¸¦ Æ÷ÇÔÇÑ´Ù. ÇöÀç, ½Ã¹Ä·¹ÀÌÅÍ´Â GDB°¡ zilog Z8000³ª Hitachi microprocessor Ÿ°ÙÀ» µð¹ö±ëÇÒ¶§ ÀÌ¿ëÇÑ´Ù.
Z8000 Æйи¦ À§ÇØ, `target sim'´Â Z8002(Z8000 ¾ÆÅ°ÅØÃÄÀÇ unsegmented variant)³ª Z8001(segmented variant)À» ½Ã¹Ä·¹ÀÌÆ®ÇÑ´Ù. ½Ã¹Ä·¹ÀÌÅÍ´Â °´Ã¼ Äڵ带 Á¶»çÇÏ¿© Àû´çÇÑ ¾ÆÅ°ÅØÃÄ°¡ ¹«¾ùÀÎÁö¸¦ ´Ù½Ã ÀνÄÇÑ´Ù.
Ÿ°ÙÀ» ÁöÁ¤ÇÑÈÄ, ¿©·¯ºÐÀº ¿©·¯ºÐÀÇ È£½ºÆ® ÄÄÇ»ÅÍÀÇ ÇÁ·Î±×·¥°ú °°Àº ½ºÅ¸ÀÏ·Î
°¡»ó CPU·Î ÇÁ·Î±×·¥À» µð¹ö±ëÇÒ¼ö ÀÖ´Ù; »õ·Î¿î ÇÁ·Î±×·¥ À̹ÌÁö¸¦ ·ÎµåÇϱâ À§ÇØ file
¸í·É¾î¸¦ »ç¿äÇضó. ±×¸®°í ÇÁ·Î±×·¥À» µ¹¸®±â À§ÇØ run
¸í·É¾î¸¦ »ç¿ëÇضó.
ÀÌ¿ëÇÒ¼ö ÀÖ´Â ¸ðµç ¸Ó½Å ·¹Áö½ºÅÍ(info reg
ÂüÁ¶)¸¦ ¸¸µå´Â °Íó·³,
ÀÌ µð¹ö±ë Ÿ°ÙÀº Ưº°ÇÑ À̸§ÀÇ ·¹Áö½ºÅͷνá 3°¡ÁöÀÇ Ãß°¡ÀûÀÎ ¾ÆÀÌÅÛ Á¤º¸¸¦ Á¦°øÇÑ´Ù.:
cycles
insts
time
¿©·¯ºÐÀº GDB Ç¥Çö½Ä¿¡¼ ÀÌµé °ªÀ» ÂüÁ¶ÇÒ¼ö ÀÖ´Ù; ¿¹¸¦ µé¾î, `b fputc if $cycles>5000'´Â Àû¾îµµ 5000 ½Ã¹Ä·¹ÀÌ¼ÇµÈ clock ticksÈÄ¿¡ ÀÏÁö ÁßÁöÇϵµ·Ï Á¶°ÇÀû breakpoint¸¦ ¼³Á¤ÇÑ´Ù.
¿©·¯ºÐÀº set
¸í·É¾î¸¦ »ç¿ëÇÏ¿© GDB¿Í ¼·Î »óÈ£ÀÛ¿ëÇÏ´Â ¹æ¹ýÀ»
¼öÁ¤ÇÒ¼ö ÀÖ´Ù. GDB°¡ µ¥ÀÌÅ͸¦ ³ªÅ¸³»´Â ¹æ¹ýÀ» Á¦¾îÇÏ´Â ¸í·É¾î¸¦ À§Çؼ
Print ¼³Á¤Çϱ⠼½¼ÇÀ» Âü°íÇضó.;
´Ù¸¥ ¼ÂÆõéÀº ¿©±â¼ ¼³¸íÇÑ´Ù.
GDB´Â prompt ¶ó ºÒ¸®´Â ¹®ÀÚ¿À» Ãâ·ÂÇÏ¿© ¸í·É¾î¸¦ Àбâ À§ÇÑ Áغñ¸¦
³ªÅ¸³½´Ù. ÀÌ ¹®ÀÚ¿Àº º¸Åë `(gdb)'¶ó ºÒ¸°´Ù.
¿©·¯ºÐÀº set prompt
¸í·É¾î¸¦ °¡Áö°í ÇÁ·ÒÇÁÆ® ¹®ÀÚ¿À» ¹Ù²Ü¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, GDB¸¦ °¡Áö°í GDB¸¦ µð¹ö±ëÇÒ¶§ . For
¿©·¯ºÐÀÌ ÇöÀç ´ëÈÇÏ°í Àִ°ÍÀÌ ¹«¾ùÀÎÁö Ç×»ó ¸»ÇÒ¼ö ÀÖ°Ô Çϱâ À§Çؼ GDBÀÇ
¼¼¼ÇµéÁß Çϳª¿¡ ÀÖ´Â ÇÁ·Ò ÇÁÆ®¸¦ ¹Ù²Ù´Â°ÍÀº À¯¿ëÇÏ´Ù.
ÁÖÀÇ: set prompt
´Â ¿©·¯ºÐÀÌ ÇÁ·ÒÇÁÆ®¸¦ ¼³Á¤ÇÑÈÄ ½ºÆäÀ̽º¸¦ Ãß°¡ÇÏÁö ¾Ê´Â´Ù. ÀÌ°ÍÀº ¿©·¯ºÐÀÌ ½ºÆäÀ̽º ³¡¿¡ ÇÁ·ÒÇÁÆ®¸¦ ¼³Á¤Çϰųª ±×°É
ÇÏÁö ¾ÊÀº ÇÁ·ÒÇÁÆ®µµ ¼³Á¤ÇÏ°Ô ÇØÁØ´Ù.
set prompt newprompt
show prompt
GDB´Â readline ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ ÀÔ·Â ¸í·É¾îµéÀ» Àд´Ù.
GNU ¶óÀ̺귯¸®´Â »ç¿ëÀÚ¸¦ À§ÇÑ ¸í·É¾î ¶óÀÎ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ¿© ÇÁ·Î±×·¥À»
À§ÇÑ ÀÏ°üÀûÀÎ ÇൿÀ» Á¦°øÇÑ´Ù.
ÀåÁ¡µéÀº ¸í·É¾îµéÀÇ GNU Emacs-style ¶Ç´Â
csh
ÀÇ È÷½ºÅ丮¿Í °°Àº vi-style ¸í·É¾î ¶óÀÎ ÆíÁý ±×¸®°í
µð¹ö±ë ¼¼¼ÇÀ» ÅëÇÏ¿© ¸í·É¾î È÷½ºÅ丮ÀÇ ÀúÀå°ú ÀçÈ£ÃâµîÀÌ´Ù.
¿©·¯ºÐÀº set
¸í·É¾î¸¦ °¡Áö°í GDB¿¡¼ ¸í·É¾î ¶óÀÎ ÆíÁýÀÇ ÇൿÀ»
Á¦¾îÇÒ¼ö ÀÖ´Ù.
set editing
set editing on
set editing off
show editing
GDB´Â ¿©·¯ºÐÀÇ µð¹ö±ë ¼¼¼Çµ¿¾È¿¡ ¿©·¯ºÐÀÌ »ç¿ëÇÑ ¸í·É¾îÀÇ ¹ßÀÚÃ븦 ÂѾư¥¼ö ÀÖ´Ù. ±×·¡¼ ¿©·¯ºÐÀº ¹«¾ùÀÌ ÀϾ´ÂÁö È®½ÇÈ÷ ÇÒ¼ö ÀÖ´Ù. GDB ¸í·É¾î È÷½ºÅ丮 ±â´ÉÀ» °ü¸®ÇÏ´Â ÀÌµé ¸í·É¾îµéÀ» »ç¿ëÇضó.
set history filename fname
GDBHISTFILE
°ªÀ̰ųª,
ÀÌ º¯¼ö°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê´Ù¸é
`./.gdb_history' ¸¦ ±âº»À¸·Î °®´Â´Ù.
set history save
set history save on
set history filename
¸í·É¾î·Î ÁöÁ¤ÇÑ ÆÄÀÏ¿¡ ÀÖ´Â ¸í·É¾î È÷½ºÅ丮¸¦ ÀúÀåÇÑ´Ù. ±âº»ÀûÀ¸·Î ÀÌ ¿É¼ÇÀº ²¨Á®ÀÖ´Ù.
set history save off
set history size size
HISTSIZE
°ªÀ̰ųª ÀÌ º¯¼ö°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê´Ù¸é 256ÀÌ´Ù.
È÷½ºÅ丮 È®ÀåÀº ¹®ÀÚ ! ¿¡ Ưº°ÇÑ Àǹ̸¦ ºÎ¿©ÇÑ´Ù.
! ÀÌ C¿¡¼ logical not ¿ÀÆÛ·¹À̼ÇÀ̱⠶§¹®¿¡ È÷½ºÅ丮 È®ÀåÀº
±âº»ÀûÀ¸·Î ²¨Á® ÀÖ´Ù. ¿©·¯ºÐÀÌ
set history expansion on
¸í·É¾î·Î È÷½ºÅ丮 È®ÀåÀ» Äѳõ´Â´Ù¸é,
¿©·¯ºÐÀº È®Àå¿¡¼ºÎÅÍ ±×°ÍÀ» ¸·±â À§ÇØ ½ºÆäÀ̽º³ª ÅÇÀÌ
! (Ç¥Çö¿¡¼, ±×°ÍÀÌ logical notÀ¸·Î »ç¿ëµÉ¶§) ´ÙÀ½¿¡
°¡²û ÇÊ¿äÇÏ´Ù.
readline È÷½ºÅ丮 ±â´ÉµéÀº È÷½ºÅ丮 È®ÀåÀÌ ÄÑÁ® ÀÖÀ»¶§ Á¶Â÷µµ
!= ¿Í !( ¹®ÀÚ¿¿¡¼ ´ëü¸¦ ½ÃµµÇÏÁö ¾Ê´Â´Ù.
È÷½ºÅ丮 È®ÀåÀ» À§ÇÑ ¸í·É¾îµéÀº ´ÙÀ½°ú °°´Ù:
set history expansion on
set history expansion
set history expansion off
vi
¿¡ Àͼ÷ÇÏÁö ¾ÊÀº »ç¿ëÀÚµéÀº ±×°ÍÀ» Àб⸦
¿øÇÒÁöµµ ¸ð¸¥´Ù.
show history
show history filename
show history save
show history size
show history expansion
show history
´Â ³×°¡ÁöÀÇ »óÅ ¸ðµÎ¸¦ Ãâ·ÂÇÑ´Ù.
show commands
show commands n
show commands +
¾î¶² GDB ¸í·É¾îµéÀº ½ºÅ©¸°¿¡ ¸¹Àº ¾çÀÇ Á¤º¸¸¦ Ãâ·ÂÇÑ´Ù. ¿©·¯ºÐÀÌ ÇØ´ç Á¤º¸¸¦ Àдµ¥ µµ¿ÍÁÖµµ·Ï Çϱâ À§ÇØ, GDB´Â ¸ØÃß°í ¿©·¯ºÐ¿¡°Ô Ãâ·ÂÀÇ °¢ÆäÀÌÁö ³¡¿¡¼ ¿©·¯ºÐÀ» À§ÇÑ ÀÔ·ÂÀ» ±â´Ù¸°´Ù. Ãâ·ÂÀ» °è¼Ó Çϱâ À§ÇØ RET À» ŸÀÔÇϰųª Ãâ·ÂÀÇ ³ª¸ÓÁö¸¦ ¹ö¸®±â À§Çؼ q ¸¦ ŸÀÔÇضó. ¶ÇÇÑ ½ºÅ©¸° Æø ¼³Á¤Àº Ãâ·Â ¶óÀεéÀ» °¡¸±¶§ °áÁ¤ÇÑ´Ù. Ãâ·ÂµÇ´Â°Í¿¡ ÀÇÁ¸ÇÏ¿© GDB´Â ´ÙÀ½¶óÀÎÀ¸·Î ³ÑÄ¡°Ô Çϱ⠺¸´Ù Àб⠰¡´ÉÇÑ °÷¿¡¼ ¶óÀÎÀ» ÀÚ¸¥´Ù.
º¸Åë GDB´Â TERM
ȯ°æ º¯¼ö °ª°ú
stty rows
±×¸®°í stty cols
¼³Á¤ÀÇ termcap µ¥ÀÌŸ
º£À̽º¿¡¼ ½ºÅ©¸° Å©±â¸¦ ¾È´Ù. ÀÌ°ÍÀÌ ¸ÂÁö ¾Ê´Ù¸é
set height
°ú set width
¸í·É¾î·Î ±×°ÍÀ» °ãÃÄ ¾µ¼ö
ÀÖ´Ù.:
set height lpp
show height
set width cpl
show width
set
¸í·É¾îµéÀº ½ºÅ©¸° Å©±â lpp ¶óÀΰú
½ºÅ©¸° ³ÐÀÌ cpl ¹®ÀÚµéÀ» ÁöÁ¤ÇÑ´Ù. show
¸í·É¾î´Â ÇöÀç ¼³Á¤À» º¸¿©ÁØ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ³ôÀ̸¦ 0À¸·Î ¼³Á¤Çϸé, GDB´Â Ãâ·Â¿¡ »ó°£¾øÀÌ ¸ØÃßÁö ¾Ê´Â´Ù.
ÀÌ°ÍÀº Ãâ·ÂÀ» ÆÄÀÏÀ̳ª editor ¹öÆÛ·Î ÇÒ¶§ À¯¿ëÇÏ´Ù.
¸¶Âù°¡Áö·Î, ¿©·¯ºÐÀº GDB¿¡¼ Ãâ·ÂÀ» °¡¸®´Â°ÍÀ» ¸·±â À§ÇØ
`set width 0' ¸¦ ÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
¿©·¯ºÐÀº ÀϹÝÀû º¯È¯À¸·Î GDB¿¡¼ 8Áø¼ö, 10Áø¼ö, 16Áø¼ö·Î ¼ýÀÚµéÀ» »ç¿ëÇÒ¼ö
ÀÖ´Ù: 8Áø¼ö´Â `0'À¸·Î ½ÃÀÛÇÏ°í,
10Áø¼ö´Â `.'À¸·Î ³¡³ª°í, 16Áø¼ö´Â `0x'À¸·Î ½ÃÀÛÇÑ´Ù.
À̰͵éÁß ¾î¶²°Í°úµµ ½ÃÀÛÇÏÁö ¾ÊÀº °æ¿ì ±âº»ÀûÀ¸·Î 10Áø¼öÀÌ´Ù.; ¸¶Âù°¡Áö·Î
¼ýÀÚµéÀ» Ç¥ÇöÇÏ´Â ±âº»Àº(Ưº°ÇÑ Æ÷¸ËÀÌ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é) 10Áø¼öÀÌ´Ù.
¿©·¯ºÐÀº set radix
¸í·É¾î·Î ÀԷ°ú Ãâ·ÂÀ» À§ÇÑ ±âº» Áø¼ö¸¦ ¹Ù²Ü¼ö ÀÖ´Ù.
set input-radix base
set radix 012 set radix 10. set radix 0xaÀ§ÀÇ°ÍÁß ¾î¶²°ÍÀº 10Áø¼ö·Î ¼³Á¤ÇÒ¼ö ÀÖ´Ù. ´Ù¸¥ ÇÑÆíÀ¸·Î `set radix 10' ´Â Áø¼ö°¡ ¹«¾ùÀ̵çÁö »ó°üÇÏÁö ¾Ê°í ¹Ù²ÙÁö ¾Êµµ·Ï ³²°ÜµÐ´Ù.
set output-radix base
show input-radix
show output-radix
±âº»ÀûÀ¸·Î, GDB´Â ³»ºÎ ÀÛµ¿¿¡ °üÇؼ ħ¹¬ÇÑ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ ´À¸° ÄÄÇ»ÅÍ¿¡¼
µ¹¸°´Ù¸é, ¿©·¯ºÐÀº set verbose
¸í·É¾î¸¦ »ç¿ëÇÏ±æ ¿øÇÒ °ÍÀÌ´Ù.
ÀÌ°ÍÀº GDB°¡ ±ä ³»ºÎ ÀÛµ¿À» ÇÏ°í ÀÖÀ»¶§ ¿©·¯ºÐÀÌ GDB°¡ Å©·¡½¬ µÇ¾ú´Ù°í
»ý°¢ÇÏÁö ¾Ê°Ô ÇØÁØ´Ù.
ÇöÀç, set verbose
¿¡ ÀÇÇØ Á¦¾îµÇ´Â
¸Þ¼¼ÁöµéÀº ¼Ò½º ÆÄÀÏÀÇ ½Éº¼ Å×À̺íÀÌ ÀÐÇôÁö¸é¼ ¾Ë·ÁÁÖ´Â °ÍµéÀÌ´Ù;
see symbol-file
in section Commands to specify files.
set verbose on
set verbose off
show verbose
set verbose
ÀÌ ÄÑÁ®ÀÖ´ÂÁö ²¨Á® ÀÖ´ÂÁö ¾Ë·ÁÁØ´Ù.
±âº»ÀûÀ¸·Î, GDB°¡ °´Ã¼ ÆÄÀÏÀÇ ½Éº¼ Å×ÀÌºí¿¡ ÀÖ´Â ¹ö±×µéÀ» ¸¸³´Ù¸é GDB´Â ħ¹¬ÇÑ´Ù. ; ±×·¯³ª, ¿©·¯ºÐÀÌ ÄÄÆÄÀÏ·¯¸¦ µð¹ö±ëÇÑ´Ù¸é ¿©·¯ºÐÀº ÀÌ Á¤º¸ÀÇ À¯¿ë¼ºÀ» ¹ß°ßÇÒ °ÍÀÌ´Ù. (½Éº¼ Å×À̺íÀ» ÀÐÀ»¶§ÀÇ ¿¡·¯µé ¼½¼ÇÀ» ÂüÁ¶Çضó).
set complaints limit
show complaints
±âº»ÀûÀ¸·Î, GDB´Â °¡²û ¾î¶² ¸í·É¾î¸¦ È®½ÇÈ÷ ÇÒÁö¸¦ À§ÇØ ºÒ¸íÈ®ÇÑ Àǹ®Àΰæ¿ì °æ°íÇÏ°í ¹°¾îº»´Ù. ¿¹¸¦ µé¾î, ¿©·¯ºÐÀº ÀÌ¹Ì µ¹¾Æ°¡°í ÀÖ´Â ÇÁ·Î±×·¥À» µ¹¸±´Ù¸é:
(gdb) run The program being debugged has been started already. Start it from the beginning? (y or n)
¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÚ½ÅÀÇ ¸í·É¾î°¡ È®½ÇÇÏ´Ù°í ´ÜÁ¤ÇÑ´Ù¸é, ÀÌ Æ¯Â¡µéÀ» disable ½Ãų¼ö ÀÖ´Ù:
set confirm off
set confirm on
show confirm
breakpoint ¸í·É¾îµé(Breakpoint ¸í·É¾î ¸®½ºÆ® ¼½¼ÇÀ» ÂüÁ¶Çضó)¿Ü¿¡, GDB´Â À¯´ÖÀ¸·Î½á ½ÇÇà ¸í·É¾îÀÇ ¼ø¼µéÀ» ÀúÀåÇϴµ¥ 2°¡Áö ¹æ¹ýÀ» Á¦°øÇÑ´Ù: »ç¿ëÀÚ Á¤ÀÇ ¸í·É¾îµé°ú ¸í·É ÆÄÀϵé.
»ç¿ëÀÚ Á¤ÀÇ ¸í·É¾î´Â ¿©·¯ºÐÀÌ ¸í·É¾î·Î½á »õ·Î¿î À̸§À» ÇÒ´çÇÏ´Â GDB ¸í·É¾î
ÀÌ´Ù. ÀÌ°ÍÀº define
¸í·É¾î·Î ÇÒ¼ö ÀÖ´Ù. »ç¿ëÀÚ ¸í·É¾î´Â ÈÀÌÆ® ½ºÆäÀ̽º·Î
ºÐ¸®µÈ 10°³ÀÇ ÀÎÀÚµé±îÁö ¹Þ¾ÆµéÀϼö ÀÖ´Ù.
ÀÎÀÚµéÀº $arg0...$arg9¸¦ ÅëÇØ »ç¿ëÀÚ ¸í·É¾î³» Á¢±ÙÇÒ¼ö ÀÖ´Ù.
°£´ÜÇÑ ¿¹·Î:
define adder print $arg0 + $arg1 + $arg2
¸í·É¾î¸¦ ½ÇÇàÇϱâ À§ÇØ:
adder 1 2 3
ÀÌ°ÍÀº ¸í·É¾î adder
¸¦ Á¤ÀÇÇÏ¸ç ¼¼ ÀÎÀÚÀÇ ÇÕÀ» Ãâ·ÂÇÑ´Ù. ÀÎÀÚµéÀº
ÅؽºÆ® ġȯÀ̹ǷΠÂüÁ¶º¯¼ö, º¹ÇÕ Ç¥Çö½ÄÀ̳ª ³»ºÎ ÇÔ¼ö È£ÃâÀ» ¼öÇàÇÒ¼ö ÀÖ´Ù.
define commandname
define
¸í·É¾î¸¦
ÁØ´Ù. ÀÌµé ¸í·É¾î ¸¶Áö¸·¿¡´Â end
¸¦ Æ÷ÇÔÇÏ´Â ¶óÀÎÀ¸·Î ¸¶Å©µÈ´Ù.
if
else
ÀÌ ¿Ã¼ö ÀÖÀ¸¸ç,
Ç¥Çö½ÄÀÌ °ÅÁþÀ̶ó¸é ½ÇÇàµÇ´Â ¸í·É¾î ½Ã¸®Áö°¡ µÚµû¶ó ¿Â´Ù.
¸®½ºÆ®ÀÇ ¸¶Áö¸·Àº end
À» Æ÷ÇÔÇÏ´Â ¶óÀÎÀ¸·Î Ç¥½ÃµÈ´Ù.
while
if
¿Í ºñ½ÁÇÏ´Ù:¸í·É¾î´Â ´ÜÀÏ ÀÎÀÚ¸¦ °¡Áö¸ç Æò°¡ÇÒ¼ö Àִ ǥÇö½ÄÀ̸ç
¶óÀδç Çϳª¾¿ ½ÇÇàÇÒ ¸í·É¾î°¡ µÚµû¸£¸ç end
·Î ³¡³´Ù.
¸í·É¾îµéÀº Ç¥Çö½ÄÀÌ ÂüÀ¸·Î Æò°¡µÇ´Â ÇÑ ¹Ýº¹ÀûÀ¸·Î ½ÇÇàµÈ´Ù.
document commandname
help
·Î
Á¢±ÙÇÒ¼ö ÀÖ´Ù. ¸í·É¾î commandname´Â ÀÌ¹Ì Á¤ÀǵǾî ÀÖ¾î¾ß ÇÑ´Ù.
¸í·É¾î´Â define
°¡ ¸í·É¾î Á¤ÀÇÀÇ ¶óÀεéÀ» Àд °Íó·³ ¹®¼ÀÇ ¶óÀεéÀ»
ÀÐÀ¸¸ç end
·Î ³¡³´Ù.
document
¸í·É¾î¸¦ ¸¶Ä£ÈÄ, ¸í·É¾î commandname¿¡ ´ëÇÑ
help
´Â ¿©·¯ºÐÀÌ ¾´ ¹®¼¸¦ º¸¿©ÁØ´Ù.
¿©·¯ºÐÀº ¸í·É¾î¿¡ ´ëÇÑ ¹®¼¸¦ ¹Ù²Ù±â À§ÇØ ´Ù½Ã document
¸í·É¾î¸¦ ¾µ¼ö
ÀÖ´Ù. define
µÈ ¸í·É¾î¸¦ ÀçÁ¤ÀÇÇÏ´Â °ÍÀº ±âÁ¸ ¹®¼´Â ¹Ù²ÙÁö ¾Ê´Â´Ù.
help user-defined
show user
show user commandname
»ç¿ëÀÚ Á¤ÀÇ ¸í·É¾î¸¦ ½ÇÇàÇÒ¶§, Á¤ÀÇµÈ ¸í·É¾î´Â Ãâ·ÂµÇÁö ¾Ê´Â´Ù. ¾î¶² ¸í·É¾î¿¡¼ ¿¡·¯¶ó¸é »ç¿ëÀÚ Á¤ÀÇ ¸í·É¾îµéÀÇ ½ÇÇàÀ» ¸ØÃá´Ù.
¸¸ÀÏ ´ëȽÄÀ¸·Î »ç¿ëµÇ¾ú´Ù¸é, È®½ÅÀ» ¿ä±¸ÇÏ´Â ¸í·É¾îµéÀº »ç¿ëÀÚ Á¤ÀÇ ¸í·É¾î³»¿¡¼ »ç¿ë µÉ¶§ ¹°¾îº¸´Â°Í ¾øÀÌ Ã³¸®µÈ´Ù. ¸¹Àº GDB ¸í·É¾îµéÀº »ç¿ëÀÚ Á¤ÀÇ ¸í·É¾î¸¦ »ç¿ëÇÒ¶§ ¸Þ¼¼Áö¸¦ »ý·«Çß´Ù´Â °ÍÀ» ¸»Çϱâ À§ÇØ º¸Åë ¸Þ¼¼ÁöµéÀ» Ãâ·ÂÇÑ´Ù.
¿©·¯ºÐÀº Ưº°ÇÑ »ç¿ëÀÚ Á¤ÀÇ ¸í·É¾îÀÎ hooks¸¦ Á¤ÀÇÇÒ¼ö ÀÖ´Ù. ¸¸ÀÏ »ç¿ëÀÚ Á¤ÀÇ ¸í·É¾î `hook-foo'°¡ Á¸ÀçÇÑ´Ù¸é, ¿©·¯ºÐÀÌ ¸í·É¾î `foo'¸¦ µ¹¸±¶§´Â ¾ðÁ¦³ª ¸í·É¾î Àü¿¡ ½ÇÇà(ÀÎÀÚ ¾øÀÌ)µÈ´Ù.
Ãß°¡ÀûÀ¸·Î °¡»ó ¸í·É¾î, `stop'°¡ Á¸ÀçÇÑ´Ù. Á¤ÀÇ (`hook-stop')´Â ÇÁ·Î±×·¥³» ½ÇÇàÀÌ ¸ØÃ⶧¸¶´Ù °ü·Ã ¸í·É¾î°¡ ½ÇÇàµÇµµ·Ï ¸¸µç´Ù: breakpoint ¸í·É¾î°¡ µ¹¾Æ°¡±â Àü¿¡, Ãâ·ÂÀÌ º¸¿©Áö°Å³ª ½ºÅà ÇÁ·¹ÀÓÀÌ Ãâ·ÂµÈ´Ù.
¿¹¸¦ µé¾î, ´ÜÀÏ stepping µµÁß SIGALRM
½ÅÈ£¸¦ ¹«½ÃÇϵµ·Ï ÇÏ°í, ½ÇÇ൵Áß
Á¤»óÀûÀ¸·Î ´ëÇØÁöµµ·Ï Á¤ÀÇÇÏ°íÀÚ Çϸé:
define hook-stop handle SIGALRM nopass end define hook-run handle SIGALRM pass end define hook-continue handle SIGLARM pass end
¿©·¯ºÐÀº GDB³»¿¡¼ ´ÜÀÏ ¿öµå ¸í·É¾î¸¦ À§ÇØ ÈÅÀ» Á¤ÀÇÇÒ¼ö ÀÖÁö¸¸ ¸í·É¾î º°ÄªÀº ¾Æ´Ï´Ù;
¿©·¯ºÐÀº ±âº» ¸í·É¾î À̸§À» À§ÇØ ÈÅÀ» Á¤ÀÇÇÒ¼ö ÀÖ´Ù.
bt
º¸´Ù´Â backtrace
.
¸¸ÀÏ ÈÄÅ·µµÁß ¿¡·¯°¡ ¹ß»ýÇÑ´Ù¸é, GDB ¸í·É¾îÀÇ ½ÇÇàÀº ¸ØÃß°í GDB´Â ÇÁ·ÒÇÁÆ®(¿©·¯ºÐÀÌ
ŸÀÌÇÎÇÑ ¸í·É¾î°¡ µ¹¾Æ°¡±â Àü¿¡)¸¦ º¸¿©ÁØ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ¾î¶² ¸í·É¾î¿Íµµ ÀÏÄ¡ÇÏÁö ¾Ê´Â ÈÄÅ·À» Á¤ÀÇÇÏ°íÀÚ Çϸé,
¿©·¯ºÐÀº define
¸í·É¾î¿¡¼ °æ°í¸¦ ¹Þ´Â´Ù.
GDB¸¦ À§ÇÑ ¸í·É¾î ÆÄÀÏÀº GDB ¸í·É¾îÀÎ ¶óÀÎ ÆÄÀϵéÀÌ´Ù. ÁÖ¼®(#·Î ½ÃÀÛÇÏ´Â ¶óÀÎ)µµ ¿ª½Ã Æ÷ÇԵȴÙ. ¸í·É¾î ÆÄÀϳ» ºó¶óÀεµ ¿ª½Ã ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â´Ù; ÀÌ°ÍÀº Å͹̳ο¡¼ ó·³, ¸¶Áö¸· ¸í·É¾î¸¦ ¹Ýº¹ÇÑ´Ù´Â Àǹ̴ ¾Æ´Ï´Ù.
¿©·¯ºÐÀÌ GDB¸¦ ½ÃÀÛÇÒ¶§, ±×°ÍÀº ÀÚµ¿À¸·Î init files¿¡¼ ¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù.
À̰͵éÀº `.gdbinit'¶ó´Â À̸§ÀÇ ÆÄÀϵéÀÌ´Ù.
GDB´Â Ȩ µð·ºÅ丮¿¡¼ init ÆÄÀÏÀ» Àд´Ù.
±×¸®°í ¸í·É¾î ¶óÀÎ ¿É¼Ç°ú ¿ÀÆÛ·£µå¸¦ ó¸®ÇÑ´Ù. ±×¸®°í ÇöÀç ÀÛ¾÷ µð·ºÅ丮¿¡¼
init ÆÄÀÏÀ» Àд´Ù.
Ȩµð·ºÅ丮³» init ÆÄÀÏÀº ¸í·É¾î ¶óÀÎ ¿É¼Çµé°ú ¿ÀÆÛ·£µåµé 󸮿¡ ¿µÇâÀ» ÁÖ´Â ¿É¼Ç
(set complaints
ó·³)µéÀ» ¼³Á¤ÇÑ´Ù.
init ÆÄÀϵéÀº ¿©·¯ºÐÀÌ `-nx' ¿É¼ÇµéÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é ½ÇÇàµÇÁö ¾Ê´Â´Ù.;
¸ðµå ¼±ÅÃÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
GDB ¼³Á¤Áß, init ÆÄÀÏÀº ´Ù¸¥ À̸§(À̰͵éÀº ÀüÇüÀûÀ¸·Î ´Ù¸¥ ÇüÅÂ¿Í °øÁ¸Çϱâ À§ÇØ GDB¿¡ ÇÊ¿äÇÑ Æ¯º°ÇÑ ÇüÅÂÀÇ È¯°æÀ̸ç, Ưº°ÇÑ ¹öÀüÀÇ init ÆÄÀÏÀ» À§ÇÑ ´Ù¸¥ À̸§ÀÌ´Ù)À¸·Î ¾Ë·ÁÁ® ÀÖ´Ù. À̰͵éÀº Ưº°ÇÑ init ÆÄÀÏ À̸§À» °¡Áö°í Àִ ȯ°æµéÀÌ´Ù.
¿©·¯ºÐÀº source
¸í·É¾î·Î ¸í·É¾î ÆÄÀÏÀÇ ½ÇÇàÀ» ¿ä±¸ÇÒ¼ö ÀÖ´Ù:
¸í·É¾î ÆÄÀϳ» ¶óÀεéÀº ¼ø¼ÀûÀ¸·Î ½ÇÇàµÈ´Ù. ±×°ÍµéÀº ½ÌÇàµÇ´Â ¼ø¼·Î Ãâ·ÂµÇÁö ¾Ê´Â´Ù. ¸í·É¾î Áß ¿¡·¯´Â ¸í·É¾î ÆÄÀÏÀÇ ½ÇÇàÀ» ³¡³½´Ù.
¸¸ÀÏ ¸í·É¾î ÆÄÀϳ» »ç¿ëµÉ¶§ ¹°¾îº¸´Â°Í ¾øÀÌ ´ëȽÄÀ¸·Î »ç¿ëµÈ´Ù¸é ¸í·É¾îµéÀº È®½ÅÀ» ¿ä±¸ÇÒ¼ö ÀÖ´Ù. ¸¹Àº GDB ¸í·É¾îµéÀº ¸í·É¾î ÆÄÀϵ鿡¼ È£ÃâµÉ¶§ ¸Þ¼¼Áö¸¦ »ý·«Çß´Ù´Â °ÍÀ» ¸»Çϱâ À§ÇØ º¸Åë ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÑ´Ù.
¸í·É¾î ÆÄÀÏÀ̳ª »ç¿ëÀÚ Á¤ÀÇ ¸í·É¾îÀÇ ½ÇÇ൵Áß, GDB Ãâ·ÂÀº º¸Åë ¸·ÇôÁø´Ù; ³ªÅ¸³ª´Â À¯ÀÏÇÑ Ãâ·ÂÀº Á¤ÀÇµÈ ¸í·É¾î¿¡ ÀÇÇØ Ãâ·ÂµÇ´Â °ÍÀÌ´Ù. ÀÌ ¼½¼ÇÀº ¿©·¯ºÐÀÌ ¿øÇÏ´Â Ãâ·ÂÀ» ¸¸µå´Âµ¥ À¯¿ëÇÑ ¼¼ °³ÀÇ ¸í·É¾î¸¦ ³ªÅ¸³½´Ù.
echo text
echo This is some text\n\ which is continued\n\ onto several lines.\n´ÙÀ½°ú °°Àº Ãâ·ÂÀ» ¸¸µç´Ù.
echo This is some text\n echo which is continued\n echo onto several lines.\n
output expression
output/fmt expression
print
¿Í °°Àº Æ÷¸ËÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.
´õ ¸¹Àº Á¤º¸¸¦ ¿øÇϸé Ãâ·Â Çü½Ä ¼½¼ÇÀ» ÂüÁ¶Çضó.
printf string, expressions...
printf (string, expressions...);¿¹¸¦ µé¾î, ¿©·¯ºÐÀº ÀÌ°Íó·³ 16Áø¼ö °ªÀ¸·Î µÎ °ªÀ» Ãâ·ÂÇÒ¼ö ÀÖ´Ù:
printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo¿©·¯ºÐÀÌ Æ÷¸Ë ½ºÆ®¸µ¿¡¼ »ç¿ëÇÒ¼ö ÀÖ´Â backslash-escape sequence´Â ¹®ÀÚ ´ÙÀ½¿¡ backslash·Î ÀÌ·ç¾îÁö´Â °ÍµéÀÌ´Ù.
Ưº°ÇÑ ÀÎÅÍÆäÀ̽º´Â ¿©·¯ºÐÀÌ GDB·Î µð¹ö±ëÇÏ´Â ÇÁ·Î±×·¥À» À§ÇÑ ¼Ò½º ÆÄÀϵéÀ» º¸´Âµ¥(±×¸®°í ÆíÁý) GNU Emacs¸¦ »ç¿ëÇÏ´Â°É Çã¿ëÇÑ´Ù.
ÀÌ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇϱâ À§ÇØ, Emacs¿¡¼ ¸í·É¾î M-x gdb¸¦ »ç¿ëÇضó. ÀÎÀÚ·Î½á ¿©·¯ºÐÀÌ µð¹ö±ëÇÏ±æ ¿øÇÏ´Â ½ÇÇàÆÄÀÏÀ» ÁÖ¾î¶ó. ÀÌ ¸í·É¾î´Â EmacsÀÇ ÇÏÀ§ ÇÁ·Î¼¼½º·Î½á GDB¸¦ ½ÃÀÛÇÑ´Ù.
Emacs¿¡¼ GDB¸¦ »ç¿ëÇÏ´Â °ÍÀº µÎ°¡Áö¸¦ Á¦¿ÜÇÏ°í´Â GDB »ç¿ë°ú °°´Ù:
ÀÌ°ÍÀº GDB ¸í·É¾î¿Í Ãâ·Â¿¡ ¸ðµÎ Àû¿ëµÇ¸ç ÀԷ°ú Ãâ·ÂÀº ¿©·¯ºÐÀÌ µð¹ö±ëÇÏ´Â ÇÁ·Î±×·¥¿¡ ÀÇÇØ ÇàÇØÁø´Ù.
±×°ÍÀº ¿©·¯ºÐÀÌ Àü ¸í·É¾îÀÇ ÅؽºÆ®¸¦ º¹»çÇÏ°í ´Ù½Ã ÀÔ·Â Çϴ°ÍÀ» ÀǹÌÇϱ⠶§¹®¿¡ À¯¿ëÇÏ´Ù.; ¿©·¯ºÐÀº ÀÌ ¹æ¹ýÀ¸·Î Ãâ·ÂÀÇ ÀϺκÐÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.
Emacs' ½© ¸ðµåÀÇ ¸ðµç ±â´ÉÀº ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥°ú »óÈ£ÀÛµ¿À» À§ÇØ ÀÌ¿ëµÈ´Ù. Ưº°È÷, ¿©·¯ºÐÀº º¸Åëó·³ ½ÅÈ£¸¦ º¸³¾¼ö ÀÖ´Ù--¿¹¸¦ µé¾î, ÀÎÅÍ·´Æ®¸¦ À§ÇØ C-c C-c, stopÀ» À§ÇØ C-c C-z.
GDB°¡ ½ºÅà ÇÁ·¹ÀÓÀ» º¸¿©ÁÙ¶§¸¶´Ù, Emacs´Â ÀÚµ¿ÀûÀ¸·Î ÇÁ·¹ÀÓÀ» À§ÇØ ¼Ò½º Äڵ带 ¹ß°ßÇϸç ÇöÀç ¶óÀÎÀÇ ¿ÞÂÊ °¡ÀåÀÚ¸®¿¡ È»ìÇ¥ (`=>')¸¦ ³õ´Â´Ù. Emacs ¼Ò½º Ãâ·ÂÀ» À§ÇØ ºÐ¸®µÈ ¹öÆÛ¸¦ »ç¿ëÇϸç GDB ¼¼¼Ç°ú ¼Ò½º ÄÚµå µÑ´Ù º¸¿©ÁÖ±â À§ÇØ ½ºÅ©¸°À» ³ª´«´Ù.
¸í¹éÇÑ GDB list
³ª Ž»ö ¸í·É¾îµéÀº ¿©ÀüÈ÷ º¸Å붧 ó·³
Ãâ·ÂÀ» ¸¸µéÁö¸¸ ¿©·¯ºÐÀº Emacs¿¡¼ ±×°ÍµéÀ» »ç¿ëÇÒ ÀÌÀ¯°¡ ¾ø´Ù.
°æ°í: ¸¸ÀÏ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ ÀÖ´Â µð·ºÅ丮°¡ ÇöÀç µð·ºÅ丮°¡ ¾Æ´Ï¶ó¸é, ¼Ò½º ÆÄÀÏÀÇ À§Ä¡¿¡ °üÇØ Emacs°¡ È¥µ·ÇÒ¼ö ÀÖ´Ù. ±×·± °æ¿ì º¸Á¶ Ãâ·Â ¹öÆÛ´Â ¼Ò½º ÆÄÀÏÀ» º¸¿©ÁÖ±â À§ÇØ ³ªÅ¸³ªÁö ¾Ê´Â´Ù. GDB´Â ȯ°æ
PATH
º¯¼ö¸¦ Ž»öÇÏ¿© ÇÁ·Î±×·¥À» ¹ß°ßÇÒ¼ö ÀÖ´Ù. ±×·¡¼ GDB ÀԷ°ú Ãâ·Â ¼¼¼ÇÀº °è¼Ó µÈ´Ù. ±×·¯³ª Emacs´Â ¼Ò½º ÆÄÀÏÀ» ã±â À§ÇØ GDB¿¡¼ ´Ù½Ã ÃæºÐÇÑ Á¤º¸¸¦ ¾òÁö ¸øÇÑ´Ù. ÀÌ ¹®Á¦¸¦ ÇÇÇϱâ À§ÇØ, ÇÁ·Î±×·¥ÀÌ Á¸ÀçÇÏ´Â µð·ºÅ丮³ª M-x gdb ÀÎÀÚ¿¡¼ ÇÁ·ÒÇÁÆ®µÉ¶§ È®½ÇÇÑ ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ°í GDB ¸ðµå¸¦ ½ÃÀÛÇضó.¸¸ÀÏ ¿©·¯ºÐÀÌ Emacs³» GDB ¹öÆÛ¿¡¼ ´Ù¸¥ À§Ä¡¿¡ ÀÖ´Â ÇÁ·Î±×·¥À» µð¹ö±ëÇϱâ À§ÇØ ¹Ù²Ü¶§ GDB
file
¸í·É¾î¸¦ »ç¿ëÇÑ´Ù¸é ºñ½ÁÇÑ È¥µ·ÀÌ »ý±æ¼ö ÀÖ´Ù.
±âº»ÀûÀ¸·Î, M-x gdb´Â `gdb'¶ó ºÒ¸®´Â ÇÁ·Î±×·¥À» È£ÃâÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ´Ù¸¥ À̸§(¿¹¸¦ µé¾î, ¸¸ÀÏ ¿©·¯ºÐÀÌ ´Ù¸¥ À̸§À» °¡Áö°í ¸î¸î ¼³Á¤À»
À¯ÁöÇÑ´Ù¸é)À¸·Î GDB¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é, ¿©·¯ºÐÀº Emacs º¯¼ö
gdb-command-name
¸¦ ¼³Á¤ÇÒ¼ö ÀÕ´Ù; ¿¹¸¦ µé¾î,
(setq gdb-command-name "mygdb")
´Â(ESC ESC³ª *scratch*
¹öÆÛ¿¡ ŸÀÌÇÎÇϰųª `.emacs' ÆÄÀϳ»¿¡) Emacs°¡ "mygdb
"¶ó´Â À̸§ÀÇ ÇÁ·Î±×·¥À» È£ÃâÇϵµ·Ï ¸¸µç´Ù.
GDB I/O ¹öÆÛ¿¡¼, ¿©·¯ºÐÀº Ç¥ÁØ Shell ¸ðµå ¸í·É¾î¿¡´Ù°¡ À̵é ƯÁ¤ Emacs ¸í·É¾î¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù:
step
¸í·É¾î ó·³ ´Ù¸¥ ¼Ò½º ¶óÀÎÀ» Ãâ·ÂÇÑ´Ù.; ¶ÇÈç ÇöÀç ÆÄÀÏ°ú
À§Ä¡¸¦ º¸¿©ÁÖ±â À§ÇØ À©µµ¿ìÀÇ Ãâ·ÂÀ» °»½ÅÇÑ´Ù.
next
¸í·É¾î ó·³
ÀÌ ÇÔ¼ö³»¿¡¼ ´ÙÀ½ ¼Ò½º ÆÄÀÎÀ» ½ÇÇàÇÑ´Ù. ±×¸®°í ÇöÀç ÆÄÀÏ°ú À§Ä¡¸¦ º¸¿©ÁÖ±â À§ÇØ
À©µµ¿ìÀÇ Ãâ·ÂÀ» °»½ÅÇÑ´Ù.
stepi
¸í·É¾î ó·³ ÇÑ ¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù; À©µµ¿ìÀÇ Ãâ·ÂÀ» °»½ÅÇÑ´Ù.
nexti
¸í·É¾î¸¦ »ç¿ëÇÏ¿© ´ÙÀ½ ¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù; À©µµ¿ì Ãâ·ÂÀ» °»½ÅÇÑ´Ù.
finish
¸í·É¾î ó·³ ¼±ÅÃµÈ ½ºÅà ÇÁ·¹ÀÓ¿¡¼ Á¾·áÇÒ¶§±îÁö ½ÇÇàÇÑ´Ù.
continue
¸í·É¾î ó·³, ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» °è¼ÓÇÑ´Ù.
°æ°í: Emacs v19¿¡¼, ÀÌ ¸í·É¾î´Â C-c C-pÀÌ´Ù.
up
¸í·É¾î ó·³, ¼ýÀÚ ÀÎÀÚ(The GNU Emacs Manual¿¡ ÀÖ´Â
`Numeric Arguments` ¼½¼ÇÀ» ÂüÁ¶Çضó.)°¡ °¡¸®Å°´Â ÇÁ·¹ÀÓ¼ö·Î ¿Ã¶ó °¡¶ó.
°æ°í:Emacs v19¿¡¼, ÀÌ ¸í·É¾î´Â C-c C-uÀÌ´Ù.
down
¸í·É¾î ó·³, ¼ýÀÚ ÀÎÀÚ°¡ °¡¸®Å°´Â ÇÁ·¹ÀÓ ¼ö·Î ³»·Á °¡¶ó.
°æ°í: Emacs v19¿¡¼, ÀÌ ¸í·É¾î´Â C-c C-dÀÌ´Ù.
disassemble
¸¦ À§ÇØ ÀÎÀÚ¸¦ ³Ö¾î¶ó.
¿©·¯ºÐÀº ¸®½ºÆ® gdb-print-command
ÀÇ ¿ä¼ÒµéÀ» Á¤ÀÇÇÏ¿© ¾ÕÀ¸·Î ÀÌ°ÍÀ» Ä¿½ºÅ͸¶ÀÌ¡
ÇÒ¼ö ÀÖ´Ù; ÀÏ´Ü Á¤ÀǵǸé, ¿©·¯ºÐÀº Æ÷¸ËÇÒ¼ö Àְųª ±×·¸Áö ¾ÊÀ¸¸é ÇÁ·Î¼¼½º ¼öµéÀº Áý¾î ³Ö±â Àü¿¡
C-x &À¸·Î °è¼ÓÇÒ¼ö ÀÖ´Ù. C-x &À» À§ÇÑ ¼ö ÀÎÀÚ´Â ¿©·¯ºÐÀÌ ¿øÇÏ´Â Æ÷¸Ë°ú
Emacs ÇÔ¼ö format
¸¦ »ç¿ëÇÏ¿© Æ÷¸ËÇÑ ¿ä¼Ò¸¦ ¼±ÅÃÇϱâ À§ÇÑ À妽º·Î½á ÀÛµ¿ÇÑ´Ù.;
±×·¸Áö ¾ÊÀ¸¸é ¼ö´Â »óÀÀÇÏ´Â ¸®½ºÆ® ¿ä¼Ò¿¡ ´ëÇÑ ÀÎÀڷνá Àü´ÞµÈ´Ù.
¾î¶² ¼Ò½º ÆÄÀϳ»¿¡¼, Emacs ¸í·É¾î C-x SPC (gdb-break
)´Â
¼Ò½º ¶óÀÎ Æ÷ÀÎÅÍ¿¡ brekapoint°¡ ¼³Á¤µÇµµ·Ï GDB¿¡°Ô ¸»ÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ À߸øÇÏ¿© ¼Ò½º Ãâ·Â ¹öÆÛ¸¦ Áö¿î´Ù¸é, ´Ù½Ã breakpoint¸¦ °¡Áö´Â ½¬¿î ¹æ¹ýÀº
ÇÁ·¹ÀÓ Ãâ·ÂÀ» ¿ä±¸Çϱâ À§ÇØ GDB ¹öÆÛ¿¡ ¸í·É¾î f
¸¦ ŸÀÌÇÎÇÏ´Â °ÍÀÌ´Ù.;
¿©·¯ºÐÀÌ Emacs¿¡¼ µ¹¸±¶§, ¸¸ÀÏ ÇöÀç ÇÁ·¹ÀÓÀÇ ¹®¸ÆÀ» ¿©·¯ºÐ¿¡°Ô º¸¿©ÁÙ ÇÊ¿ä°¡ ÀÖ´Ù¸é
ÀÌ°ÍÀº ¼Ò½º ¹öÆÛ¸¦ ´Ù½Ã ¸¸µç´Ù.
Emacs¿¡¼ º¸¿©ÁÖ´Â ¼Ò½º ÆÄÀϵéÀº º¸Åë Emacs ¹öÆÛ¿¡ ÀÖ´Ù. ¿©·¯ºÐÀº ¿øÇÑ´Ù¸é ÀÌµé ¹öÆÛ¸¦ °¡Áö°í ÀÖ´Â ÆÄÀϵéÀ» ÆíÁýÇÒ¼ö ÀÖ´Ù; ±×·¯³ª GDB´Â Emacs¿Í ¶óÀÎ ³Ñ¹ö¸¦ ¼ö´ÜÀ¸·Î Åë½ÅÇѴٴ°ÍÀ» ±â¿ªÇضó. ¸¸ÀÏ ¿©·¯ºÐÀÌ ÅؽºÆ®¿¡¼ ¶óÀÎÀ» Ãß°¡Çϰųª Áö¿î´Ù¸é, GDB°¡ ¾Ë°í ÀÖ´Â ¶óÀÎ ³Ñ¹ö´Â Äڵ忡 »óÀÀÇÏ´Â °ÍÀ» ¸ØÃá´Ù.
¿©·¯ºÐÀÇ ¹ö±× ¸®Æ÷Æ®´Â ¹ÏÀ»¼ö ÀÖ´Â GDB¸¦ ¸¸µå´Âµ¥ ÇʼöÀûÀÎ ¿ªÈ°À» ÇÑ´Ù.
¹ö±× ¸®Æ÷ÆÃÀº ¿©·¯ºÐÀÇ ¹®Á¦¸¦ ÇØ°áÇϴµ¥ µµ¿ÍÁØ´Ù. ±×·¯³ª ¾î¶² °æ¿ìµçÁö ¹ö±× ¸®Æ÷ÆÃÀÇ ±âº» ±â´ÉÀº GDBÀÇ ´ÙÀ½ ¹öÀüÀ» ´õ ÁÁ°Ô ¸¸µé±â À§ÇÑ ÀüüÀû Ä¿¹Â´ÏƼ¸¦ µµ¿ÍÁشٴ °ÍÀÌ´Ù. ¹ö±× ¸®Æ÷ÆÃÀº GDB¸¦ À¯ÁöÇϱâ À§ÇÑ ¿©·¯ºÐÀÇ °øÇåÀÌ´Ù.
¹ö±× ¸®Æ÷Æ®½Ã, ¿©·¯ºÐÀº ¿ì¸®°¡ ¹ö±×¸¦ °íÄ¥¼ö ÀÖµµ·Ï °¡´ÉÇÑ Á¤º¸µéÀ» Æ÷ÇÔÇØ¾ß ÇÑ´Ù.
¿©·¯ºÐÀÌ ¹ö±×¸¦ ¹ß°ßÇß´ÂÁö¸¦ È®½ÅÇÏÁö ¸øÇÑ´Ù¸é, ¿©±â¿¡ ¾à°£ÀÇ ÁöħÀÌ ÀÖ´Ù:
¿©·¯ ȸ»ç¿Í °³ÀεéÀÌ GNU Á¦Ç°À» À§ÇØ Áö¿øÀ» Á¦°øÇÑ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ Áö¿ø ±â±¸ GDB¸¦ ¾ò±æ ¿øÇÑ´Ù¸é, ¿ì¸®´Â ¿©·¯ºÐÀÌ ¿ì¼± ±â±¸¿¡ Á¢ÃËÇϱæ ÃßõÇÑ´Ù.
¿©·¯ºÐÀº GNU Emacs ¹èÆ÷¿¡ ÀÖ´Â ÆÄÀÏ `etc/SERVICE'¿¡¼ ¸¹Àº Áö¿ø ȸ»çµé°ú °³Àε鿡 °üÇÑ Á¤º¸¸¦ ãÀ»¼ö ÀÖ´Ù.
¾î¶² °æ¿ìµç, ¿ì¸®´Â ¿©·¯ºÐÀÌ ´ÙÀ½ ÁÖ¼Òµé Áß Çϳª·Î GDB ¹ö±× ¸®Æ÷Æ®¸¦ º¸³»±æ ÃßÀüÇÑ´Ù.:
bug-gdb@prep.ai.mit.edu {ucbvax|mit-eddie|uunet}!prep.ai.mit.edu!bug-gdb
`info-gdb'³ª, `help-gdb', ¶Ç´Â ¾î¶² ´º½º±×·ì¿¡µµ ¹ö±× ¸®Æ÷Æ®¸¦ º¸³»Áö ¸¶¶ó. GDBÀÇ ´ëºÎºÐÀÇ ¤µ ¤¿¿ëÀÚµéÀº ¹ö±× ¸®Æ÷Æ®¸¦ ¹Þ±æ ¿øÇÏÁö ¾Ê´Â´Ù. À̵éÀÌ Çϴ°ÍÀº ¹ÞÀº `bug-gdb'¸¦ Á¤¸®ÇÏ´Â °ÍÀÌ´Ù.
¸ÞÀϸµ ¸®½ºÆ® `bug-gdb'´Â ¸®ÇÇÅÍ·Î½á ¿ªÇÒÀ» ÇÏ´Â ´º½º ±×·ì `gnu.gdb.bug'¸¦ °¡Áö°í ÀÖ´Ù. ¸ÞÀ̸µ ¸®½ºÆ®¿Í ´º½º±×·ìÀº Á¤È®È÷ °°Àº ¸Þ¼¼Áö¸¦ Àü´ÞÇÑ´Ù. ÀÚÁÖ »ç¶÷µéÀº ¸ÞÀϸµ ¸®½ºÆ® ´ë½Å ´º½º±×·ì¿¡ ¹ö±× ¸®Æ÷Æ®¸¦ Æ÷½ºÆÃÇÒ·Á°í ÇÑ´Ù. ÀÌ°ÍÀº ±¦ÂúÀº°Í °°Áö¸¸ Áß¿äÇÑ ¹®Á¦¸¦ °¡Áö°Ô µÈ´Ù: ´º½º ±×·ì Æ÷½ºÆÃÀº ÀÚÁÖ º¸³½ »ç¶÷¿¡ ´ëÇÑ ¸ÞÀÏ °æ·Î°¡ ºÎÁ·ÇÏ´Ù. ÀÌ¿Í °°ÀÌ, ¿ì¸®°¡ ´õ ¸¹Àº Á¤º¸¸¦ ¿ä±¸ÇÒ ÇÊ¿äÇÒ °æ¿ì, ¿ì¸®´Â ¿©·¯ºÐ¿¡°Ô ¾Ë¸±¼ö°¡ ¾ø´Ù. ÀÌ·± ÀÌÀ¯ ¶§¹®¿¡, ¸ÞÀϸµ ¸®½ºÆ®·Î ¹ö±× ¸®Æ÷Æ®¸¦ º¸³»´Â °ÍÀÌ ÁÁ´Ù.
As a last resort, send bug reports on paper to:
GNU Debugger Bugs Free Software Foundation Inc. 59 Temple Place - Suite 330 Boston, MA 02111-1307 USA
¹ö±× ¸®Æ÷ÆÃÀÇ ±âº»ÀûÀÎ ¿ø¸®´Â ÀÌ°ÍÀÌ´Ù: report all the facts. ¸¸ÀÏ ¿©·¯ºÐÀÌ »óÅ°¡ »ç½ÇÀÎÁö ¾Æ´ÑÁö¸¦ È®½ÅÇÏÁö ¸øÇÑ´Ù¸é, ±×·¸°Ô ½á¶ó.
ÀÚÁÖ »ç¶÷µéÀº »ç½ÇµéÀ» »ý·«ÇÑ´Ù. ¿Ö³ÄÇÏ¸é ±×µéÀº ¹®Á¦ÀÇ ¿øÀÎÀ» ¾È´Ù°í »ý°¢ÇÏ°í ¸î¸î ¼¼ºÎ»çÇ×Àº Áß¿äÇÏÁö ¾Ê´Ù°í °¡Á¤Çϱ⠶§¹®ÀÌ´Ù. ¿©·¯ºÐÀº ¿¹Á¦¿¡¼ ¿©·¯ºÐÀÌ »ç¿ëÇÏ´Â º¯¼öÀÇ À̸§Àº Áß¿äÇÏÁö ¾Ê´Ù°í °¡Á¤ÇÑ´Ù. ¾Æ¸¶µµ ±×·¸Áö´Â ¾ÊÀ»°ÍÀÌÁö¸¸, ´©±¸µµ È®½ÅÇÒ¼ö´Â ¾ø´Ù. ¾Æ¸¶µµ ¹ö±×´Â ¸Þ¸ð¸®¿¡ ÀúÀåµÇ¾î ÀÖ´Â À§Ä¡¿¡¼ °¡Á®¿Ã¶§ ÀϾ´Â À߸øµÈ ¸Þ¸ð¸® ÂüÁ¶ÀÌ´Ù.; ¾Æ¸¶µµ, ¸¸ÀÏ À̸§ÀÌ ´Ù¸£´Ù¸é, ±× À§Ä¡ÀÇ ³»¿ëÀº ¹ö±×¿¡µµ ºÒ±¸ÇÏ°í Àû´çÇÑ ¹æ¹ýÀ¸·Î Çϴ°ÍÀº µð¹ö°Å¿¡°Õ ¹«¸®´Ù. ¾ÈÀüÇÏ°Ô Ç÷¹ÀÌÇÏ°í Ưº°ÇÏ°í ¿ÏÀüÇÑ ¿¹¸¦ ÁÖ¾î¶ó. ±×°ÍÀÌ ¿©·¯ºÐÀÌ ÇÒ¼ö ÀÖ´Â °¡Àå ½¬¿î °ÍÀÌ°í °¡Àå µµ¿òÀÌ µÈ´Ù.
¹ö±× ¸®Æ÷Æ®ÀÇ ¸ñÀûÀº ¹ö±×°¡ ¿ì¸®¿¡°Ô »õ·Ó´Ù¸é ¹ö±×¸¦ °íÄ¡´Â°ÍÀ» °¡´ÉÇÏ°Ô ÇØÁشٴ Á¡À» À¯ÀÇÇضó. ±×·¯¹Ç·Î ¹ö±×°¡ ¾ÆÁ÷ ¸®Æ÷Æ®µÇÁö ¾Ê¾Ò´Ù°í °¡Á¤ÇÏ°í º¸³»¶ó.
°¡²û »ç¶÷µéÀº ¾à°£ÀÇ »ç½Ç¸¸À» ÁÖ°í "Does this ring a bell?"À» ¹°¾îº»´Ù. ÀÌµé ¹ö±× ¸®Æ÷Æ®´Â ¾µ¸ð¾ø´Ù. ±×¸®°í ¿ì¸®´Â ¹ö±×¸¦ ¸®Æ÷Æ® ÇÑ »ç¶÷¿¡°Ô ¾à°£ÀÇ ÀܼҸ®¸¦ Çϴ°ÍÀ» Á¦¿ÜÇÏ°í ¸ðµç »ç¶÷µé¿¡°Ô´Â ÀÀ´ä °ÅÀýÀ» Çϵµ·Ï ÇÑ´Ù.
¹ö±×¸¦ °íÄ¡µµ·Ï °¡´ÉÇÏ°Ô Çϱâ À§ÇØ, ¿©·¯ºÐÀº ÀÌ°Íµé ¸ðµÎ¸¦ Æ÷ÇÔÇØ¾ß ÇÑ´Ù:
show version
À» »ç¿ëÇÏ¿© ¾î´À¶§¶óµµ ±×°ÍÀ» Ãâ·ÂÇÒ¼ö ÀÖ´Ù.
ÀÌ°Í ¾øÀÌ, ¿ì¸®´Â GDBÀÇ ¾î´À ¹öÀü¿¡ ¹ö±×°¡ ÀÖ´ÂÁö¸¦ ¾ËÁö ¸øÇÑ´Ù.
¿©±â¿¡ ÇÊ¿äÇÏÁö ¾Ê´Â ¸î°¡Áö °ÍÀÌ ÀÖ´Ù:
GDB 4 ¸±¸®Áî´Â ¸ÞÀÎ ¼Ò½º µð·ºÅ丮(4)ÀÇ `gdb' ÇÏÀ§ µð·ºÅ丮¿¡ PostScript³ª GhostScript·Î Ãâ·ÂÇÒ¼ö ÀÖ´Â ÀÌ¹Ì Çü½ÄÈµÈ ·¹ÆÛ·±Æ® Ä«µå¸¦ Æ÷ÇÔÇÑ´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÌ ÇÁ¸°ÅÍ¿¡¼ PostScript³ª GhostScript¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù¸é, ¿©·¯ºÐÀÌ `refcard.ps'·Î Áï½Ã ·¹ÆÛ·±Æ® Ä«µå¸¦ Ãâ·ÂÇÒ¼ö ÀÖ´Ù.
ÀÌ ¸±¸®Áî´Â ¶ÇÇÑ ·¹ÆÛ·±½º Ä«µå¿¡ ´ëÇÑ ¼Ò½ºµµ Æ÷ÇÔÇÑ´Ù. ¿©·¯ºÐÀº TeX¸¦ »ç¿ëÇÏ¿© Æ÷¸ËÀ» ÁöÁ¤ÇÒ¼ö ÀÖ´Ù:
make refcard.dvi
GDB ·¹ÆÛ·±Æ® Ä«µå´Â US "letter" Å©±âÀÇ Á¾ÀÌ¿¡ landscape ¸ðµå·Î Ãâ·ÂÇϵµ·Ï µðÀÚÀεǾú´Ù; Áï, ½¬Æ® 11ÀÎƼ¿¡ 8.5ÀÎÄ¡Á¤µµ ³Ð´Ù. ¿©·¯ºÐÀº DVI Ãâ·Â ÇÁ·Î±×·¥¿¡ ¿É¼ÇÀ¸·Î½á Ãâ·Â ÇüŸ¦ ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.
GDB¸¦ À§ÇÑ ¸ðµç ¹®¼µéÀº ±â°è-Àб⠹èÆ÷º»ÀÇ ÀÏºÎ·Î½á ¿Â´Ù. ¹®¼µéÀº Textinfo ¹®¼·Î ¾²¿©Á³À¸¸ç
´ÜÀÏ ¼Ò½º ÆÄÀÏÀ» ¿Â¶óÀÎ Á¤º¸¿Í Ãâ·Â ¸Å´º¾ó·Î ¸¸µå´Âµ¥ »ç¿ëÇÒ¼ö ÀÖ´Â ¹®¼½Ã½ºÅÛÀÌ´Ù.
¿©·¯ºÐÀº ¹®¼ÀÇ ¿Â¶óÀÎ ¹öÀüÀ» ¸¸µé±â À§ÇØ Info Çü½Ä ¸í·É¾îµéÁß Çϳª¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
±×¸®°í Ãâ·ÂµÈ ¹öÀüÀÇ Á¶ÆÇÀ» À§ÇØ TeT(¶Ç´Â texi2roff
)¸¦ »ç¿ëÇÒ¼ö ÀÖ´Ù.
GDB´Â `gdb' ¼ºê µð·ºÅ丮¿¡ ÀÌ ¹®¼ÀÇ ¿Â¶óÀÎ Info ¹öÀüÀÇ Çü½ÄÈµÈ º¹»çº»À» ÀÌ¹Ì Æ÷ÇÔÇÏ°í
ÀÖ´Ù. ÁÖ¿ä Info ÆÄÀÏÀº `gdb-version-number/gdb/gdb.info'À̸ç, °°Àº µð·ºÅ丮¿¡¼
`gdb.info*'¿Í ¸ÅÄ¡µÇ´Â ÆÄÀϵéÀ» °¡¸®Å²´Ù.
¸¸ÀÏ ÇÊ¿äÇÏ´Ù¸é, ¿©·¯ºÐÀº À̵é ÆÄÀϵéÀ» Ãâ·ÂÇϰųª ´Ù¸¥ ¿¡µðÅÍ·Î ÀÐÀ»¼ö ÀÖ´Ù;
±×·¯³ª GNU Emacs¿¡¼ info
¸¦ »ç¿ëÇϰųª GNU Texinfo ¹èÆ÷ÆÇÀÇ ÀϺηνá ÀÌ¿ëÇÒ¼ö ÀÖ´Â
info
ÇÁ·Î±×·¥À¸·Î ÀÐÀ»¼ö ÀÖ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ ½º½º·Î À̵é Info ÆÄÀϵéÀ» Çü½ÄÈÇÏ±æ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº texinfo-format-buffer
³ª makeinfo
°°Àº Info Çü½Ä ÇÁ·Î±×·¥µé Áß Çϳª°¡ ÇÊ¿äÇÒÁö ¸ð¸¥´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ makeinfo
¸¦ ÀνºÅçÇÑ´Ù¸é, ±×¸®°í GDB ¼Ò½º µð·ºÅ丮(`gdb-`)ÀÇ ÃÖ»óÀ§
·¹º§¿¡ ÀÖ´Ù¸é, ¿©·¯ºÐÀº ´ÙÀ½°ú °°ÀÌ Å¸ÀÌÇÎÇÏ¿© Info ÆÄÀÏÀ» ¸¸µé¼ö ÀÖ´Ù:
cd gdb make gdb.info
¸¸ÀÏ ¿©·¯ºÐÀÌ ÀÌ ¸Å´º¾óÀÇ º¹»çº»À» Á¶ÆÇÇÏ°í Ãâ·ÂÇϱ⸦ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº DBI output ÆÄÀϵéÀ» Ãâ·ÂÇÒ¼ö ÀÖ´Â ÇÁ·Î±×·¥ TeX°¡ ÇÊ¿äÇÏ´Ù. ±×¸®°í Textinfo Á¤ÀÇ ÆÄÀÏ `texinfo.tex'ÀÌ ÇÊ¿äÇÏ´Ù.
Text´Â Á¶ÆÇ ÇÁ·Î±×·¥ÀÌ´Ù; ±×°ÍÀº Á÷Á¢ ÆÄÀÏÀ» Ãâ·ÂÇÏÁö ¾ÊÀ¸¸ç DVI ÆÄÀÏÀ» ºÒ·¯ output ÆÄÀϵéÀ» ¸¸µç´Ù. ¸¸ÀÏ ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ TeX°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é, ±×·± ÇÁ·Î±×·¥À» °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. »ç¿ëÇÒ Á¤È®ÇÑ ¸í·É¾î´Â ½Ã½ºÅÛ¿¡ ÀÇÁ¸ÇÑ´Ù; lpr -d°¡ ÀϹÝÀûÀÌ´Ù; ´Ù¸¥(PostScript ÀåÄ¡µé)°ÍÀº dvipsÀÌ´Ù. DVI Ãâ·Â ¸í·É¾î´Â ¾î¶°ÇÑ È®ÀåÀ̳ª `.dvi' È®Àå ¾øÀÌ ÆÄÀÏÀ̸§À» ¿ä±¸ÇÑ´Ù.
TeX ¶ÇÇÑ `texinfo.tex'¶ó ºÒ¸®´Â ¸ÅÅ©·Î Á¤ÀÇ ÆÄÀϵéÀ» ¿ä±¸ÇÑ´Ù. ÀÌ ÆÄÀÏÀº Textinfo Çü½ÄÀ¸·Î ¾²¿©Áø ¹®¼¸¦ Á¶ÆÇÇÏ´Â ¹æ¹ýÀ» TeX¿¡°Ô ¸»ÇØÁØ´Ù. TeX´Â Textinfo ÆÄÀÏÀ» Àаųª Á¶ÆÇÀ» ÇÒ¼ö ¾ø´Ù. `texinfo.tex'´Â GDB¿Í ÇÔ²² ¹èÆ÷µÇ¸ç `gdb-version-number/texinfo' µð·ºÅ丮¿¡ À§Ä¡ÇÑ´Ù.
¸¸ÀÏ ¿©·¯ºÐÀÌ TeX¿Í DVI ÇÁ¸°ÅÍ ÇÁ·Î±×·¥À» °¡Áö°í ÀÖ´Ù¸é, ¿©·¯ºÐÀº ÀÌ ¸Å´º¾óÀ» Á¶ÆÇÇÏ°í Ãâ·ÂÇÒ¼ö ÀÖ´Ù. ¿ì¼± ¸ÞÀÎ ¼Ò½º µð·ºÅ丮ÀÇ `gdb' ÇÏÀ§ µð·ºÅ丮·Î À̵¿Çضó(¿¹¸¦ µé¾î, `gdb-/gdb') ±×¸®°í ŸÀÌÇÎÇضó.:
make gdb.dvi
GDB´Â GDB ¼³Ä¡ Áغñ¸¦ ÀÚµ¿À¸·Î ÇØÁÖ´Â configure
½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇÑ´Ù.; ±×¸®°í gdb
ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇϱâ À§ÇØ make
¸¦ »ç¿ëÇضó.
(5)
GDB ¹èÆ÷´Â ÇϳªÀÇ µð·ºÅ丮¿¡ GDB ¼³Ä¡¿¡ ÇÊ¿äÇÑ ¸ðµç ¼Ò½º Äڵ尡 Æ÷ÇԵǸç, º¸Åë À̸§Àº `gdb`¿¡ ¹öÀü ¼ýÀÚ°¡ ºÙ¾î¼ ÀÌ·ç¾î Áø´Ù.
¿¹¸¦ µé¾î, GDB ¹öÀü ¹èÆ÷¹°Àº `gdb-' µð·ºÅ丮¿¡ ÀÖ´Ù. µð·ºÅ丮¿¡ Æ÷ÇÔµÈ °Íµé:
gdb-/configure (and supporting files)
gdb-/gdb
gdb-/bfd
gdb-/include
gdb-/libiberty
gdb-/opcodes
gdb-/readline
gdb-/glob
gdb-/mmalloc
GDB¸¦ ¼³Á¤ÇÏ°í ÄÄÆÄÀÏÇϱâ À§ÇÑ °¡Àå °£´ÜÇÑ ¹æ¹ýÀº `gdb-version-number' ¼Ò½º µð·ºÅ丮¿¡¼ configure
¸¦ ÇÏ´Â °ÍÀÌ´Ù.
ÀÌ ¿¹Á¦¿¡¼´Â `gdb-' µð·ºÅ丮 ÀÌ´Ù.
¿©·¯ºÐÀÌ ÀÌ µð·ºÅ丮¿¡ ¾ø´Ù¸é ¿ì¼±
`gdb-version-number' µð·ºÅ丮·Î À̵¿Çضó.;
±×¸®°í configure
¸¦ ½ÇÇàÇضó.
GDB°¡ µ¹¾Æ°¥ Ç÷§Æû ½Äº°ÀÚ¸¦ ÁÖ¾î¶ó.
¿¹¸¦ µé¾î:
cd gdb- ./configure host make
where host´Â GDB°¡ µ¹¾Æ°¥ Ç÷§ÆûÀ» ½Äº°ÇÏ´Â `sun4' ³ª
`decstation'¿Í °°Àº ½Äº°ÀÚÀÌ´Ù.
(¿©·¯ºÐÀº ÀÚÁÖ host¿¡¼ ±×¸¸µÐ´Ù.;
configure
´Â ¿©·¯ºÐÀÇ ½Ã½ºÅÛÀ» ½ÃÇèÇÏ¿© Á¤È®ÇÑ °ªÀ» ã¾Æ ³½´Ù.)
`configure host'¸¦ ½ÇÇàÇÏ°í
`bfd', `readline', `mmalloc', ±×¸®°í `libiberty' ¶óÀ̺귯¸®µé, ±×¸®°í gdb
ÀÚü¸¦ ÄÄÆÄÀÏ Çϱâ À§ÇØ make
¸¦ ½ÇÇàÇضó.
¼³Á¤µÈ ¼Ò½ºµé°ú ¹ÙÀ̳ʸ®µéÀº ¼Ò½º µð·ºÅ丮¿¡ »óÀÀÇÏ´Â °÷¿¡ ÀÖ°Ô µÈ´Ù.
configure
´Â Bourne-shell (/bin/sh
) ½ºÅ©¸³ÀÌ´Ù.; ¿©·¯ºÐ ½Ã½ºÅÛÀÌ ¸¸ÀÏ ´Ù¸¥ ½©À» ÀÌ¿ëÇÒ¶§ ÀÌ°ÍÀÌ ÀÚµ¿À¸·Î µÅÁö ¾Ê´Â´Ù¸é, ¿©·¯ºÐÀº
¸íÈ®È÷ sh
¸¦ ½ÇÇàÇØ¾ß ÇÒÁöµµ ¸ð¸¥´Ù.
sh configure host
¿©·¯ºÐÀÌ `gdb-' ¹öÀü ¼Ò½º µð·ºÅ丮¿¡¼¿Í °°ÀÌ ´ÙÁß ¶óÀ̺귯¸®µé°ú ÇÁ·Î±×·¥ ¼Ò½º µð·ºÅ丮¸¦ Æ÷ÇÔÇÏ´Â µð·ºÅ丮¿¡¼ configure
¸¦ ÇÑ´Ù¸é,
configure
´Â ¸ðµç µð·ºÅ丮 ·¹º§ ¹Ø¿¡¼ ¼³Á¤ ÆÄÀϵéÀ» ¸¸µç´Ù.(¸¸ÀÏ ±×·¸°Ô ÇÏÁö ¾ÊÀ»·Á¸é, `--norecursion' ¿É¼ÇÀ» ÁÖ¾î¶ó.).
¿©·¯ºÐÀÌ Æ¯Á¤ ÇÏÀ§ µð·ºÅ丮¸¸ ¼³Á¤Çϱ⸦ ¿øÇÑ´Ù¸é GDB ¹èÆ÷¹°¿¡¼ ƯÁ¤ ÇÏÀ§ µð·ºÅ丮¿¡¼ configure
¸¦ ½ÇÇà½Ãų¼ö ÀÖ´Ù. ±×·¯³ª °æ·Î´Â È®½ÇÈ÷ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
¿¹¸¦ µé¾î, bfd
ÇÏÀ§ µð·ºÅ丮¸¸ ¼³Á¤Çϱ⸦ ¿øÇϸé:
cd gdb-/bfd ../configure host
¿©·¯ºÐÀº ¾î¶²°÷À̵çÁö gdb
¸¦ ¼³Ä¡ÇÒ¼ö ÀÖ´Ù; °íÁ¤µÈ °æ·Î¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù.
±×·¯³ª, ¿©·¯ºÐÀº ¿©·¯ºÐÀÇ °æ·Î(`SHELL' ȯ°æ º¯¼ö¶ó ºÒ¸°´Ù)
¿¡ ÀÖ´Â ½©ÀÌ °ø°³ÀûÀ¸·Î ÀбⰡ °¡´ÉÇÑÁö È®½ÇÈ÷ ÇØ¾ß ÇÑ´Ù.
GDB´Â ÇÁ·Î±×·¥À» ½ÃÀÛÇϱâ À§ÇØ ±× ½©À» »ç¿ëÇÑ´Ù´Â °ÍÀ» ¸í½ÉÇضó. - ¸î¸î ½Ã½ºÅÛµéÀº ÇÁ·Î±×·¥µéÀÌ ÀбⰡ °¡´ÉÇÏÁö ¾ÊÀº °æ¿ì ÀÚ½Ä ÇÁ·Î¼¼½ºµéÀ» µð¹ö±ëÇϵµ·Ï GDB¸¦ Çã¿ëÇÏÁö ¾Ê´Â´Ù.
¿©·¯ºÐÀÌ ¸î¸î È£½ºÆ®³ª Ÿ°Ù ¸Ó½ÅµéÀ» À§ÇÑ GDB ¹öÀüµéÀ» ½ÇÇàÇÏ±æ ¿øÇÑ´Ù¸é,
¿©·¯ºÐÀº °¢°¢ÀÇ È£½ºÆ®¿Í Ÿ°ÙÀÇ Á¶ÇÕÀ» À§ÇÑ ´Ù¸¥ gdb
°¡ ÇÊ¿äÇÏ´Ù.
configure
´Â ¼Ò½º µð·ºÅ丮¿¡¼º¸´Ù, °¢°¢ÀÇ ÇÏÀ§ µð·ºÅ丮¿¡¼ °¢ ¼³Á¤À» ¸¸µé¼ö ÀÖµµ·Ï Çã¿ëÇÏ¿© ½±°Ô ÀÌ°ÍÀ» ¸¸µé¼ö ÀÖµµ·Ï µðÀÚÀÎ µÇ¾î ÀÖ´Ù.
¿©·¯ºÐÀÇ make
ÇÁ·Î±×·¥ÀÌ
`VPATH' ¸¦ ó¸®ÇÒ¼ö ÀÖ´Ù¸é(GNU make
´Â ÇÑ´Ù.),
ÀÌ µð·ºÅ丮µé °¢°¢¿¡ ÀÖ´Â make
¸¦ µ¹·Á ÁöÁ¤µÈ °÷¿¡
gdb
ÇÁ·Î±×·¥À» ¸¸µç´Ù.
°¢°¢ÀÇ µð·ºÅ丮¿¡ gdb
¸¦ ¼³Ä¡Çϱâ À§Çؼ´Â, ¼Ò½º¸¦ ¹ß°ßÇϵµ·Ï
ÁöÁ¤ÇÏ´Â `--srcdir' ¿É¼ÇÀ» ÁÖ¾î configure
¸¦
ÇØ¾ß ÇÑ´Ù.(¿©·¯ºÐÀº ¶ÇÇÑ ÀÛ¾÷ µð·ºÅ丮¿¡¼ configure
ÀÚü¸¦ ¹ß°ßÇϱâ À§ÇØ Æнº¸¦ ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. configure
¿¡ ´ëÇÑ °æ·Î°¡
`--srcdir' ¿¡ ´ëÇÑ ÀÎÀÚ¿Í °°´Ù¸é, ¿©·¯ºÐÀº, `--srcdir' ¿É¼ÇÀ» »¬¼ö ÀÖ´Ù.; ´ç¿¬È÷ ±×·¸°Ô °¡Á¤µÇ¾î ÀÖ´Ù.)
¿¹¸¦ µé¾î, ¿©·¯ºÐÀº ´ÙÀ½Ã³·³ Sun 4¸¦ À§ÇØ ´Ù¸¥ µð·ºÅ丮¿¡¼ GDB¸¦ ¼³Ä¡ÇÒ¼ö ÀÖ´Ù.:
cd gdb- mkdir ../gdb-sun4 cd ../gdb-sun4 ../gdb-/configure sun4 make
configure
°¡ ¿ø°Ý ¼Ò½º µð·ºÅ丮¸¦ »ç¿ëÇÏ¿© ¼³Á¤À» ¸¸µé¶§, ÀÌ°ÍÀº ¼Ò½º µð·ºÅ丮³» Æ®¸®¿Í °°Àº ±¸Á¶(±×¸®°í °°Àº À̸§À» »ç¿ëÇÑ´Ù)¸¦ °¡Áø ¹ÙÀ̳ʸ®¸¦ À§ÇÑ Æ®¸®¸¦ ¸¸µç´Ù.
¿¹¸¦ µé¾î, ¿©·¯ºÐÀº `gdb-sun4/libiberty' µð·ºÅ丮³»¿¡¼ Sun 4
¶óÀ̺귯¸® `libiberty.a' ¸¦ ¹ß°ßÇÒ °ÍÀÌ°í GDB ÀÚü´Â
`gdb-sun4/gdb' ¿¡¼ ¹ß°ßÇÒ °ÍÀÌ´Ù.
°¡°¢ÀÇ µð·º4Å丮¿¡ ¿©·¯°³ÀÇ GDB ¼³Á¤µéÀ» ¸¸µå´Â °¡Àå Àαâ ÀÖ´Â ÀÌÀ¯´Â
Å©·Î½º-ÄÄÆÄÀÏ(GDB ´Â ÇÑ ¸Ó½Å¿¡¼ µ¹¾Æ°£´Ù--the host--- ¹Ý¸é¿¡ µð¹ö±ë ÇÁ·Î±×·¥Àº ´Ù¸¥ ¸Ó½Å¿¡¼ µ¹¾Æ°£´Ù--the target)À» À§ÇÑ GDB¸¦ ¼³Á¤Çϱâ À§ÇؼÀÌ´Ù.
¿©·¯ºÐÀº
configure
¸¦ À§ÇÑ ¿É¼Ç `--target=target' ¸¦ ÁÖ¾î Å©·Î½º-µð¹ö±ë Ÿ°ÙÀ» ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À̳ª ¶óÀ̺귯¸®¸¦ ÄÄÆÄÀÏÇϱâ À§ÇØ make
¸¦ ½ÇÇàÇÑ´Ù¸é, ¿©·¯ºÐÀº ¼³Á¤µÈ µð·ºÅ丮³»¿¡¼ ½ÇÇàÇØ¾ß ÇÑ´Ù. - ¿©·¯ºÐÀÌ
configure
¸¦ ÇÒ¶§ ¿©·¯ºÐÀÌ ÀÖ´Â µð·ºÅ丮°¡ ¹«¾ùÀ̵çÁö (¶Ç´Â ±×°ÍÀÇ ÇÏÀ§ µð·ºÅ丮µéÁß Çϳª)
configure
°¡ °¢ ¼Ò½º µð·ºÅ丮¿¡¼ ¸¸µå´Â Makefile
Àº ¶ÇÇÑ Àç±ÍÀûÀ¸·Î ¸¸µé¾îÁø´Ù.
¿©·¯ºÐÀÌ `gdb-' °°Àº ¼Ò½º µð·ºÅ丮¿¡¼
make
¸¦ ÇÑ´Ù¸é, ¿©·¯ºÐÀº °ü·Ã ¶óÀ̺귯¸®µéÀ» ¸ðµÎ ÄÄÆÄÀÏ ÇÒ¼ö ÀÖ´Ù. ±×¸®°í GDBµµ ¸¸µé¾î Áø´Ù.
¿©·¯ºÐÀÌ °¢°¢ÀÇ µð·ºÅ丮¿¡ ´ÙÁß È£½ºÆ®³ª Ÿ°Ù¿¡ °üÇÑ ¼³Á¤À» °¡Áö°í ÀÖ´Ù¸é,
º´·ÄÀûÀ¸·Î make
¸¦ ÇÒ¼ö ÀÖ´Ù.
(¿¹¸¦ µé¾î, °¢°¢ÀÇ µð·ºÅ丮µéÀÌ È£½ºÆ®µé °¢°¢¿¡ ¸¶¿îÆ®µÈ NFSÀÎ °æ¿ì);
À̰͵éÀº ¼·Î¼·Î °£¼·ÇÏÁö ¾Ê´Â´Ù.
configure
½ºÅ©¸³Æ®¿¡¼ È£½ºÆ®¿Í Ÿ°ÙÀ» À§ÇØ »ç¿ëµÈ ÁöÁ¤¾îµéÀº ¼¼ ºÎºÐ À̸§ ±¸Á¶¿¡ ±â¹ÝÇÏ°í ÀÖ´Ù. ±×·¯³ª ¸î¸î ¹Ì¸® Á¤ÀÇµÈ ¾Ù¸®¾î½º(º°¸í)µµ ¶ÇÇÑ Áö¿øµÈ´Ù. ¿ÏÀüÇÑ À̸§ ±¸Á¶´Â ´ÙÀ½ ÆÐÅÏ¿¡¼Ã³·³ ¼¼°³ÀÇ Á¤º¸Á¶°¢À¸·Î ÀÎÄÚµåµÈ´Ù.
architecture-vendor-os
¿¹¸¦ µé¾î, ¿©·¯ºÐÀº host ÀÎÀڷμ ¶Ç´Â --target=target
¿É¼Ç¿¡¼ target À» À§ÇÑ °ªÀ¸·Î sun4
¸¦
»ç¿ëÇÒ¼ö ÀÖ´Ù. ÀÌ°Í°ú °°Àº ¿ÏÀüÇÑ À̸§Àº `sparc-sun-sunos4'ÀÌ´Ù.
GDB¿¡ µé¾î ÀÖ´Â configure
½ºÅ©¸³Æ®´Â Áö¿øµÇ´Â ¸ðµç È£½ºÆ®³ª Ÿ°Ù À̸§µé ¶Ç´Â ¾Ù¸®¾î½ºÀÇ ¸®½ºÆ®µéÀ» ÁúÀÇÇÒ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÏÁö ¾Ê´Â´Ù.
configure
´Â ´ÜÃà¸í°ú ¿ÏÀüÇÑ À̸§µéÀ» ´ëÀÀ½ÃÅ°±â À§ÇØ
Bourne ½© ½ºÅ©¸³Æ® config.sub
¸¦ È£ÃâÇÑ´Ù.
¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é, ¿©·¯ºÐÀº ÇØ´ç ½ºÅ©¸³Æ®¸¦ ÀÐÀ»¼ö ÀÖÀ¸¸ç ´ÜÃà¸íÀ» Å×½ºÆ®Çϱâ À§ÇØ ÀÌ°ÍÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù. -- ¿¹¸¦ µé¾î:
% sh config.sub sun4 sparc-sun-sunos4.1.1 % sh config.sub sun3 m68k-sun-sunos4.1.1 % sh config.sub decstation mips-dec-ultrix4.2 % sh config.sub hp300bsd m68k-hp-bsd % sh config.sub i386v i386-unknown-sysv % sh config.sub i786v Invalid configuration `i786v': machine `i786v' not recognized
config.sub
´Â GDB ¼Ò½º µð·ºÅ丮¿¡ ÀÖ´Ù.(`gdb-', ¹öÀü).
configure
¿É¼Çµé
´ÙÀ½Àº GDB¸¦ ÄÄÆÄÀÏÇÒ¶§ À¯¿ëÇÑ configure
¿É¼Çµé°ú ÀÎÀڵ鿡 ´ëÇÑ °³¿äÀÌ´Ù.
configure
´Â ¶ÇÇÑ ¿©±â¿¡ ¸®½ºÆ®µÇÁö ¾ÊÀº ¿É¼Çµéµµ ÀÖ´Ù.
configure
¿¡ ´ëÇÑ ¿ÏÀüÇÑ ¼³¸í¼ÀÎ `configure.info'ÀÇ `What Configure does' ºÎºÐÀ» ÂüÁ¶Çضó.
configure [--help] [--prefix=dir] [--srcdir=dirname] [--norecursion] [--rm] [--target=target] host
¿©·¯ºÐÀº ¿øÇÑ´Ù¸é `--' º¸´Ù `-' ÇÑ°³¸¦ ÀÌ¿ëÇÏ¿© ¿É¼ÇµéÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.; ±×·¯³ª ¿©·¯ºÐÀº `--' ¸¦ »ç¿ëÇÑ´Ù¸é ¿É¼ÇÀ̸§µéÀ» ´ÜÃàÇÒ¼ö ÀÖ´Ù.
--help
configure
¸¦ ½ÇÇà½Ãų¼ö ÀÖ´Â ¹æ¹ý¿¡ ´ëÇÑ °£´ÜÇÑ ¿ä¾àÀ» º¸¿©ÁØ´Ù.
-prefix=dir
--srcdir=dirname
VPATH
Ư¡À» ¼öÇàÇÒ¼ö ÀÖ´Â GNU make
³ª, ´Ù¸¥ make
¸¦ ¿ä±¸ÇÑ´Ù.
configure
´Â ÇöÀç µð·ºÅ丮¿¡ Àִ ƯÁ¤ ÆÄÀÏ¿¡
¼³Á¤µéÀ» ¾´´Ù. ±×·¯³ª dirname µð·ºÅ丮¿¡ ¼Ò½º¸¦ »ç¿ëÇϱâ À§ÇØ
±×°ÍµéÀ» ¹èÄ¡ÇÑ´Ù. configure
´Â
dirname ¾Æ·¡ ¼Ò½º µð·ºÅ丮¿Í º´·ÄÀûÀ¸·Î ÀÛ¾÷ µð·ºÅ丮³»¿¡
µð·ºÅ丮µéÀ» ¸¸µç´Ù.
--norecursion
configure
°¡ ½ÇÇàµÇ´Â µð·ºÅ丮¿¡¼¸¸ ¼³Á¤µÈ´Ù.; ÇÏÀ§ µð·ºÅ丮´Â
¼³Á¤ÇÏÁö ¾Ê´Â´Ù.
--rm
--target=target
host ...
configure
´Â ´Ù¸¥ GNU Åøµé°ú Àç±ÍÀûÀ¸·Î ¼³Á¤µÉ¼ö ÀÖµµ·Ï ´Ù¸¥ ¿É¼ÇµéÀ» ¹Þ¾ÆµéÀδÙ.; ±×·¯³ª À̰͵éÀº ´ÜÁö GDB³ª Áö¿ø ¶óÀ̺귯¸®µé¿¡ ¿µÇâÀ» ÁÖ´Â ¿É¼ÇµéÀÌ´Ù.
Jump to: # - $ - . - / - : - @ - a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p - q - r - s - t - u - v - w - x - z - {
#
in Modula-2
$
$$
$_
and info breakpoints
$_
and info line
$_
, $__
, and value history
breakpoint
subroutine, remote
heuristic-fence-post
(MIPS)
remotedebug
protocol
remotedebug
, MIPS protocol
retransmit-timeout
, MIPS protocol
target remote
target remote
timeout
, MIPS protocol
`b'´Â »ç¿ëµÉ¼ö ¾ø´Ù. ¿Ö³ÄÇϸé À̵é Çü½Ä ¹®ÀÚµéÀº x
¸í·É¾î¿¡ »ç¿ë¸ç,
`b'´Â "byte"¸¦ ³ªÅ¸³½´Ù.
¸Þ¸ð¸® °Ë»çÇϱ⠼½¼ÇÀ» ÂüÁ¶Çضó.
This is a way of removing
one word from the stack, on machines where stacks grow downward in
memory (most machines, nowadays). This assumes that the innermost
stack frame is selected; setting $sp
is not allowed when other
stack frames are selected. To pop entire frames off the stack,
regardless of machine architecture, use return
;
see section Returning from a function.
¸¸ÀÏ ¿©·¯ºÐÀÌ ´Ù¸¥ ¼ºñ½º¿Í Ãæµ¹µÇ´Â Æ÷Æ® ³Ñ¹ö¸¦ ¼±ÅÃÇÑ´Ù¸é, gdbserver
´Â ¿¡·¯ ¸Þ¼¼Áö¸¦
Ãâ·ÂÇÏ°í Á¾·áµÈ´Ù.
¸±¸®Áî ¹öÀüÀÇ `gdb-/gdb/refcard.ps'.
¸¸ÀÏ ¿©·¯ºÐÀÌ ÃÖ±Ù ¹öÀüÀÇ GDB¸¦ °¡Áö°í ÀÖ´Ù¸é, ¼Ò½º¿¡ ÀÖ´Â `README'¸¦ ºÁ¶ó.; ¿ì¸®´Â ÀÌ ¸Å´º¾óÀ» ¹ßÇ¥Ç߱⠶§¹®¿¡ ¼³Ä¡ ÀýÂ÷¸¦ °»½ÅÇØ¾ß ÇÑ´Ù.
This document was generated on 30 May 1999 using the texi2html translator version 1.52.