Linux Ï C++ Òì³£´¦Àí¼¼ÇÉ
http://www.ibm.com/developerworks/cn/linux/l-cppexcep.html
´¦Àí¹ÌÓÐÓïÑÔ¾ÖÏÞÐÔµÄËÄÖÖ¼¼Êõ
´¦Àí C++ ÖеÄÒì³£»áÔÚÓïÑÔ¼¶±ðÉÏÓöµ½ÉÙÐíÒþº¬ÏÞÖÆ£¬µ«ÔÚijЩÇé¿öÏ£¬Äú¿ÉÒÔÈÆ¹ýËüÃÇ¡£Ñ§Ï°¸÷ÖÖÀûÓÃÒì³£µÄ·½·¨£¬Äú¾Í¿ÉÒÔÉú²ú¸ü¿É¿¿µÄÓ¦ÓóÌÐò¡£
±£ÁôÒì³£À´Ô´ÐÅÏ¢
ÔÚ C++ÖУ¬ÎÞÂÛºÎʱÔÚ´¦Àí³ÌÐòÄÚ²¶»ñÒ»¸öÒì³££¬¹ØÓÚ¸ÃÒì³£À´Ô´µÄÐÅÏ¢¶¼ÊDz»ÎªÈËÖªµÄ¡£Òì³£µÄ¾ßÌåÀ´Ô´¿ÉÒÔÌṩÐí¶à¸üºÃµØ´¦Àí¸ÃÒì³£µÄÖØÒªÐÅÏ¢£¬»òÕßÌṩһЩ¿ÉÒÔ¸½¼Óµ½´íÎóÈÕÖ¾µÄÐÅÏ¢£¬ÒÔ±ãÒÔºó½øÐзÖÎö¡£
ΪÁ˽â¾öÕâÒ»ÎÊÌ⣬¿ÉÒÔÔÚÅ׳öÒì³£Óï¾äÆÚ¼ä£¬ÔÚÒì³£¶ÔÏóµÄ¹¹Ô캯ÊýÖÐÉú³ÉÒ»¸ö¶ÑÕ»¸ú×Ù¡£ExceptionTracer
ÊÇʾ·¶ÕâÖÖÐÐΪµÄÒ»¸öÀà¡£
//ÔÚÒì³£¶ÔÏó¹¹Ô캯ÊýÖÐÉú³ÉÒ»¸ö¶ÑÕ»¸ú×Ù
// Sample Program:
// Compiler: gcc 3.2.3 20030502
// Linux: Red Hat
#include <execinfo.h>
#include <signal.h>
#include <exception>
#include <iostream>
using namespace std;
/////////////////////////////////////////////
class ExceptionTracer
{
public:
ExceptionTracer()
{
void * array[25];
int nSize = backtrace(array, 25);
char ** symbols = backtrace_symbols(array, nSize);
for (int i = 0; i < nSize; i++)
{
cout << symbols[i] << endl;
}
free(symbols);
}
¹ÜÀíÐźÅ
ÿ
µ±½ø³ÌÖ´ÐÐÒ»¸öÁîÈËÌÖÑáµÄ¶¯×÷£¬ÒÔÖÂÓÚ Linux™
Äں˷¢³öÒ»¸öÐźÅʱ£¬¸ÃÐźŶ¼±ØÐë±»´¦Àí¡£ÐźŴ¦Àí³ÌÐòͨ³£»áÊÍ·ÅÒ»Ð©ÖØÒª×ÊÔ´²¢ÖÕÖ¹Ó¦ÓóÌÐò¡£ÔÚÕâÖÖÇé¿öÏ£¬¶ÑÕ»ÉϵÄËùÓжÔÏóʵÀý¶¼´¦ÓÚÎ´ÆÆ»µ×´Ì¬¡£Áí
Ò»·½Ã棬Èç¹ûÕâЩÐźű»×ª»»³É C++ Òì³££¬ÄÇôÄú¿ÉÒÔÓÅÑŵص÷ÓÃÆä¹¹Ô캯Êý£¬²¢°²ÅŶà²ã catch ¿é£¬ÒÔ±ã¸üºÃµØ´¦ÀíÕâЩÐźš£
Çåµ¥ 2 Öж¨ÒåµÄ SignalExceptionClass
£¬ÌṩÁ˱íʾÄں˿ÉÄÜ·¢³öÐÅºÅµÄ C++ Òì³£µÄ³éÏó¡£SignalTranslator
ÊÇÒ»¸ö»ùÓÚ SignalExceptionClass
µÄÄ£°åÀ࣬Ëüͨ³£ÓÃÀ´ÊµÏÖµ½ C++ Òì³£µÄת»»¡£ÔÚÈκÎ˲¼ä£¬Ö»ÄÜÓÐÒ»¸öÐźŴ¦Àí³ÌÐò´¦ÀíÒ»¸ö»î¶¯½ø³ÌµÄÒ»¸öÐźš£Òò´Ë£¬SignalTranslator
²ÉÓÃÁË singleton Éè¼ÆÄ£Ê½¡£ÕûÌå¸ÅÄîͨ¹ýÓÃÓÚ SIGSEGV µÄ SegmentationFault
ÀàºÍÓÃÓÚ SIGFPE µÄ FloatingPointException
ÀàµÃµ½ÁËչʾ¡£
template <class SignalExceptionC
Ïà¹ØÎĵµ£º
/ LinuexϵͳĿ¼Ê÷µÄÆðµã
bin ´æ·Å¿ÉÖ´ÐÐÃüÁÈçchmod¡¢date
boot ´æ·ÅϵͳÆô¶¯Ê±ËùÐèÒªµÄÎļþ£¬°üÀ¨Òýµ¼×°ÔسÌÐò
etc ´æ·ÅϵͳÅäÖÃÎļþ£¬Èçpasswd¡¢fstabÎļþ
dev ´æ·ÅËùÓеÄÉè ......
Ŀ¼½á¹¹
Ò». Ê÷ÐÍĿ¼½á¹¹
1. LinuxϵͳÒÔÎļþĿ¼µÄ·½Ê½À´×éÖ¯ºÍ¹ÜÀíϵͳÖеÄËùÓÐÎļþ¡£ËùνÎļþĿ¼¾ÍÊǽ«ËùÓÐÎļþµÄ˵Ã÷ÐÅÏ¢²ÉÓÃÊ÷Ðͽṹ×éÖ¯ÆðÀ´£¬¼´³£ËµµÄĿ¼¡£
¶þ. ¹¤×÷Ŀ¼¡¢Óû§Ö÷Ŀ¼Óë·¾¶
1. ¹¤×÷Ŀ¼ÓëÓû§Ö÷Ŀ¼
Óû§ÔڵǼµ½ Linux ϵͳ֮ºó£¬ËùÔÚµÄĿ¼³ÆÎª¹¤×÷Ŀ¼¡£
2. ·¾¶
¹ËÃû˼Ò壬·¾¶ÊÇÖ¸´ ......
AIXºÍLinuxÏÂÈçºÎ²é¿´CPUºÍÄÚ´æÐÅÏ¢
AIX²Ù×÷ϵͳ
AIXµÄÓ²¼þÐÅÏ¢¿ÉÒÔͨ¹ýprtconfÃüÁî¿´µ½¡£
1. ²é¿´Âß¼CPU¸öÊý
#pmcycles -m
CPU 0 runs at 4204 MHz
CPU 1 runs at 4204 MHz
CPU 2 runs at 4204 MHz
CPU 3 runs at 4204 MHz
CPU 4 runs at 4204 MHz
CPU 5 runs at 4204 MHz
CPU 6 runs at 4204 MHz
CPU 7 runs ......
Óï·¨£º cp [Ñ¡Ïî] Ô´Îļþ»òĿ¼ Ä¿±êÎļþ»òĿ¼
˵Ã÷£º¸ÃÃüÁî°ÑÖ¸¶¨µÄÔ´Îļþ¸´ÖƵ½Ä¿±êÎļþ»ò°Ñ¶à¸öÔ´Îļþ¸´ÖƵ½Ä¿±êĿ¼ÖС£
¸ÃÃüÁîµÄ¸÷Ñ¡ÏÒåÈçÏ£º
- a ¸ÃÑ¡Ïîͨ³£ÔÚ¿½±´Ä¿Â¼Ê±Ê¹Óá£Ëü±£ÁôÁ´½Ó¡¢ÎļþÊôÐÔ£¬²¢µÝ¹éµØ¿½±´Ä¿Â¼£¬Æä×÷ÓõÈÓÚdpRÑ¡ÏîµÄ×éºÏ¡£(ÓÐʱºî¿½±´ÐèÒª±£ÁôÎļþµÄÁ´½Ó£¬¾ÍÒªÓõ½ÁË£®)
- ......
ÔÚUbuntuÖУ¬rootÕʺÅÊÇĬÈϱ»½ûÓõģ¬ÄÇʲôÊÇrootÕʺÅÄØ£¬ÎÒÃÇÏÈÀ´Á˽âһϣ¡rootÕʺÅÊÇlinuxÖеij¬¼¶¹ÜÀíÔ±£¬Õâ¸öÕʺÅÓµÓжÔËùÓÐÎļþ²Ù×÷µÄÒ»ÇÐȨÀûÏ൱ÓÚÎÒÃÇwindowsϵÄadministratorÕʺţ¬ËùÒÔÌáÐÑ´ó¼Ò£¬ÆôÓÃrootÕʺÅÊDz»°²È«µÄ.ÄÇÔÚÎÒÃÇʹÓùý³ÌÖУ¬ÓпÉÄÜÒ²ÐíҪʹÓõ½Õâ¸öÕʺŵÄȨÀû£¬ÎÒÃǸÃÈçºÎʹÓÃrootÕʺŵǽϵ ......