Коли програма виходить з ладу без виходу помилки, чи є журнал, який я можу перевірити?


18

Іноді трапляється, що деякі збої програми без надання помилки виводу ( conky в моєму випадку, ймовірно, одна з моїх конфігурацій, яка невірна).

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

Відповіді:


14

Залежить від програми. Різні програми мають різні системи реєстрації журналів; не існує жодного центрального журналу, який містить весь результат усіх програм, які працюють у вашій системі.

При цьому, багато програм вкладають свої файли журналів у каталог /var/log. Файл /var/log/syslog(або, можливо /var/log/messages) містить, зокрема, вихід із "системного реєстратора", що є послугою, доступною системою, яку програми можуть використовувати (якщо вони захочуть) для ведення журналів. Але не всі програми цим користуються. Здебільшого у цьому файлі ви знайдете повідомлення від системних служб низького рівня, а не графічні програми, які ви, ймовірно, використовуєте зазвичай.

Ви можете прочитати більше про розташування стандартних файлів журналів .


6

файли збоїв переходять у /var/log/crashes/користування з apport для повідомлення про помилки. Ви можете витягнути дамп основної програми apport-unpack, поставити цей ядерний дамп через gdb та дізнатися, що спричиняє збій програми.

Це все, якщо ви програміст. Якщо ви не ... ну, ви все одно не зможете виправити аварію!


1
"Це все припускає, що ви програміст. Якщо ви не ... ну, ви не можете виправити аварію!" з відкритим кодом, ми всі можемо спробувати вирішити наші проблеми, на свій страх і ризик, очевидно;)
Strae,

@DaNiel: Не дуже! Якщо ви не програміст і не дуже добре розумієте код додатків, тим більше ви будете псуватися з кодом, з яким ви отримаєте баггір :)
AntonioCS

1
Навіть якщо ви не програміст, який іноді шукає основний дамп, може дати вам уявлення про проблему. Наприклад, здається, що воно врізається в якусь графічну програму - можливо, я повинен оновити драйвер дисплея ...
user1242

2
..і це допомагає описувати помилки у звітах про помилки / форумах;)
Strae

1
Чи знаєте ви непрограмістів, які можуть використовувати gdb? Я програміст і можу дістатись до bt full"ой дивіться заднім числом ... з відсутніми символами ... здогадуюсь, мені потрібно встановити символи налагодження і спробувати відтворити збій ..." Я одного разу зрозумів, як встановити точка розриву ... це найдосконаліше, з чим я стикався.
maco

3

Для переконливих також може бути те, що є записи в $HOME/.xsession-errors.


2

У деяких програмах є прапори, які можна використовувати для ввімкнення налагодження, наприклад -d, -D, --debug тощо. Перевірте головну сторінку програми ( man [my-app]) або запустіть додаток із прапором -h, щоб побачити, чи є у нього такий варіант.

Багато додатків графічного інтерфейсу записують у $ HOME / .xsession-помилки, тому це хороше місце, щоб перевірити вихід.

Мако має рацію, що apport - це, мабуть, найбільш впевнений спосіб отримати гарну інформацію про налагодження. Іноді він не фіксує аварію.

Якщо все інше не вдається, ви також можете витіснити інформацію, запустивши додаток у gdb. Це було б щось на зразок:

$ gdb my-app

(gdb) run

... зробіть все, що потрібно, щоб збити його ...

(gdb) bt full

і йти звідти.

Якщо ви йдете по маршруту gdb, ви також хочете встановити символи, як згадувалося раніше. Див. Https://wiki.ubuntu.com/DebuggingProgramCrash, щоб отримати поради щодо використання.


Найкраща відповідь для мене без сумніву
Клодікс

1

ви можете перейти до, /var/log/messages or crashesто ви можете запустити grepкоманду на них і шукати додаток, який шукає файли, іноді може бути досить великим. Він поверне інформацію, що стосується вашої програми. :)


1

Якщо ви запускаєте свою програму з файлу запуску .desktop, додайте параметр Terminal=trueу файл .desktop. Це відкриє термінал під час запуску програми, вихід на термінал буде аналогічний тому, що ви побачили, якби ви запускали програму в командному рядку в першу чергу. Таким чином, коли графічний інтерфейс забивається або зависає, ви можете побачити, який вихід тексту до нього веде.


Що це робить? У мене вже є цей набір, і він не записує нічого зайвого.
Метт

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