เราจะติดตามปัญหาการล่มของโปรแกรมใน Linux ได้อย่างไร?


12

หากแอปพลิเคชันขัดข้องใน Windows เราสามารถตรวจสอบตัวแสดงเหตุการณ์ในเครื่องมือการดูแลระบบเพื่อดูสิ่งที่ผิดพลาด บางครั้งมันมีข้อมูลที่เป็นประโยชน์อื่น ๆ ไม่ได้ แต่มันเป็นการเริ่มต้น
ใน linux หากแอปพลิเคชัน (ใด ๆ ) ขัดข้องว่ามีใครเริ่มติดตามสิ่งที่เกิดขึ้น
มีบันทึกกลางบางอย่างหรือคล้ายกันบ้างไหม?


2
วิธีมาตรฐานในการแก้ไขข้อบกพร่องในลักษณะนี้คือการเรียกใช้แอปพลิเคชันที่มีปัญหาจากเทอร์มินัลด้วยตนเอง ด้วยวิธีนี้คุณจะเห็นข้อความแสดงข้อผิดพลาดที่พิมพ์ออกมา
terdon

2
รุ่น 64 บิตของลินุกซ์จะเข้าสู่ระบบคำอธิบายสั้น ๆ ของกระบวนการล้มเหลว (หนึ่งที่เสียชีวิตเนื่องจากสัญญาณ) /var/log/syslogใน Linux จัดเตรียมวิธีให้ daemon ได้รับการแจ้งเตือนเมื่อกระบวนการขัดข้อง อูบุนตูของApportและของ Red Hat abrtใช้นี้เพื่อให้การเข้าสู่ระบบจากส่วนกลางและสิ่งอำนวยความสะดวกรายงานรุ่น โดยทั่วไปการถ่ายโอนข้อมูลหลักจะถูกบันทึกไว้เพื่อให้คุณสามารถเรียกใช้ดีบักเกอร์ในโปรแกรมที่เสียหาย
Mark Plotnick

ฉันจะยกระดับคำถามนี้ แต่ OP ดูเหมือนจะไม่ต้องการช่วยเหลือชุมชนโดยการยอมรับหรือโพสต์คำตอบดังนั้นฉันจะพบคำถามที่คล้ายกันซึ่งยอมรับคำตอบและถอนตัวออกด้วยความหวังว่ามันจะ เพิ่มขึ้นไปด้านบนของผลการค้นหาและช่วยผู้ค้นหาในอนาคต
Mawg กล่าวว่านำสถานะโมนิก้ากลับคืนมาใน

คำตอบ:


13

มีบันทึกกลางบางอย่างหรือคล้ายกันบ้างไหม?

/var/log/สถานที่ปกติสำหรับระบบบันทึกเป็น สิ่งที่ได้รับการวางในแต่ละล็อกขึ้นอยู่กับการกำหนดค่า syslog /var/log/syslogแต่โดยทั่วไปทุกอย่างยกเว้นการเข้าสู่ระบบไป

นี่ไม่รับประกันว่าแอปพลิเคชันแต่ละรายการจะทิ้งร่องรอยใด ๆ ไว้ในกรณีที่เกิดปัญหา แต่พวกมันหรือเปลือกหอยอาจจะพ่นสิ่งใดสิ่งหนึ่งไปยังสตรีมข้อผิดพลาดมาตรฐาน / มาตรฐานและถ้าคุณเรียกใช้แอปพลิเคชันที่ลำบากในเบื้องหน้าจากเทอร์มินัลคุณจะสามารถเห็นสิ่งนั้นได้


สิ่งหนึ่งที่ควรมองหาใน/var/log? ไฟล์บันทึกใดมีการประชุมบ้าง?
Jim

2
หากคุณสามารถทำให้เกิดการขัดข้องให้ทำเช่นนั้นแล้วดูว่าไฟล์ใดภายใต้ / var / log ที่มีการเปลี่ยนแปลงล่าสุด ด้วยls -lartไฟล์ล่าสุดในรายชื่อถูกเปลี่ยนแปลงล่าสุด
Devon_C_Miller

มีการประชุมs -linux ต่างกันมากกว่า windows Syslogอ้างถึงตัวบันทึกระบบ แต่ไม่มีการนำไปใช้ที่เป็นสากลและจากนั้นรูปแบบต่างๆสามารถกำหนดค่าได้หลายวิธี ตรรกะทั่วไปคือข้อความถูกส่งไปยัง syslog โดยแอ็พพลิเคชันจากนั้นข้อความเหล่านี้จะถูกจัดเรียงเป็นไฟล์ต่าง ๆ ตามที่กล่าวไว้โดยทั่วไปทุกอย่างจะสิ้นสุดลง/var/log/syslogแต่ distros ต่างกันทำสิ่งต่าง หากคุณรู้ว่า syslog ใดที่คุณใช้อยู่คุณสามารถตรวจสอบการกำหนดค่าเพื่อตรวจสอบสิ่งนี้
goldilocks

6

บน Ubuntu segfaults /var/log/kern.logได้รับการเขียน ฉันทดสอบโดยสร้างโปรแกรมที่ segfaults:

void main() {
    int *a=0;
    *a=0;
}

หลังจากแบ่งมันแล้วก็มีบรรทัดนี้ใน/var/log/kern.log:

a.out[534]: segfault at 0 ip 08048432 sp bfaec8c0 error 6 in a.out[8048000+1000]

1

ใน Ubuntu หากคุณเปิดใช้แอปพลิเคชันของคุณจากไฟล์ .desktop ให้เพิ่มตัวเลือกTerminal=trueในไฟล์ .desktop ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.