Администратор
Разработчик
- Сообщения
- 216
- Реакции
- 1,303
- Помог
- 5 раз(а)
Не стоит просто так выкладывать дампы в интернете, так как зачастую в них содержится полная информация о сервере, включая rcon и прочее.
Для передачи можно архивировать их с паролем, что полезно ещё тем, что жмутся они весьма хорошо.
Для передачи можно архивировать их с паролем, что полезно ещё тем, что жмутся они весьма хорошо.
Windows:
- С использованием WER (Windows Error Reporting):
Разрешить WER (отчеты об ошибках):
До Vista:
Запустить drwtsn32.exe и выбрать "Full" напротив Crash Dump File. Тут же можно увидеть (или настроить) куда будут складываться дампы.
На Vista и выше:
Редактирование реестра, удобный способ от:
Настройки:
Установка:
NAME_APP - hlds.exe
имя приложения, которому нужно будет создавать дампы в случае аварийного завершения.
REG_LINK - HKLM\Software\Microsoft\Windows\Windows Error Reporting
путь до раздела Windows Error Reporting (Эту настройку скорее всего менять не нужно, думаю во всех Windows пути одинаковые)
DumpType - 2
0 - Обычный дамп
1 - Минимальный дамп
2 - Полный дамп
DumpCount - 15
количество создаваемых дампов, если в папке количество дампов будет больше указанного значения, то будет удаляться старый дамп для создания нового дампа.
DumpFolder - C:\CrashDumps
путь до папки, куда будут складываться дампы.
(во избежании всяких проблем не используйте пробелы или кириллицу в путях)
Установка:
Скачать архив add_RegistryDumps.zip и разархивировать.
Запустить add_RegistryDumps.bat
После записи в реестр вы должны убедиться что у вас включена служба Отчеты об ошибках Windows.
Дальше нажать горячую клавишу Windows + R (Windows кнопка находится между ctrl и alt) или можно вызвать cmd.exe или Пуск -> Выполнить, сразу после этого нужно ввести gpedit.msc, далее см скриншот.
Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Отчеты об ошибок Windows
Для удаления настроек в реестре используйте: remove_RegistryDumps.zip
- С использованием утилиты userdumps, инструкция от:
Установка:
2. Добавление приложения:
3. Настройки:
Ps: Рекомендую использовать совместно с Dr Watson с типом дампов "Краткий", т.к. доктор умеет вести логи в текстовом формате, которые дадут возможность отбирать нужные дампы, а userdump будет делать полные дампы.
Скачать архив UserModeProcessDumper8_1_2929_5.zip и разархивировать (по умолчанию C:\kktools\userdump8.1).
Запустите файл setup.exe из каталога:
Если вы используете 32-битную ОС Windows XP/2003, то C:\kktools\userdump8.1\x86.
Если вы используете 64-битную ОС Windows XP/2003, то C:\kktools\userdump8.1\x64.
В окне Мастера установки нажмите на кнопку Далее.
(Только для 32-битных ОС) В окне Terminate Mode выберите Disable "Dump on Process Termination" feature и нажмите на кнопку Далее.
Нажмите на кнопку Готово и дождитесь завершения установки.
В окне User Mode Process Dump Setup нажмите на кнопку ДА (Если вы не знаете как зайти в меню с настройками userdump то их можно найти в Панель управления - Process Dumper).
2. Добавление приложения:
В открывшемся окне Свойства: User Mode Process Dumper Setup жмём New и добавляем имя нужной нам программы на пример: hlds.exe (расширение обязательно!) и жмём ОК.
3. Настройки:
В окне Свойства: User Mode Process Dumper Setup находим созданное только-что правило приложения, выделяем его и жмём кнопку Rules
В открывшемся окне Process Monitoring Ruless for hlds.exe
1. Выберем Use custom rules.
2. Если требуется меняем папку для хранения созданных дампов.
3. В Exeption Codes выделяем (нажатием ЛКМ) следующие коды: "Access Violation, Overflow, Illegal Instruction, Stack oveflow."
4. Выставляем параметр Save Mode в режим Cyclic saving (5 times).
Должно получится примерно так:
Ps: Рекомендую использовать совместно с Dr Watson с типом дампов "Краткий", т.к. доктор умеет вести логи в текстовом формате, которые дадут возможность отбирать нужные дампы, а userdump будет делать полные дампы.
Linux:
Сервер надо запускать с ключем -debug.
Если в системе установлен gdb, то автоматически в файле debug.log будет записываться внятная информация об ошибке. Так что рекомендуется его поставить (команда зависит от используемой системы, на дебиане это apt install gdb). Хотя для создания дампов это не требуется, это фактически обязательно надо сделать при наличии возможности, так как в debug.log при этом будет записано место падения, что позволит сразу что-то сказать об ошибке. Получение этой же информации на другой системе из дамп-файла потребует наличия всех бинарников от сервера.
По умолчанию дамп-файл называется core, записывается в рабочей папке, и, соответственно, будет перезаписываться. Во избежание, можно добавлять к имени идентификатор процесса:
или складывать дампы в /tmp:echo 1 > /proc/sys/kernel/core_uses_pid
Больше информации тут: http://man7.org/linux/man-pages/man5/core.5.htmlecho /tmp/%e-%t-%p-%c.dmp > /proc/sys/kernel/core_pattern
Запуск без sudo (под root, иначе общие настройки системы должны быть выставлены на unlimited):
Запуск с sudo (под пользователем hlds):ulimit -c unlimited && ./hlds_run -debug ...
Проверка запуска из под sudo:ulimit -Hc unlimited && sudo -u hlds sh -c "ulimit -Sc unlimited && ./hlds_run -debug ..."
выводит имя пользователя под которым произойдет запуск и лимит на создание дампов, после чего запускает сервер.ulimit -Hc unlimited && sudo -u hlds sh -c "ulimit -Sc unlimited && whoami && ulimit -Sc && ./hlds_run -debug ..."
Для тестирования настроек создания дампов можете использовать специальный плагин, который вызовет ошибку сегментации, после чего у вас должен появиться debug.log в корне сервера:
C++:
#include <amxmodx>
#include <fakemeta>
public plugin_init()
{
register_plugin("Crash", "1.0", "Dev-CS Team");
// Generate exception code 0xC0000005
set_task(1.0, "GenerateExceptionCode");
}
public GenerateExceptionCode()
{
server_print("[Crash]: I call segmentation fault! Exception code: 0xC0000005");
// Put invalid pointer that will be generate access violation exception
set_tr2(0xDEADBEEF, TR_InWater, true);
}
Источник: aghl.ru
Download all Attachments
-
392 байт Просмотры: 158
-
320 байт Просмотры: 68
-
3.5 MB Просмотры: 124
Последнее редактирование модератором: