קריסות App על MAC הם בדרך כלל די נדיר. אבל כאשר הם קורים, אולי כדאי לך לעקוב אחר הסיבה שלהם. ואם אתה מפתח, עליך להבין מדוע האפליקציה שלך קורסת. הנה כיצד לקרוא דוחות MACOS לקרוס ולמיין דרך השפה סתומה.

פתיחת דוחות קריסה

כאשר אפליקציה קורסת ב- Mac, היא מפיקה באופן אוטומטי דוח קריסה. תראה את ההודעה הבאה לאחר ההתרסקות עם תיבת דו-שיח אזהרה המציינת ש- [App] נסגר באופן בלתי צפוי. "דוח קריסה זה זמין לקריאה מיידית בחלון זה על ידי לחיצה על הלחצן" דווח ... ". דוח הקריסה ניתן למצוא גם באפליקציית המסוף.

1. פתח את היישום מסוף על ידי הקלדת "מסוף" לתוך זרקור או לנווט אל "יישום -> כלי שירות -> Console.app."

2. לחץ על "דוחות משתמשים" בתפריט השמאלי, ולאחר מכן לחץ על דוח קריסה שברצונך להציג. כל הקבצים הללו יסתיימו ב ". קראש" ולכלול את התאריך ואת היישום התרסק בכותרת. פרטי דוח ההתרסקות זמינים בחלונית מימין.

קריאת דוחות קריסת MacOS

בואו לנווט בדוח קריסה מלמעלה למטה.

מה התרסק?

החלק הראשון של הדוח לקרוס אומר לך מה "תהליך" או יישום התרסק. החלק החשוב ביותר עבור פותר הבעיות הממוצע הוא שם התהליך.

 תהליך: aTT [11473] נתיב: /Applications/aText.app/Contents/MacOS/aText מזהה: com.trankynam.aText גירסה: 2.19 (62) סוג קוד: X86-64 (דובר) תהליך אב: ??? [1] אחראי: aTT [11473] מזהה משתמש: 501 

מתי זה לקרוס?

החלק השני אומר לנו כאשר התרסקות התרחשה. זה גם מספק קצת מידע על המערכת שלך.

 תאריך / זמן: 2018-03-15 00: 58: 10.552 -0400 גרסה: Mac OS X 10.12.6 (16G1036) דווח על גירסה: 12 Anonymous UUID: 6C985CFD-6975-3F30-50EB-0713315F5090 שעה מתעוררת מאז אתחול: 630000 הגנה על מערכת של שניות: מופעל 

מה גרם לקרוס?

החלק הבא הוא המאיר ביותר. "סוג חריג" המסופק על ידי היישום אומר לנו מה גרם לקריסה. היומן גם מדווח איזה פתיל התרסק: במקרה זה, פתיל 0.

 התרסקות: 0 השורה הפתיחה: com.apple.main-thread סוג חריגה: EXC_BAD_ACCESS (SIGSEGV) קודי חריגה: KERN_INVALID_ADDRESS ב 0x000040dedeadbec0 הערה חריגה: EXC_CORPSE_NOTIFY סיומת: סיווג תקלות: 11 סיומת סיבה: מרחב שמות אות, קוד 0xb סיום התהליך: exc מטפל [0] 

Apple מפרטת כמה סוגים חריגים נפוצים בתיעוד הטכני שלהם:

  • גישה לזיכרון שגוי ( EXC_BAD_ACCESS / SIGSEGV / SIGBUS ) - התוכנית מנסה לגשת לזיכרון באופן שגוי או עם כתובת לא חוקית. מצורף עם קוד המסביר את בעיית הזיכרון.
  • יציאה לא נורמלית ( EXC_CRASH / SIGABRT ) - יציאה חריגה, בדרך כלל ליד חריגה C + + חריגה וקריאות abort()
  • Trace Trap ( EXC_BREAKPOINT / SIGTRAP ) - כמו SIGABRT, אך יציאה זו מעניקה למאתר הבאגים הזדמנות להפריע את התהליך בנקודת ביניים ולעקוב אחר השגיאה.
  • הוראה בלתי חוקית ( EXC_BAD_INSTRUCTION / SIGILL ) - העיבוד הוציא הוראה שלא הובנה או שלא ניתן היה לעבד.
  • Quit ( SIGQUIT ) - התהליך הסתיים בתהליך אחר עם הרשאות מספיקות. בדרך כלל, תהליך השמירה מסתיים תהליך misbehaving.
  • נהרג ( SIGKILL ) - התהליך הופסק לבקשת המערכת. קוד סיום יצורף להסביר את החריג.

כפי שניתן לראות מדוח ההתרסקות שלנו, היישום ניסה לגשת לזיכרון לא ממופה. הסיבה לכך היא שגיאת תכנות ביישום או מצב משתמש יוצא דופן שגורם ליישום למפות זיכרון שגוי.

מה להוביל לקריסה?

לאחר מכן אנו רואים רשימה כרונולוגית לאחור של מה להוביל עד לקרוס. אלה מסודרים על ידי חוט, החל חוט 0.

יש ארבע עמודות לדוח זה. הראשון מדווח על מספר האירוע בסדר כרונולוגי הפוך, החל מ -0. השני הוא המזהה של התהליך. השלישית היא הכתובת של התהליך בזיכרון. הרביעי הוא שם המשימה של התוכנית.

זה "backtrace" יכול להיות קצת מביך. זה "מסמל", כלומר כמה כתובות זיכרון הוחלפו עם שמות פונקציה או משימות יישום. לפעמים זה לא יכול להיעשות לחלוטין, וכתובות זיכרון בלתי קריא מפוזרים בדו"ח.

אנו רואים זאת בדוח התרסקות לעיל: com.trankynam.aText אינו com.trankynam.aText . אפילו עם סימבוליות מלאה, זה יכול להיות קשה לקרוא את backtrace. לפעמים מפתחים כוללים הערות שימושיות על משימות יישומים ואירועים. פעמים אחרות, הם כותרות מסתוריות או קוד מספרי. אם אתה יכול להבין את הסימבוליות, ייתכן שתוכל להבין מה קורה. אבל זה באותה מידה ככל האפשר, כי אתה צריך להיות מקודדים את היישום עצמך כדי להבין את backtrace.

מסקנה: האם זה שימושי?

אם אתה מפתח, קריאת דוחות קריסה חיונית. זה עוזר לך להבין איזה חלק של היישום שלך מתרסק ומדוע. אם אתה משתמש, הם לא מועילים. אבל אם יש לך התרסקות מתמשכת, דוחות הקריסה יכולים לעזור לך לפתור את הבעיה או לעבוד עם המפתח כדי לתקן את הבעיה. ייתכן שתקבל קוד שגיאה שימושי ל- Google או שתוכל לספק תמיכה טכנית עם המידע הנכון. אם אתה רוצה את הפרטים gory, אתה יכול לקרוא את כל זה על פתק טכני של אפל על קריסות.