ÔõÑùʹÓÃgdbµ÷ÊÔ³ÌÐò
ͨ¹ý gdb µ÷ÊÔ³ÌÐòµÄ°ì·¨£º×°Öà gdb¡£Ê¹Óà gdb Æô¶¯µ÷ÊÔÆ÷²¢Ö¸¶¨³ÌÐò·¾¶¡£Ê¹Óà break ÉèÖöϵ㡣ʹÓà run ÔËÐгÌÐò¡£Ê¹Óà next¡¢step »ò finish ¾ÙÐзֲ½Ö´ÐС£Ê¹Óà print ¼ì²é±äÁ¿Öµ¡£Ê¹Óà bt ´òÓ¡Õ»¸ú×Ù¡£
ÔõÑùÔÚ GDB Öе÷ÊÔ³ÌÐò
1. ÌáÒª
GDB (GNU µ÷ÊÔÆ÷) ÊÇÒ»¿î¹¦Ð§Ç¿Ê¢µÄ¹¤¾ß£¬ÓÃÓÚµ÷ÊÔ Linux ³ÌÐò¡£ËüÔÊÐí¿ª·¢Ö°Ô±¼ì²é³ÌÐò״̬¡¢ÉèÖöϵãºÍÖð²½Ö´ÐдúÂë¡£
2. ×°ÖÃ GDB
ʹÓðü¹ÜÀíÆ÷ÔÚÄúµÄϵͳÉÏ×°Öà GDB¡£ÀýÈ磬ÔÚ Debian/Ubuntu ϵͳÉÏ£º
sudo apt-get install gdb
µÇ¼ºó¸´ÖÆ
3. µ÷ÊÔ³ÌÐò
Òªµ÷ÊÔ³ÌÐò£¬ÇëÆô¶¯ GDB ²¢Ö¸¶¨¿ÉÖ´ÐÐÎļþµÄ·¾¶£º
gdb ./my_program
µÇ¼ºó¸´ÖÆ
4. ÉèÖöϵã
¶ÏµãÔÊÐíÄúÔÝÍ£³ÌÐò²¢ÔÚÌض¨´úÂëÐд¦¾ÙÐмì²é¡£Ê¹ÓÃÏÂÁî break ÉèÖöϵ㣺
break
µÇ¼ºó¸´ÖÆ
»òÕߣ¬Äú¿ÉÒÔʹÓà b ×÷Ϊ¼òд£º
b
µÇ¼ºó¸´ÖÆ
5. ÔËÐгÌÐò
ʹÓÃÏÂÁî run Ö´ÐгÌÐò£º
run
µÇ¼ºó¸´ÖÆ
6. Öð²½Ö´ÐÐ
·Ö²½Ö´ÐÐÔÊÐíÄúÖðÐÐÖ´ÐдúÂ롣ʹÓÃÒÔÏÂÏÂÁ
- next (n)£ºÖ´ÐÐÏÂÒ»ÐдúÂë
- step (s)£ºÖ´ÐÐÏÂÒ»ÌõÖ¸Á¿ÉÄÜ°üÀ¨¿çÔ½¶à¸ö´úÂëÐУ©
- finish (fin)£ºÖ´ÐÐÄ¿½ñº¯Êý²¢·µ»ØŲÓ÷½
7. ¼ì²é±äÁ¿Öµ
ʹÓà print ÏÂÁî¼ì²é±äÁ¿Öµ£º
µÇ¼ºó¸´ÖÆ
8. Õ»¸ú×Ù
ʹÓÃÏÂÁî bt ´òÓ¡Ä¿½ñµÄÕ»¸ú×Ù£º
bt
µÇ¼ºó¸´ÖÆ
9. Í˳ö GDB
ʹÓÃÏÂÁî quit »ò q Í˳ö GDB£º
quit
µÇ¼ºó¸´ÖÆ
ÒÔÉϾÍÊÇÔõÑùʹÓÃgdbµ÷ÊÔ³ÌÐòµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