1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/liudegui-CrashExporter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 5.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 27.02.2025 16:16 8fe54ce

CrashExporter

1. Описание CrashExporter

CrashExporter использует библиотеку crashrpt (https://code.google.com/p/crashrpt/) для сбора информации о непредвиденных ошибках в приложении Windows. Библиотека crashrpt автоматически собирает информацию о состоянии системы при возникновении ошибки и записывает её в файл. CrashExporter взаимодействует с crashrpt, чтобы собирать minidumps и отправлять их вместе с другими данными.

2. Структура файла отчета

Файлы отчета могут содержать следующие данные:

  • crashdump.dmp — минидамп, который можно анализировать с помощью windbg;
  • crashinfo.txt — информация о системе и условиях возникновения ошибки;
  • screenshot0.png — скриншот экрана во время возникновения ошибки;

3. Настройка CrashExporter

Для корректной работы CrashExporter требуется настроить проект:

  • В VC6 выбрать Debug info как Program Database;
  • Выбрать Use run-time library как Multithreaded DLL;
  • Установить Generate debug info;

Для VS2010:

  • Использовать многопоточную версию DLL (/MD);
  • Создать символьные файлы PDB;
  • Включить создание символьных файлов (/DEBUG);

4. Использование MFC с CrashExporter

Можно использовать метод CWinApp::Run() для запуска CrashExporter:

int CYourApp::Run()
{
    // Вызов вашего кода crInstall здесь ...
    BOOL bRun;
    BOOL bExit = FALSE;
    while (!bExit)
    {
        bRun = CWinApp::Run();
        bExit = TRUE;
    }
    return bRun;
}

5. Обработка вторичных ошибок

Используйте CrInstall для получения информации об ошибках в приложении. Также можно получить информацию об ошибках текущего потока с помощью crInstallToCurrentThread.

6. Генерация отчета об ошибке

Используйте функцию crGenerateErrorReport для генерации отчета об ошибке.

7. Автоматическое восстановление после ошибки

При необходимости можно настроить автоматическое восстановление после ошибки, установив CR_INSTALL_INFO и dwFlags|CR_INST_APP_RESTART.

8. Необходимые зависимости

Необходимо наличие следующих файлов:

  • CrashRpt.dll
  • CrashExporter.exe
  • dbghelp.dll
  • msvcp100.dll
  • msvcr100.dll

9. Инициализация DLL

Инициализация DLL может происходить через DllMain(). Это позволяет получать информацию об ошибках в других модулях приложения.

10. Сохранение символов для анализа ошибок

Для анализа ошибок важно сохранять символы PDB. При возникновении ошибки CrashExporter будет собирать minidump и отправлять его вместе с другими данными.

11. Безопасное удаление указателей

Рекомендуется использовать безопасное удаление указателей, чтобы избежать двойного освобождения памяти.

12. Пример использования CrashExporter

Пример использования CrashExporter для сбора информации об ошибках.

13. Отправка данных об ошибках

Отправка данных об ошибках происходит через Crashrpt.dll. При возникновении ошибки Crashrpt.dll собирает информацию о состоянии системы и отправляет её.

14. Описание CrashExporter

CrashExporter состоит из двух основных компонентов: CrashRpt.dll и CrashExporter.exe.

CrashRpt.dll собирает информацию об ошибках, а CrashExporter.exe управляет процессом сбора и отправки этих данных.

15. Минимальный уровень сбора данных

По умолчанию используется MiniDumpNormal для сбора минимального количества данных.

16. Возможные проблемы при использовании CrashExporter

  • Недостаточно памяти для создания минидампа.
  • Некорректная работа сборщика мусора.
  • Некорректная работа механизма исключений SEH.
  • Некорректная работа механизма исключений C++.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/liudegui-CrashExporter.git
git@api.gitlife.ru:oschina-mirror/liudegui-CrashExporter.git
oschina-mirror
liudegui-CrashExporter
liudegui-CrashExporter
master