JRuDevels

Jabber Russian Developers Forum.
Log in Register FAQ Memberlist Search JRuDevels Forum Index

JRuDevels Forum Index » Vacuum » Отладка
Post new topic  Reply to topic View previous topic :: View next topic 
Отладка
PostPosted: Sun Oct 16, 2011 5:08 pm Reply with quote
reagentoo
Отметившийся
Отметившийся
Joined: 16 Oct 2011
Posts: 1




Способ 0. Плагины. (Unix/Windows)
Попробуйте переместить/удалить плагины, которые не перечислены в README (который лежит в исходниках). Если вам повезло, и клиент теперь не падает без дополнительных плагинов, то отладку делать всё равно придётся.

Способ 1. Утилита strace. (Unix)
strace — это утилита, которая позволяет вам трассировать системные вызовы и сигналы конкретной команды. Установите strace из пакетного менеджера своего дистрибутива. Врядли поможет узнать причину сегфолта. Простой способ, не требующей отладочной версии. Запуск:
Code:
strace vacuum


Способ 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:
Code:
gdb vacuum

В консоли GDB делаем следующее:
Code:

run
set logging file ~/vacuum-gdb.log
set logging on
run

При аварийном завершении работы Vacuum, наберите
Code:

bt full

Далее можете выйти из 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
View user's profile Send private message
Отладка
JRuDevels Forum Index » Vacuum
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
All times are GMT + 3 Hours  
Page 1 of 1  

  
  
 Post new topic  Reply to topic  


Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin