¡¾Linux¹¤¾ßϵÁС¿×¨À¸ÊÇΪ¿ª·¢ÕßÌṩLinux¹¤¾ßÔÚÄÚ´æ¹ÜÀí¡¢µ÷¶ÈÓÅ»¯¡¢CPUµÈ·½ÃæµÄÓÅÖÊÇåµ¥¡£±¾ÆÚÊÇ´øÀ´Crash-Utility¹¤¾ß£¬Í¨¹ý¶Ô»ù´¡¸ÅÄîºÍʹÓ÷½·¨µÄ½éÉܺͷÖÏí£¬ÈÃÄúÈ«·½Î»Á˽âCrash-UtilityµÄÌØÐÔ¼°Ê¹Óó¡¾°¡£
1 ʲôÊÇCrash-Utility?
Crash-UtilityÊÇÒ»¸ö¿ªÔ´¹¤¾ß£¬×¨ÃÅÓÃÓÚ·ÖÎöºÍµ÷ÊÔLinuxÄں˱ÀÀ£Ê±Éú³ÉµÄcoredumpÎļþ£¨Í¨³£³ÆÎªvmcore£©¡£µ±LinuxÄں˷¢ÉúÑÏÖØ´íÎó£¨Èçpanic»òoops£©Ê±£¬ÏµÍ³»áÉú³ÉÒ»¸öÄÚºËת´¢Îļþ£¬¼Ç¼±ÀÀ£Ê±µÄÄÚ´æ×´Ì¬¡¢¼Ä´æPGµç¾º¹ÙÍøÐÅÏ¢¡¢¶ÑÕ»ÐÅÏ¢µÈ¡£Crash-Utility¿ÉÒÔ°ïÖú¿ª·¢Õßͨ¹ýÕâЩת´¢Îļþ£¬¿ìËÙ¶¨Î»Äں˱ÀÀ£µÄÔÒò¡£
2 »ù±¾Ê¹ÓÃ
1. °²×°Crash-Utility
¼¯³ÉGDB¹¦ÄÜÊÇ´Ó8.0.6°æ±¾¿ªÊ¼Ö§³ÖµÄ£¬Òò´ËÑ¡Ôñ±àÒëÔ´Âë°ü½øÐа²×°£º
±àÒë°²×°·½·¨£º
gitclone
cdcrash
make
sudomakeinstall
2. µäÐÍʹÓò½Öè
1)ϵͳ°²×°kdump·þÎñ£¬ÓÃÓÚÔÚÄں˱ÀÀ£Ê±²úÉúvmcore:
yuminstallkexec-tools
systemctlrestartkdump
2) °²×°ÄÚºËdebug°ü
yuminstallkernel-debuginfo
3)¼ÓÔØ×ª´¢Îļþ
crash/usr/lib/debug/lib/modules/$(uname-r)/vmlinux/var/crash/<vmcore-file>
3. Crash-UtilityʹÓÃʵÀý
ʹÓÃecho c > /proc/sysrq-triggerÄ£Äâϵͳ±ÀÀ££¬²úÉúvmcore
¼ÓÔØ×ª´¢Îļþ£º
crash /usr/lib/debug/lib/modules/5.10.134-15.2.15.kos5.x86_64/vmlinux\
/var/crash/127.0.0.1-2024-12-06-14\:30\:47/vmcore
¾ßÌåÏÔʾÈçÏ£º

Çл»½ø³ÌÉÏÏÂÎÄ
ÃüÁset #pid
Çл»½ø³ÌÉÏÏÂÎÄ£¬ÃüÁîºóÃæ¸ú½ø³ÌPIDºÅ£¬²¢ÇÒ¿ÉÒÔͨ¹ýtask×ÓÃüÁî¼ÓÉÏTASKµØÖ·½ø³Ì²é¿´µ±Ç°ÈÎÎñÏà¹ØÐÅÏ¢£º

²é¿´¶ÑÕ»ÐÅÏ¢
ÃüÁgdb bt
ͨ¹ýcrashµ÷ÊÔvmcoreʱ£¬´òÓ¡¶ÑÕ»ÐÅÏ¢£ºÖ´ÐÐÃüÁîbt£¬´òÓ¡ÈçÏ£º

ͨ¹ýcrash-utility½øÐе÷ÊÔʱ£¬´òÓ¡¶ÑÕ»ÐÅÏ¢£ºÖ´ÐÐÃüÁgdb bt

¿ÉÒÔ¿´³öÁ½Õß´òÓ¡»áÓÐһЩ²»Í¬£¬ÒÔgdbģʽ¸üÄܹ»Çå³þµÄ±íʾ³öµ±Ç°¶ÑÕ»ÐÅÏ¢£¬Äܹ»¸ü¼ÓÇåÎúµÄָʾ³öµ±Ç°³öÎÊÌâµÄ´úÂëλÖ㬾ÍÏñµ÷ÊÔÓû§Ì¬³ÌÐòÒ»Ñù£¬²»ÔÙÐèҪͨ¹ý·´»ã±àµÈ¸´ÔÓµÄÊֶζ¨Î»ÎÊÌâλÖá£
Çл»Õ»Ö¡
ÃüÁgdb frame#framenum
Çл»µ½Ö¸¶¨Õ»Ö¡£¬ÃüÁîºóÃæ¸úÕ»Ö¡ºÅ¡£Çл»µ½¾ßÌåµÄÕ»Ö¡ºó¿ÉÒÔͨ¹ýgdbÃüÁî½øÐдúÂëµ÷ÊÔ£¬±ÈÈçʹÓÃÃüÁî"l"²é¿´µ±Ç°´úÂë¡£

²é¿´¾Ö²¿±äÁ¿
ÃüÁgdb info locals
ÔÚµ÷ÊÔʱ±ÜÃâ²»ÁËÒª²é¿´Ä³¸öº¯ÊýµÄ¾Ö²¿±äÁ¿ÖµÊǶàÉÙ£¬Í¨¹ýÃüÁîgdb info locals»á´òÓ¡µ±Ç°Õ»Ö¡Ê±µÄһЩ¾Ö²¿±äÁ¿Öµ¡£

²é¿´º¯Êý²ÎÊýÖµ
ÃüÁgdb info args
²é¿´º¯Êý²ÎÊý£¬Ö´ÐÐgdb info args»á´òÓ¡µ±Ç°Õ»Ö¡Ê±º¯ÊýµÄ²ÎÊýÖµ¡£

²é¿´Õ»Ö¡ÐÅÏ¢
ÃüÁgdb info frame

Õ»Ö¡¹ö¶¯
ÃüÁgdb up/down
Õ»Ö¡¹ö¶¯£ºÉÏÒ»Ö¡/ÏÂÒ»Ö¡

Çл»GDBģʽ
ÃüÁset gdb on/off
¿ªÆôgdbģʽ/¹Ø±Õgdbģʽ£¬¿ªÆôgdbģʽµÄÇé¿öÏ¿ÉÒÔʹÓÃgdbµÄһЩÃüÁÏñµ÷ÊÔÓû§Ì¬³ÌÐòÒ»Ñùµ÷ÊÔÄںˣ¬½øÈëgdbģʽºóµ÷ÊÔ´°¿ÚÊÇgdb>¿ªÍ·µÄ£»
±ÈÈç²é¿´¶ÑÕ»£ºÊäÈëbt£¬Í¬ÆÕͨģʽÏÂʹÓÃgdb btЧ¹ûÒ»Ñù£º

