บางครั้งมันเกิดขึ้นที่แอพพลิเคชั่นบางตัวที่ไม่มีข้อผิดพลาดในการส่งออก (ไม่มั่นใจในกรณีของฉันอาจเป็นหนึ่งในการกำหนดค่าของฉันที่ไม่ถูกต้อง)
มีบันทึกข้อผิดพลาดที่ฉันสามารถตรวจสอบเพื่อเข้าใจว่าเหตุใดจึงเกิดข้อผิดพลาดหรือไม่
บางครั้งมันเกิดขึ้นที่แอพพลิเคชั่นบางตัวที่ไม่มีข้อผิดพลาดในการส่งออก (ไม่มั่นใจในกรณีของฉันอาจเป็นหนึ่งในการกำหนดค่าของฉันที่ไม่ถูกต้อง)
มีบันทึกข้อผิดพลาดที่ฉันสามารถตรวจสอบเพื่อเข้าใจว่าเหตุใดจึงเกิดข้อผิดพลาดหรือไม่
คำตอบ:
ขึ้นอยู่กับแอพพลิเคชั่น แอปพลิเคชันที่แตกต่างกันมีระบบบันทึกที่แตกต่างกัน ไม่มีศูนย์กลางบันทึกเดียวที่มีเอาต์พุตทั้งหมดจากโปรแกรมทั้งหมดที่รันบนระบบของคุณ
/var/log
ที่ถูกกล่าวว่าเป็นจำนวนมากของโปรแกรมจะวางแฟ้มบันทึกของพวกเขาในไดเรกทอรี โดยเฉพาะอย่างยิ่งไฟล์/var/log/syslog
(หรืออาจจะ/var/log/messages
) มีเอาต์พุตจาก "system logger" ซึ่งเป็นบริการที่มีให้โดยระบบที่โปรแกรมสามารถใช้ (หากพวกเขาเลือก) สำหรับการบันทึก แต่ไม่ใช่ทุกโปรแกรมที่ใช้งาน ส่วนใหญ่คุณจะพบข้อความจากบริการระบบระดับต่ำในไฟล์นั้นไม่ใช่แอปพลิเคชันกราฟิกที่คุณอาจใช้ตามปกติ
คุณอาจต้องการที่จะอ่านเพิ่มเติมเกี่ยวกับสถานที่ตั้งของแฟ้มบันทึกมาตรฐาน
มีไฟล์ขัดข้อง/var/log/crashes/
สำหรับใช้กับ apport เพื่อรายงานข้อบกพร่อง คุณสามารถแยกการถ่ายโอนข้อมูลหลักด้วยapport-unpack
วางการถ่ายโอนข้อมูลหลักผ่าน gdb และค้นหาสิ่งที่ทำให้โปรแกรมหยุดทำงาน
นี่คือทั้งหมดที่สมมติว่าคุณเป็นโปรแกรมเมอร์ หากคุณไม่ได้ ... คุณไม่สามารถแก้ไขข้อขัดข้องได้!
bt full
"โอ้ดู backtrace ... ด้วยสัญลักษณ์ที่ขาดหายไป ... เดาว่าฉันต้องติดตั้งสัญลักษณ์แก้ปัญหาและพยายามที่จะทำซ้ำความผิดพลาด ... " ฉันเคยคิดวิธีการตั้งค่า เบรกพอยต์ ... นั่นคือขั้นสูงสุดที่ฉันเคยได้รับมา
สำหรับ conky มันอาจเป็นไปได้ว่ามีรายการ$HOME/.xsession-errors
มา
บางแอพพลิเคชั่นมีแฟล็กที่สามารถใช้เปิดการดีบักเช่น -d, -D, --debug เป็นต้นตรวจสอบ man page ของแอพพลิเคชั่น ( man [my-app]
) หรือเรียกใช้แอพด้วยแฟล็ก -h เพื่อดูว่ามี ตัวเลือก
แอพ GUI จำนวนมากเขียนเป็น $ HOME / .xsession-errors ดังนั้นจึงเป็นสถานที่ที่ดีในการตรวจสอบเอาต์พุต
สิทธิ์ของ maco ที่ apport น่าจะเป็นวิธีที่ดีที่สุดในการรับข้อมูลดีบั๊ก บางครั้งมันก็ไม่ได้จับความผิดพลาด
หากสิ่งอื่นล้มเหลวคุณสามารถบังคับให้ข้อมูลนั้นหมดโดยเรียกใช้แอปใน gdb มันจะเป็นสิ่งที่ชอบ:
$ gdb my-app
(gdb) run
... ทำทุกอย่างที่จำเป็นเพื่อให้มันขัดข้อง ...
(gdb) bt full
และไปจากที่นั่น
หากคุณไปเส้นทาง gdb คุณจะต้องติดตั้งสัญลักษณ์ตามที่กล่าวไว้ก่อนหน้านี้ ดูhttps://wiki.ubuntu.com/DebuggingProgramCrashสำหรับคำแนะนำในการจัดการ
คุณสามารถไปที่/var/log/messages or crashes
แล้วคุณสามารถเรียกใช้grep
คำสั่งเหล่านั้นและค้นหาแอปพลิเคชันของคุณที่กำลังมองหาไฟล์อาจมีขนาดค่อนข้างใหญ่ในบางครั้ง มันจะส่งคืนข้อมูลที่เกี่ยวข้องกับแอปพลิเคชันของคุณ :)
หากคุณกำลังเรียกใช้แอปพลิเคชันของคุณจากไฟล์ .desktop ให้เพิ่มตัวเลือกTerminal=true
ในไฟล์ .desktop ของคุณ สิ่งนี้จะเปิดเทอร์มินัลเมื่อคุณเรียกใช้โปรแกรมเอาต์พุตบนเทอร์มินัลจะคล้ายกับสิ่งที่คุณเห็นถ้าคุณเรียกใช้โปรแกรมผ่านบรรทัดคำสั่งในตอนแรก ด้วยวิธีนี้เมื่อ GUI หยุดทำงานหรือหยุดทำงานคุณสามารถดูว่าข้อความใดที่นำไปสู่