Як можна простежити проблеми збоїв програм у Linux?


12

Якщо програма виходить з ладу в Windows, ми можемо перевірити переглядач подій в інструментах адміністрування, щоб побачити, що сталося. Іноді в ній є корисна інформація, інші - ні, але це початок.
У Linux, якщо програма (будь-яка) виходить з ладу, як починати відстежувати те, що сталося?
Чи є, наприклад, якийсь центральний журнал чи щось подібне?


2
Стандартний спосіб налагодження подібних речей - це запуск проблемної програми з терміналу вручну. Таким чином ви можете побачити друковані повідомлення про помилки.
тердон

2
64-розрядні версії Linux увійдуть у короткий опис аварійного процесу (той, який загинув через сигнал) /var/log/syslog. Linux надає можливість демону отримувати повідомлення про збої в процесі. Убунту Apport і Red Hat, ABRT використовувати це , щоб забезпечити централізоване ведення журналу і генерації звітів об'єктів. Зазвичай основний дамп зберігається, щоб ви могли викликати налагоджувач у програмі, що розбилася.
Марк Плотнік

Я б підтримав це питання, але ОП, схоже, не хоче допомогти громаді, прийнявши або опублікувавши відповідь, тому я знайду подібне запитання, яке сприймає відповідь і підтримує це, сподіваючись, що воно буде піднятися на вершину результатів пошуку та допомогти майбутнім шукачам
Мавг каже, що відновити Моніку

Відповіді:


13

Чи є, наприклад, якийсь центральний журнал чи щось подібне?

Нормальне місце для системних журналів - це /var/log/. Те, що буде розміщено у кожному журналі, залежить від конфігурації syslog, але зазвичай все, окрім входу, йде /var/log/syslog.

Це не є гарантією того, що окремі програми залишать там будь-яку підказку у разі виникнення проблеми. Але вони, або оболонка, ймовірно, підкажуть щось до стандартних потоків помилок / стандартних помилок, і якщо запустити клопіткий додаток на передньому плані з терміналу, ви зможете побачити це.


Що потрібно шукати /var/log? Який файл журналу? Чи є певна умова?
Джим

2
Якщо ви можете змусити збій, зробіть це, тоді подивіться, який файл у / var / log був останнім часом змінений. З ls -lart, останній файл у списку був нещодавно змінений.
Devon_C_Miller

Існують звичайні s - Linux набагато неоднорідніший ніж Windows. Syslog посилається на системний реєстратор, але не існує універсальної реалізації, і зміни можуть бути налаштовані різними способами. Загальна логіка полягає в тому, що повідомлення надсилаються програмою в syslog, і ці повідомлення сортуються в різні файли. Як уже згадувалося, зазвичай все закінчується /var/log/syslog, але різні дистрибуції роблять справи по-різному. Якщо ви знаєте, який ви використовуєте системний журнал, ви можете вивчити його конфігурацію, щоб визначити це.
золотинки

6

На Ubuntu сегменти файлів записуються на /var/log/kern.log. Я перевірив це, створивши програму, яка містить сегменти:

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 файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.