วิธีหลักวิธีหนึ่งในการวินิจฉัยความผิดปกติในการทำงานของซอฟต์แวร์ที่ทำงานอยู่ในคอมพิวเตอร์ของผู้ใช้อยู่แล้วคือการเก็บบันทึกเหตุการณ์ - บันทึก โดยทั่วไป จะบันทึกข้อมูลเกี่ยวกับการเปิดตัว ตลอดจนข้อมูลสำคัญเกี่ยวกับสถานะของกระบวนการและสภาพแวดล้อมของระบบในกรณีที่เกิดความล้มเหลวร้ายแรง คุณสามารถสร้างบันทึกได้โดยใช้วิธีการของคุณเองและใช้บริการพิเศษของระบบปฏิบัติการ
มันจำเป็น
- - นักแปลจากภาษาโปรแกรมที่ใช้
- - อาจเป็น Windows Platform SDK;
- - อาจเป็นแพ็คเกจการพัฒนาสำหรับ glibc
คำแนะนำ
ขั้นตอนที่ 1
วิเคราะห์เงื่อนไขการใช้งานและจัดทำข้อกำหนดสำหรับระบบย่อย ส่วนประกอบ หรือไลบรารีที่พัฒนาขึ้นซึ่งจะสร้างบันทึก ตอบคำถามเกี่ยวกับแพลตฟอร์มหรือแพลตฟอร์มที่ควรใช้งาน API ของมันจะเป็นอย่างไร
ขั้นตอนที่ 2
ตามคุณลักษณะการทำงานที่ระบุและ API ที่ให้มา ให้สร้างเทมเพลตสำหรับระบบย่อยการบันทึก เริ่มใช้ฟังก์ชันการทำงาน
ขั้นตอนที่ 3
ตัวเลือกที่ง่ายที่สุดสำหรับการบันทึกคือการสร้างไฟล์อย่างอิสระในตำแหน่งที่กำหนดโดยการกำหนดค่าแอปพลิเคชัน จากนั้นเขียนข้อมูลในรูปแบบใดก็ได้ ใช้ฟังก์ชันไลบรารีมาตรฐาน C (fopen, fclose, fwrite), อ็อบเจ็กต์สตรีมไลบรารีมาตรฐาน C ++ (ของสตรีม) คลาสเฟรมเวิร์กที่ใช้ (เช่น CFile, QFile) หรือฟังก์ชัน API ของระบบปฏิบัติการ (CreateFile, WriteFile บน Windows)
ขั้นตอนที่ 4
ใช้งานการบันทึกโดยใช้ syslog API บนระบบปฏิบัติการที่เข้ากันได้กับ UNIX ฟังก์ชัน syslog API ได้รับการประกาศในไฟล์ส่วนหัว syslog.h เชื่อมต่อในตำแหน่งที่ถูกต้องในซอร์สโค้ดของโครงการของคุณ
ขั้นตอนที่ 5
เชื่อมต่อกับบริการ syslog โดยใช้การเรียกใช้ฟังก์ชัน openlog เป็นพารามิเตอร์ ส่งตัวชี้ไปยังสตริงที่มีตัวระบุของแอปพลิเคชันหรือส่วนประกอบที่จะเขียน แฟล็กตัวเลือก และรูปแบบเหตุการณ์ที่จะส่งผ่านไปยังบันทึก ใช้การเรียกไปยังฟังก์ชัน syslog และ vsyslog เพื่อเพิ่มรายการลงในบันทึก เรียกใช้ฟังก์ชัน closelog เพื่อยกเลิกการเชื่อมต่อจากบริการ ตัวอย่างง่ายๆ ของโค้ด syslog ได้แก่ openlog ("prefix", LOG_NDELAY | LOG_CONS | LOG_PID, LOG_LOCAL1); syslog (LOG_INFO, "% s", "Info"); syslog (LOG_NOTICE, "% s", " Notice "); closelog (); เหมาะสมที่จะเชื่อมต่อกับ syslog เมื่อเริ่มต้นแอปพลิเคชัน และตัดการเชื่อมต่อเมื่อปิดตัวลง
ขั้นตอนที่ 6
บนระบบปฏิบัติการ Windows ให้ใช้ EventLog API เพื่อเพิ่มรายการลงในบันทึกของระบบ โทร 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 เมื่อปิดแอปพลิเคชัน