×ðÁú¿­Ê±

gdbµ÷ÊÔ¹¤¾ßµÄʹÓÃ

gdbÊÇÒ»¿îÓÃÓÚµ÷ÊÔc¡¢c++µÈÓïÑÔ³ÌÐòµÄÇ¿Ê¢ÏÂÁîÐй¤¾ß £¬¿ÉÈóÌÐòÔ±ÔÚÖ´ÐÐÀú³ÌÖмàÊӺͿØÖƳÌÐòÁ÷ £¬ÒÔ±ãʶ±ð²¢ÐÞ¸´¹ýʧ¡£³£¼ûÏÂÁî°üÀ¨£ºÉèÖöϵ㣺break [ÐкÅ]×îÏȵ÷ÊÔ£ºrun´òÓ¡±äÁ¿Öµ£ºp [±äÁ¿Ãû]ÖðÐÐÖ´ÐдúÂ룺nµ¥²½½øÈ뺯Êý£ºs´òӡŲÓÿÍÕ»£ºbt

gdbµ÷ÊÔ¹¤¾ßµÄʹÓÃ

ʲôÊÇgdb£¿

gdb£¨GNUµ÷ÊÔÆ÷£©ÊÇÒ»¸öÇ¿Ê¢µÄÏÂÁîÐй¤¾ß £¬ÓÃÓÚµ÷ÊÔC¡¢C++¡¢FortranµÈ¶àÖÖ±à³ÌÓïÑԵijÌÐò¡£ËüÊÇLinuxºÍUnixϵͳÖÐÆÕ±éʹÓõĵ÷ÊÔÇéÐΡ£

gdbµÄÓÃ;

gdbÔÊÐí³ÌÐòÔ±ÔÚ³ÌÐòÖ´ÐÐÀú³ÌÖмàÊӺͿØÖƳÌÐòµÄÖ´ÐÐÁ÷ £¬ÒÔ±ãʶ±ðºÍÐÞ¸´¹ýʧ¡£ËüÌṩÁËһϵÁÐÏÂÁî £¬ÓÃÓÚ£º

  • ÉèÖöϵãÒÔÔÚÌض¨µãÔÝÍ£³ÌÐò
  • ¼ì²é±äÁ¿µÄÖµºÍÊý¾Ý½á¹¹
  • ÖðÐÐÖ´ÐдúÂë²¢ÉèÖÃÊÓ²ìµã
  • ´òӡŲÓÿÍÕ»ºÍ¼Ä´æÆ÷Öµ
  • ÐÞ¸ÄÄÚ´æºÍ¼Ä´æÆ÷Öµ

ʹÓÃgdb

  1. Æô¶¯gdb

    gdb [program_name]

    µÇ¼ºó¸´ÖÆ

  2. ÉèÖöϵã

    break [line_number]

    µÇ¼ºó¸´ÖÆ

  3. ×îÏȵ÷ÊÔ

    run

    µÇ¼ºó¸´ÖÆ

  4. Ö´ÐÐÏÂÁî

    ÔÚgdb¿ØÖÆ̨ÖÐ £¬Äú¿ÉÒÔʹÓÃÏÂÁîÀ´¼ì²é±äÁ¿¡¢ÉèÖÃÊÓ²ìµã¡¢Ð޸Ĵ洢Æ÷µÈ¡£ÒÔÏÂÊÇһЩ³£¼ûÏÂÁ

    • n£ºÖðÐÐÖ´ÐдúÂë
    • p£º´òÓ¡±äÁ¿µÄÖµ
    • w£ºÉèÖÃÊÓ²ìµã
    • x£º¼ì²é´æ´¢Æ÷
    • s£ºµ¥²½½øÈ뺯Êý
    • bt£º´òӡŲÓÿÍÕ»
  5. Í˳ögdb

    quit

    µÇ¼ºó¸´ÖÆ

ʾÀý

¼ÙÉèÎÒÃÇÓÐÒ»¸öÃûΪmy_program.cµÄ³ÌÐò £¬ÆäÖаüÀ¨Ò»¸ö°üÀ¨¹ýʧµÄº¯Êý£º

#include <stdio.h>

int divide_by_zero(int a) {
  return a / 0;
}

int main() {
  int x = 5;
  printf("%d\n", divide_by_zero(x));
  return 0;
}</stdio.h>

µÇ¼ºó¸´ÖÆ

ÎÒÃÇ¿ÉÒÔʹÓÃgdbÀ´µ÷ÊÔÕâ¸ö³ÌÐò£º

gdb my_program
(gdb) break 11
(gdb) run
(gdb) list 10,15
10  #include <stdio.h>
11  int divide_by_zero(int a) {
12    return a / 0;
13  }
14  
15  int main() {
(gdb) p divide_by_zero(x)
Can't read variable x in this context.
(gdb) p x
$1 = 5
(gdb) n
Program received signal SIGFPE, Arithmetic exception.
0x0000000000400595 in divide_by_zero (a=5) at my_program.c:12
12          return a / 0;
(gdb) list
11  int divide_by_zero(int a) {
12    return a / 0;
13  }
14  
15  int main() {
(gdb) print a
$2 = 5
(gdb) quit</stdio.h>

µÇ¼ºó¸´ÖÆ

ÔÚÉÏÃæµÄʾÀýÖÐ £¬ÎÒÃÇÔÚµÚ11ÐÐÉèÖÃÁËÒ»¸ö¶Ïµã £¬È»ºóÔËÐгÌÐò¡£µ±³ÌÐòÔڶϵ㴦ÔÝͣʱ £¬ÎÒÃÇ´òÓ¡Á˱äÁ¿xµÄÖµ £¬²¢ÊµÑé´òÓ¡divide_by_zero(x)µÄÖµ¡£ÓÉÓÚxÔÚdivide_by_zeroº¯ÊýÖÐδ½ç˵ £¬Òò´ËÎÒÃÇ¿´µ½ÁËÒ»¸ö¹ýʧ¡£½ÓÏÂÀ´ £¬ÎÒÃÇÖðÐÐÖ´ÐдúÂë £¬Ö±µ½³ÌÐòÍ߽⠣¬È»ºó´òÓ¡Á˹ýʧÐÅÏ¢ºÍŲÓÿÍÕ»¡£

ÒÔÉϾÍÊÇgdbµ÷ÊÔ¹¤¾ßµÄʹÓõÄÏêϸÄÚÈÝ £¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí £¬°æȨÕùÒéÓë±¾Õ¾ÎÞ¹Ø £¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í×ðÁú¿­Ê±ÂËÓÍ»úÍø¹Ù·½Ì¬¶È £¬Çë¶ÁÕß½ö×ö²Î¿¼¡£±¾ÎĽӴýתÔØ £¬×ªÔØÇë˵Ã÷À´ÓÉ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢ £¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢ £¬ÇëÄúÁ¬Ã¦ÁªÏµ×ðÁú¿­Ê±ÊµÊ±ÐÞÕý»òɾ³ý¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ×ðÁú¿­Ê±

13452372176

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎå £¬9:30-18:30 £¬½ÚãåÈÕÐÝÏ¢

QR code
¡¾ÍøÕ¾µØͼ¡¿¡¾sitemap¡¿