¶¯Ì¬¼ÓÔØÄÚºËÄ£¿é
ÃüÁmod
ͨ¹ýhelp modÃüÁî¿ÉÒÔÏÔʾmodµÄ¾ßÌåÓ÷¨ÒÔ¼°Ê¾Àý£»
±ÈÈçÏÔʾÄÚºËÄ£¿é¼ÓÔØÐÅÏ¢£ºmod -S
¼ÓÔØÄÚºËÄ£¿é£ºmod -sÄ£¿éÃû³Æ£¬×¢Ò⣬Èç¹û²»Ö¸¶¨ÄÚºËÄ£¿éËÑË÷·¾¶£¬Ä¬ÈÏÊÇ´Ó/usr/lib/debug/lib/modules/ÏÂËÑË÷Ä£¿é£¬Èç¹ûÏë´ÓÖ¸¶¨Â·¾¶Ï¼ÓÔØÄ£¿é¿ÉÒÔͨ¹ý¡°mod -sÄ£¿éÃû³Æ ·¾¶¡±

²é¿´ÄÚºËÊý¾Ý½á¹¹»ò·ûºÅ¶¨ÒåµÄ×ÓÃüÁî
ÃüÁwhatis
ÓÃÓڲ鿴ÄÚºËÊý¾Ý½á¹¹»ò·ûºÅ¶¨ÒåµÄ×ÓÃüÁ¿Éͨ¹ýhelp whatis²é¿´¾ßÌå×ÓÃüÁîÓ÷¨¡£±ÈÈç²é¿´regs±äÁ¿ÀàÐÍ£ºwhatis regs

4. »ù±¾ÃüÁî»ã×Ü

3 ÌØÐÔ¼°Ó¦Óó¡¾°·ÖÎö
Ö§³Ö¶àÖÖת´¢Îļþ¸ñʽ£º
Crash-utilityÖ§³Ö¶àÖÖ¹¤¾ßÉú³ÉµÄת´æÎļþ¸ñʽ£¬°üÀ¨£º
Kdump£ºLinuxÄÚºË×Ô´øµÄ±ÀÀ£×ª´¢¹¤¾ß¡£
LKCD£¨Linux Kernel Crash Dump£©£ºÒ»ÖÖÔçÆÚµÄÄÚºËת´¢¹¤¾ß¡£
netdumpºÍdiskdump£ºÍ¨¹ýÍøÂç»ò´ÅÅÌÉú³ÉµÄÄÚºËת´¢Îļþ¡£
ÕâÒâζ×ÅËü²»½ö¿ÉÒÔ·ÖÎöÐéÄâ»úÉÏÉú³ÉµÄÄÚºËת´æÎļþ£¬»¹¿ÉÒÔ·ÖÎöÎïÀí»ú»òÆäËûÉ豸ÉÏÉú³ÉµÄÎļþ¡£
ÓëGDB¼¯³É:
Crash-utilityÓëGDB£¨GNUµ÷ÊÔPGµç¾º¹ÙÍø£©½øÐÐÁ˼¯³É£¬Äܹ»ÀûÓÃGDBµÄÇ¿´óµ÷ÊÔ¹¦ÄÜÀ´·ÖÎöÄÚºËת´¢Îļþ¡£Í¨¹ýGDB¼¯³É£¬¿ª·¢Õß¿ÉÒÔÏñµ÷ÊÔÓû§Ì¬³ÌÐòÒ»Ñùµ÷ÊÔÄںˣ¬²é¿´¶ÑÕ»¡¢¾Ö²¿±äÁ¿¡¢º¯Êý²ÎÊýµÈÐÅÏ¢¡£
¹ã·ºµÄÓ¦Óó¡¾°:
Crash-utility²»½öÏÞÓÚ·ÖÎöÄں˱ÀÀ£ÎÊÌâ¡£Ëü»¹¿ÉÒÔÓÃÓÚµ÷ÊÔÔËÐÐʱϵͳ¡¢·ÖÎöÄÚºËÐÔÄÜÎÊÌâ¡¢²éÕÒÄÚºËÖеÄ©¶´µÈ¡£Òò´Ë£¬Crash-utilityÔÚ¶àÖÖ³¡¾°Ï¶¼¾ßÓй㷺µÄÓ¦ÓüÛÖµ¡£
²úÆ·ÏÂÔØ
²úÆ·¼¤»î
ÊÛǰ×Éѯ
ÊÛºó·þÎñ
»Øµ½¶¥²¿
ÊÛǰ×Éѯ
ÊÛºó·þÎñ