אחת הדרכים העיקריות לאבחון תקלות בתפעול התוכנה שכבר פועלת במחשב המשתמש היא ניהול יומני אירועים - יומנים. בדרך כלל הם מקליטים מידע על ההשקות, כמו גם מידע חשוב על מצב התהליך וסביבת המערכת במקרה של כשל קריטי. באפשרותך ליצור יומנים הן בעצמך והן באמצעות שירותים מיוחדים של מערכות הפעלה.
זה הכרחי
- - מתרגם משפת התכנות המשומשת;
- - אולי SDK פלטפורמת Windows;
- - אולי חבילת פיתוח ל- glibc.
הוראות
שלב 1
לנתח את תנאי השימוש ולהמציא את הדרישות לתת-מערכת, רכיב או ספרייה מפותחים שיצרו יומנים. ענה על השאלות באיזו פלטפורמה או פלטפורמות עליה לפעול, מה יהיה ה- API שלה.
שלב 2
בהתאם לתכונות התפקוד שזוהו ול- API המסופק, צור תבנית לתת מערכת הרישום. התחל ליישם את הפונקציונליות שלו.
שלב 3
האפשרות הפשוטה ביותר לרישום היא ליצור קבצים באופן עצמאי במיקום שנקבע על פי תצורת היישום, ואז לכתוב נתונים בכל פורמט אליהם. השתמש בפונקציות ספרייה סטנדרטיות של C (fopen, fclose, fwrite), אובייקטים של זרם ספרייה סטנדרטי C ++ (ofstream), שיעורי מסגרת משומשים (כגון CFile, QFile) או פונקציות API של מערכת ההפעלה (CreateFile, WriteFile ב- Windows).
שלב 4
יישום רישום באמצעות ממשק ה- API של syslog במערכות הפעלה תואמות UNIX. פונקציות ה- API של syslog מוכרזות בקובץ הכותרת syslog.h. חבר אותו במקום הנכון בקוד המקור של הפרויקט שלך.
שלב 5
התחבר לשירות syslog באמצעות שיחת הפונקציה openlog. כפרמטרים, העבירו אותו מצביע למחרוזת המכילה את מזהה היישום או הרכיב שיכתוב, דגלי אפשרות ומסכת אירועים שיעברו ליומן. השתמש בשיחות לפונקציות syslog ו- vsyslog כדי להוסיף ערכים ליומן. התקשר לפונקציית הסגירה כדי להתנתק מהשירות. דוגמה פשוטה לקוד syslog עשויה להיות: openlog ("קידומת", LOG_NDELAY | LOG_CONS | LOG_PID, LOG_LOCAL1); syslog (LOG_INFO, "% s", "Info"); syslog (LOG_NOTICE, "% s", "Notice" הגיוני להתחבר ל- syslog בעת אתחול היישום ולהתנתק בעת כיבוי.
שלב 6
במערכות הפעלה של Windows, השתמש ב- API של EventLog כדי להוסיף ערכים ליומני המערכת. התקשר ל- RegisterEventSource כדי לקבל את מתאר היומן במכונה שצוינה. השתמש בידית זו בעת קריאה לפונקציה ReportEvent שכותבת ליומן. בסיום, התקשר ל- DeregisterEventSource כדי לסגור את החיבור ולשחרר את המשאבים שהוקצו על ידי RegisterEventSource. הדוגמה הפשוטה ביותר לעבודה עם EventLog עשויה להיות: HANDLE h =:: RegisterEventSource (NULL, "AnySource"); ASSERT (h! = NULL);:: ReportEvent (h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 3, 0, "Text1Text2Text3", NULL);:: DeregisterEventSource (h); כמו עם syslog, זה הגיוני להתקשר ל- RegisterEventSource בהתחלה ו- DeregisterEventSource בעת כיבוי היישום.