Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Прочая документация

Важная информация

Прочая документация Помощь, книги, инструкции, описания

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.03.2010, 13:09   #1
CruncH
Пользователь
 
Регистрация: 07.03.2010
Адрес: Норильск
Сообщений: 51
Сказал(а) спасибо: 28
Поблагодарили 31 раз(а) в 15 сообщениях
Записей в дневнике: 3
CruncH На верном пути
Отправить сообщение для CruncH с помощью ICQ
Лампочка Crash dump'ы под *nix

Создаю тему из сохраненных ранее страниц, оригинальное название "Crash dump'ы под Linux".
Автор оригинальной темы mentat.
Содержание почти полностью переделано.
Выкладываю во вложениях 3 из 4 страницы(одной страницы нет т.к. там был просто флуд и никакой смысловой нагрузки он не нес).

Нам понадобится:
  1. Отладчик gdb
  2. *nix система
  3. руки и мозг(опционально, но желательно все таки их наличие )
*Заметка: для удобной отладки нужно чтобы мангос был собран с опцией "--with-debug-info", иначе не будет достаточной информации о причине падения сервера. Также для избежание неприятных ситуаций рекомендуется иметь хороший запас места на жестком диске.
Цитата:
Установка gdb происходит также как и любой другое программное обеспечение в системе, а именно через системы: emerge - Gentoo, aptitude(apt-get, etc) - Deb системы(Debian, Ubuntu, etc), zypper или yum - rpm системы(Opensuse,Fedora)
*В openSuse для этого можно воспользоваться yast'том(YaST2 - universal configuration utility), как GUI версией, так и консольной на ncurses с псевдографикой

И так начнем...
Для отладки Mangos под *nix нужно:

Linux:
1)Включаем генерацию дампов на текущую сессию
Код:
ulimit -c unlimited
и/или в файл /etc/security/limits.conf добавить
Код:
* hard core unlimited
*заметка: я бы так не советовал делать лишь по 1 причине, после этого на все сессии будет распространятся создание коре дапов при падениях приложений , и на харде будет постепенно собираться мусор. На мой взгляд гораздо правильней сделать 1 способом и использовать эту команду либо в скрипте запуска, либо напрямую в консоли.
2)
2.1) Прежде чем редактировать файл /etc/sysctl.conf нужно определить точные имена некоторых переменных
в консоли:
Код:
cat /proc/sys/fs/suid_dumpable
Ответ должен быть в виде 0 "нуля" и значить файл существует. если не существует такого файла то пробуем:
Код:
cat /proc/sys/kernel/suid_dumpable
Ответ должен быть таким же, как и ожидался ранее.
*заметка: В большинстве систем обычно первый файл присутствует
2.2) Создаем папку и ставим права доступа 777
Код:
mkdir -p /var/log/dumps
chmod -R 777 /var/log/dumps
2.3) Приступаем к редактированию файла /etc/sysctl.conf
Добавляем в конец файла строчки(!!!в место "[define]" вставляем то выделенное слово, из предыдущего действия, где файл имелся в наличии и возвращался какой либо результат!!!):
Код:
[define].suid_dumpable=2
kernel.core_pattern="/var/log/dumps/%e.%p.core"
Эти параметры будут действовать после перезагрузки системы, для мгновенного результата можно выполнить 2 команды
Код:
sysctl -w [define].suid_dumpable=2
sysctl -w kernel.core_pattern="/var/log/dumps/core.%e.%p"
*заметка: для того чтобы узнать более подробно о %e и %p смотрим man core

Теперь дампы будут ложиться в папку /var/log/dumps/

*BSD:
***под бсд системами это не проверялось, то есть это переделанный копипаст***
1)Должна быть включена опция в ядре:
Код:
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
2) в файле /etc/sysctl.conf добавляем следующие строки:
Код:
kern.coredump=1 
kern.corefile=/home/cores/%U.%N.core
Чтобы изменения применились сразу выполняем следующие команды:
Код:
sysctl -w kern.coredump=1 
sysctl -w kern.corefile=/home/cores/%U.%N.core
При этом - директория /home/cores/ должна существовать и на нее должны стоять соответствующие права для возможности записи туда файлов.

Работа с отладчиком GDB:
2) Создать файл(создать можно где душе угодно, лишь бы было бы удобно) bt с содержанием
Код:
bt full
*заметка: для более полной информации о командах отладчика нужно смотреть man gdb
смотрим коре дамп в отладчике
Код:
gdb /path/to/mangos-worldd -c /path/to/[имя файла дампа].core -n --command=/path/to/bt
для вывода данных в файл можно воспользоваться таким способом
Код:
gdb /path/to/mangos-worldd -c /path/to/[имя файла дампа].core -n --batch --command=/path/to/bt >> dump.log
*заметка: в зависимости от содержания файла bt будет зависеть вывод информации о дампе

Ресурсы с которых бралась информация:
1) _http://linux.die.net/man/5/core также можно это глянуть через man core
2) _http://www.randombugs.com/linux/core-dumps-linux.html
использовалась система OpenSuse11.2(2.6.31.5-0.1-default)
Вложения
Тип файла: zip index1.htm.zip (55.0 Кб, 634 просмотров)

Последний раз редактировалось CruncH; 10.05.2010 в 21:19.
CruncH вне форума   Ответить с цитированием
14 пользователя(ей) сказали cпасибо:
Chestarfild (12.05.2010), Feel the Power (12.03.2010), FreeBSD (03.10.2010), PSZ (23.03.2010), Sid (07.04.2011), sven (16.03.2010), Viste (11.03.2010)
 

Метки
core dump, crash dump, linux


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[fix][0.12] player dump Chipleo Принятые патчи 1 02.07.2010 15:18
Crash с инстами ice74 Баг-репорты 12 20.05.2010 12:11
[Crash?] удаление GO zergtmn Баг-репорты 0 29.04.2010 22:31
[crash] EffectScriptEffect Insider42 Баг-репорты 8 23.04.2010 12:49
Crash(game_event) selector Баг-репорты 9 19.04.2010 19:41


Текущее время: 10:25. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot