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