@Froke пишу здесь так как госпожа сниперс добавила меня в игнор-лист, после моего появления в ее последнем рекламном посте, видимо от бессильной злобы и невозможности поддерживать диспут на должном уровне. Аналога виндовых событий на прямую нет, но способов узнать что происходит с программой на самом деле больше чем в винде.
- можно просто попробовать запустить программу из консоли и посмотреть что она пишет в консоль.
- после завершения любой программы в консоли (bash) можно выполнить echo $? - результатом будет код завершения программы, этот код может быть описан в документации программы.
- при запуске программы в консоли стоит посмотреть какие у запускаемого бинарника есть ключи, запустить программу из консоли с ключами --help / -h - возможно у приложения есть режим verbose (подробный вывод отладочной информации)
- погуглить, почитать документацию на предмет того пишет ли программа какой-нибудь лог в /var/log/* (это видимо Вам не подходит)
- глянуть лог ядра - команда dmesg - иногда там может быть какой-нибудь стэк-трэйс или ядерный warning если программа работает с чем-нибудь ядерным (устройство, системный вызов). Так же сюда ядро пишет обо всех своих событиях, например про подключение флэшки.
- найти бинарник приложения и выполнить на него команду ldd ($ ldd /<path>/<binary_name>) - результатом будет список динамических библиотек которые использует приложение, если какой-то библиотеки нет это может быть причиной падения. Если ошибка в библиотеке, ее можно перегрузить на правильную с помощью переменной окружения LD_PRELOAD при запуске утилиты
- очень хороший способ отладки запустить приложение в консоли под утилитой strace (показывает trace системных вызовов) - очень часто в длинном выводе можно понять что случилось - нет нужного файла, или что-то еще. Но здесь нужно быть знакомым с системными вызовами в линуксе. Похожая утилита ltrace - отслеживает вызовы функций из библиотек. - про них лучше почитать какие-нибудь мануалы или спросить если что-то не понятно меня, здесь описывать слишком долго. (по умолчанию в системе их может не быть и нужно поставить соответствующие пакеты)
- самый хардкорный вариант, для более сложных случаев - программа должна быть собрана с отладочной информацией и без -g, и запустить ее под отладчиком gdb. Тут нужно читать мануал как пользоваться gdb, но этот способ позволяет найти практически любые ошибки.
Вообщем можете описать здесь что за программа падает и что за система у Вас установлена, можно попробовать разобраться в чем дело. Зачастую реально у больших приложений которые запускаются и рисуют заставку "пускач" это скрипт который запускает один или несколько бинарных файлов с разными параметрами, в таком случае смотреть strace, ltrace и вывод gdb скрипта почти бесполезно, так как скрипт реально работает под интерпретатором и эти утилиты будут отображать трассы интерпретатора, нужно смотреть внутрь скрипта и пробовать добраться до бинарного файла.
Вообщем я много тут всего разного написал, лучше или опишите ситуацию подробнее или по описанным инструментам спрашивайте, а то обо всей отладке в линуксе в одном комментарии не ответить.
P.S. если будут вопросы, то ответить смогу в четверг после обеда, до этого времени я буду в поезде.
- можно просто попробовать запустить программу из консоли и посмотреть что она пишет в консоль.
- после завершения любой программы в консоли (bash) можно выполнить echo $? - результатом будет код завершения программы, этот код может быть описан в документации программы.
- при запуске программы в консоли стоит посмотреть какие у запускаемого бинарника есть ключи, запустить программу из консоли с ключами --help / -h - возможно у приложения есть режим verbose (подробный вывод отладочной информации)
- погуглить, почитать документацию на предмет того пишет ли программа какой-нибудь лог в /var/log/* (это видимо Вам не подходит)
- глянуть лог ядра - команда dmesg - иногда там может быть какой-нибудь стэк-трэйс или ядерный warning если программа работает с чем-нибудь ядерным (устройство, системный вызов). Так же сюда ядро пишет обо всех своих событиях, например про подключение флэшки.
- найти бинарник приложения и выполнить на него команду ldd ($ ldd /<path>/<binary_name>) - результатом будет список динамических библиотек которые использует приложение, если какой-то библиотеки нет это может быть причиной падения. Если ошибка в библиотеке, ее можно перегрузить на правильную с помощью переменной окружения LD_PRELOAD при запуске утилиты
- очень хороший способ отладки запустить приложение в консоли под утилитой strace (показывает trace системных вызовов) - очень часто в длинном выводе можно понять что случилось - нет нужного файла, или что-то еще. Но здесь нужно быть знакомым с системными вызовами в линуксе. Похожая утилита ltrace - отслеживает вызовы функций из библиотек. - про них лучше почитать какие-нибудь мануалы или спросить если что-то не понятно меня, здесь описывать слишком долго. (по умолчанию в системе их может не быть и нужно поставить соответствующие пакеты)
- самый хардкорный вариант, для более сложных случаев - программа должна быть собрана с отладочной информацией и без -g, и запустить ее под отладчиком gdb. Тут нужно читать мануал как пользоваться gdb, но этот способ позволяет найти практически любые ошибки.
Вообщем можете описать здесь что за программа падает и что за система у Вас установлена, можно попробовать разобраться в чем дело. Зачастую реально у больших приложений которые запускаются и рисуют заставку "пускач" это скрипт который запускает один или несколько бинарных файлов с разными параметрами, в таком случае смотреть strace, ltrace и вывод gdb скрипта почти бесполезно, так как скрипт реально работает под интерпретатором и эти утилиты будут отображать трассы интерпретатора, нужно смотреть внутрь скрипта и пробовать добраться до бинарного файла.
Вообщем я много тут всего разного написал, лучше или опишите ситуацию подробнее или по описанным инструментам спрашивайте, а то обо всей отладке в линуксе в одном комментарии не ответить.
P.S. если будут вопросы, то ответить смогу в четверг после обеда, до этого времени я буду в поезде.
раскрыть ветку (1)
Еще раз спасибо Вам огромное, очень хорошо объясняете. Буду пытаться, очень интересно во всём этом разбираться. Купил себе книгу "UNIX и LINUX руковоство системного администратора 4-е издание" ЭВИ НЕМЕТ, ГАРТ СНАЙДЕР, ТРЕНТ ХЕЙН, БЭН УЭЙЛИ. Может можете посоветовать какую литературу стоит почитать про ОС Linux.
У меня в основном проблемы возникают с железом, звуковая карта при движении мыши издает не приятное потрескивание. Есть гарнитура со своей звуковой картой, тоже проблемы. В режиме 7.1 просто постоянный треск, на 2.0 тишина. И проблемы с usb wifi модулем, потери пакетов окончательно не удается победить.
А то я если и нахожу мануалы в интернете, без понимания дела просто ввожу указанные команды.
У меня в основном проблемы возникают с железом, звуковая карта при движении мыши издает не приятное потрескивание. Есть гарнитура со своей звуковой картой, тоже проблемы. В режиме 7.1 просто постоянный треск, на 2.0 тишина. И проблемы с usb wifi модулем, потери пакетов окончательно не удается победить.
А то я если и нахожу мануалы в интернете, без понимания дела просто ввожу указанные команды.