Как получить журнал трассировки стека или сбоя устройства в Qt? - PullRequest
3 голосов
/ 04 августа 2011

Я хочу увидеть трассировку стека приложений или журналы сбоев на устройстве.Есть ли какая-либо встроенная функциональность, доступная для Qt?

Мы можем получить журналы приложений, записывая файлы или отлаживая устройства.Но получение трассировки стека полезно, когда при запуске приложения на целевом устройстве возникает неизвестная / неустранимая ошибка.

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Для этого не существует встроенного решения, но (при условии, что вы используете c ++), google-breakpad предоставляет решение.Документации немного не хватает, и ей трудно играть с Qt (не) обработкой исключений, генерируемых в обработчиках событий, но она может позаботиться о большей части тяжелой работы.

Ответы на вопросыв другом ответе:

Gyp должен находиться в src \ tools \ gyp \ gyp.bat.Вы запустите что-то вроде следующего:

src\tools\gyp\gyp.bat src\client\windows\breakpad_client.gyp --include=breakpad_include.gypi -Dwin_debug_RuntimeLibrary=3 -Dwin_release_RuntimeLibrary=2 --generator-output=..\build\google_breakpad

Файл breakpad_include.gypi устанавливает специальную конфигурацию, которую должен использовать gyp.Моя выглядит так:

{
  'target_defaults': {
    'configurations': {
      'Common_Base': {
        'msvs_settings': {
          'VCCLCompilerTool': {
            'TreatWChar_tAsBuiltInType': '0',
          },
        },
      },
    },
  },
}

Это позволяет понять, как Qt и VS относятся к WChar.Другие параметры определяют используемую библиотеку времени выполнения.Это должно соответствовать тому, что использует Qt.

1 голос
/ 04 августа 2011

Вы не указали, какую ОС, но в linux вы можете заставить ее создать файл ядра с помощью этой команды

установить ulimit -c неограниченно

Поместите это в свой файл .bashrc или, где это уместно, и всякий раз, когда происходит сбой, вы получите дамп ядра вашего приложения.

Затем вы можете отладить его, используя gdb .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...