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

18

Иногда случается, что сбой некоторых приложений не приводит к ошибке вывода ( conky в моем случае, вероятно, является одной из моих настроек, которая неверна).

Есть ли где-нибудь журнал ошибок, который я могу проверить, чтобы понять, почему он падает?

Strae
источник

Ответы:

14

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

При этом многие программы помещают свои файлы журналов в каталог /var/log. В частности, файл /var/log/syslog(или, возможно, /var/log/messages) содержит выходные данные «системного регистратора», который представляет собой службу, предоставляемую системой, которую программы могут использовать (если они захотят) для ведения журнала. Но не все программы используют его. В основном в этом файле вы найдете сообщения от низкоуровневых системных служб, а не графические приложения, которые вы обычно используете.

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

Дэвид З
источник
6

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

Это все, если вы программист. Если вы не ... ну, вы все равно не можете исправить аварию!

MACO
источник
1
«Все это предполагает, что вы программист. Если вы не… ну, вы все равно не сможете исправить ошибку!» с открытым исходным кодом мы все можем попытаться решить наши проблемы, очевидно, на свой страх и риск;)
Strae
@DaNiel: не совсем! Если вы не программист и плохо разбираетесь в коде приложений, тем больше вы будете связываться с кодом, который, вероятно, получит
ошибочный пользователь
1
Даже если вы не программист, иногда поиск дампов ядра может дать вам представление о проблеме. Например, кажется, что происходит сбой в какой-то графической процедуре - возможно, мне следует обновить драйвер дисплея ...
user1242
2
..и это помогает описывать ошибки в сообщениях об ошибках / форумах;)
Strae
1
Вы знаете непрограммистов, которые могут использовать GDB? Я программист и могу понять, что bt full"о бэк-след ... с отсутствующими символами ... думаю, мне нужно установить символы отладки и попытаться воспроизвести сбой ..." Я однажды понял, как установить точка останова ... это самое продвинутое, что я получил с этим все же.
Мако
3

Для conky также может быть, что есть записи в $HOME/.xsession-errors.

QBi
источник
2

Некоторые приложения имеют флаги, которые можно использовать для включения отладки, такие как -d, -D, --debug и т. Д. Проверьте man-страницу приложения ( man [my-app]) или запустите приложение с флагом -h, чтобы увидеть, есть ли у него такой вариант.

Многие приложения с графическим интерфейсом записывают в $ HOME / .xsession-errors, так что это хорошее место для проверки вывода.

Мако прав, что apport, вероятно, самый надежный способ получить хорошую отладочную информацию. Иногда это не захватывает крах, все же.

Если все остальное терпит неудачу, вы также можете принудительно вытолкнуть информацию, запустив приложение в gdb. Это было бы что-то вроде:

$ gdb my-app

(gdb) run

... сделать все необходимое, чтобы он потерпел крах ...

(gdb) bt full

и идти оттуда.

Если вы идете по маршруту GDB, вы также хотите установить символы, как упоминалось ранее. См. Https://wiki.ubuntu.com/DebuggingProgramCrash для получения рекомендаций о ручной фиксации.

Брайс
источник
Лучший ответ для меня без сомнения
Claudix
1

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

myusuf3
источник
1

Если вы запускаете приложение из файла запуска .desktop, добавьте этот параметр Terminal=trueв свой файл .desktop. Это откроет терминал, когда вы запустите программу, вывод на терминал будет аналогичен тому, что вы увидели бы, если бы вы запустили программу через командную строку. Таким образом, когда происходит сбой или зависание графического интерфейса, вы можете увидеть, какой вывод текста привел к нему.

Села
источник
Что это делает? У меня уже есть этот набор, и он не регистрирует ничего лишнего.
Мэтт
Я попытался ответить на ваш вопрос, отредактировав мой ответ. Имеет ли это смысл?
Села