reagentoo |
Отметившийся |
|
|
Joined: 16 Oct 2011 |
Posts: 1 |
|
|
|
|
|
|
|
Способ 0. Плагины. (Unix/Windows)
Попробуйте переместить/удалить плагины, которые не перечислены в README (который лежит в исходниках). Если вам повезло, и клиент теперь не падает без дополнительных плагинов, то отладку делать всё равно придётся.
Способ 1. Утилита strace. (Unix)
strace — это утилита, которая позволяет вам трассировать системные вызовы и сигналы конкретной команды. Установите strace из пакетного менеджера своего дистрибутива. Врядли поможет узнать причину сегфолта. Простой способ, не требующей отладочной версии. Запуск:
Способ 2. Отладка с GDB. (Unix)
Убедитесь, что в системе есть GDB. Сначала нужно собрать отладочную версию Vacuum-IM, которая будет запускаться из рабочего каталога.
Сборка с qmake:
Code: | cd /vacuum/src/dir && qmake CONFIG+=debug -recursive && make |
Сборка с cmake (для версии выше 1.1.1):
Code: | cd /vacuum/src/dir && CMAKE_BUILD_TYPE="Debug" RUN_FROM_BUILD_DIR="true" cmake . && make |
Сборка с cmake (для версии 1.1.1 и ниже):
Code: | cd /vacuum/src/dir && CMAKE_BUILD_TYPE="Debug" cmake . && make |
Полученные сборки должны подключить плагины в рабочей директории, поэтому "make install" делать не нужно.
Делаем запуск в GDB:
В консоли GDB делаем следующее:
Code: |
run
set logging file ~/vacuum-gdb.log
set logging on
run
|
При аварийном завершении работы Vacuum, наберите
Далее можете выйти из GDB ("quit"), лог сохранён. В большинстве случаев этого лога достаточно для разработчиков, чтобы сделать патч с исправлениями.
Другие способы запуска из GDB (выберите подходящий для себя):
1. Code: | gdb vacuum 2>&1 | tee ~/vacuum-gdb.log |
2. Code: | script ~/vacuum-gdb.log gdb vacuum |
Способ 3. Отладка в qt-creator. (Unix/Windows)
Преимущество данного способа в том, что в qt-creator есть помошник отладчика, позволяющий, например, вывести более полное дерево переменных при злополучном сегфолте, включая содержимое d-указателей.
Если у вас уже есть собранный дебажный Vacuum, просто запустите его в креаторе, как внешнее приложение (Отладка -> Начать отладку -> Запустить внешнее приложение для отладки...):
Если клиент не собран, то откройте в qt-creator проект (vacuum.pro) и соберите отладочную версию.
Для получения бэктрейса кликните правой кнопкой мыши внизу на окне отладке и нажмите "вывести полный стек вызовов". После чего, можно выборочно скопировать содержимое окна "Переменные и выражения" и отправить всё это в issues разработчику.
Сборка отладочной версии с помощью пакетных менеджеров.
Gentoo:
Code: |
echo "CMAKE_BUILD_TYPE=\"Debug\"" >> /etc/portage/env/debug.conf
echo "FEATURES=\"nostrip\"" >> /etc/portage/env/debug.conf
echo "net-im/vacuum::rion debug.conf" >> /etc/portage/package.env
echo "net-im/vacuum-*::rion debug.conf" >> /etc/portage/package.env
emerge vacuum
|
|
|