Анализ аварийных дампов электронов

Электронное приложение, упакованное с помощью electronic-packager, дает сбой и создает файлы дампа.

Я смог использовать breakpad, minidump_stackwalk, чтобы просмотреть часть файла дампа. Вот снимок результата,

7  0x7fff6026ec5d
rbp = 0x0000700005badf78   rsp = 0x0000700005badf60
rip = 0x00007fff6026ec5d
Found by: previous frame's frame pointer
8  Electron Framework + 0x2608a0
rsp = 0x0000700005bae028   rip = 0x000000010d94a8a0
Found by: stack scanning

Thread 18
 0  0x7fff60134562
rax = 0x0000000002000170   rdx = 0x0000000000000000
rcx = 0x0000700001a0fee8   rbx = 0x0000700001a10000
rsi = 0x0000000000000000   rdi = 0x0000000000000004
rbp = 0x0000700001a0ff50   rsp = 0x0000700001a0fee8
 r8 = 0x0000000000000fff    r9 = 0x00007fbc4b654000
r10 = 0x0000000000000000   r11 = 0x0000000000000246
r12 = 0x0000000000000001   r13 = 0x0000000000250015
r14 = 0x0000000000000000   r15 = 0x0000000000000004
rip = 0x00007fff60134562
Found by: given as instruction pointer in context
1  0x7fff6026ec4d
rbp = 0x0000700001a0ff78   rsp = 0x0000700001a0ff60
rip = 0x00007fff6026ec4d
  Found by: previous frame's frame pointer

Loaded modules:
0x10d6e7000 - 0x10d6e7fff  Electron Helper  0.0.0.0  (main)  (WARNING: No symbols, Electron Helper, 26BF611B7ACC305A9FC5C535A513256F0)
0x10d6ea000 - 0x11164ffff  Electron Framework  0.0.0.0
0x111ba5000 - 0x111bbffff  Squirrel  1.0.0.0
0x111be1000 - 0x111c44fff  ReactiveCocoa  1.0.0.0
0x111cb6000 - 0x111ccafff  Mantle  1.0.0.0
0x111cdc000 - 0x112beefff  libnode.dylib  0.0.0.0
0x112e7f000 - 0x1130e3fff  libffmpeg.dylib  0.0.0.0
0x116972000 - 0x1169bcfff  dyld  0.0.0.0

Эта информация не очень полезна для определения сбоя. Есть ли способ получить трассировку стека кода приложения, в котором произошел сбой?

Кроме того, я не уверен, актуально ли сообщение ПРЕДУПРЕЖДЕНИЕ или как его исправить, если это так.

Я смотрел,

Но, похоже, отсутствует документация об отладке отчетов о сбоях электроники.


person endling    schedule 07.03.2018    source источник


Ответы (2)


Вы ищете ветку, в которой написано crashed.

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

Если вы можете воспроизвести сбой локально, самым быстрым способом получить декодированную трассировку стека будет открытие пробной учетной записи с помощью backtrace.io и направьте репортера электронного сбоя на их сервер. У них уже есть все символы Electron, и вы получите декодированный стек с очень небольшими усилиями.

В долгосрочной перспективе рекомендуется, чтобы ваше производственное приложение было направлено на удаленный сервер, чтобы вы автоматически получали трассировку стека. В итоге мы остановились на Sentry.io, так как весь стек имеет открытый исходный код, и вы получаете сбои нативного кода и JavaScript в одном месте.

person Tim    schedule 07.03.2018
comment
Спасибо. Я создал учетную запись на backtrace.io, а также загрузил электронные символы со страницы электронной версии но вывод в их консоли не сильно отличается от того, что я опубликовал. Я получаю ошибку с отсутствующими символами, с отсутствующим модулем, путь: Версия Electron Helper: 0.0.0.0 debug_file: Electron Helper debug_identifier: 26BF611B7ACC305A9FC5C535A513256F0 - person endling; 07.03.2018
comment
Это было на Windows или Mac? Для Windows они должны автоматически получать символы с сервера электронных символов без необходимости загружать правильные. Для Mac доступны для загрузки два типа символов, и я не могу вспомнить, какие из них требуются ... - person Tim; 07.03.2018
comment
Ах, я вижу ReactiveCocoa, очевидно, так было на Mac. - person Tim; 07.03.2018
comment
Да .. Я загрузил * .darwin-x64-dsym.zip и * .darwin-x64-symbols.zip - person endling; 07.03.2018
comment
А вы нажали кнопку Reprocess objects? В противном случае не уверен, что предложить. - person Tim; 07.03.2018
comment
Я сделал. У меня 496 допустимых символов и 1 отсутствующий символ Electron Helper. В идеале, показывает ли backtrace.io код JavaScript, вызвавший сбой? Думаю, я попробую еще раз .. - person endling; 07.03.2018

Вы правильно загрузили *dsym.zip и *symobols.zip, но я бы дважды проверил, что вы загружаете правильную версию (например, v1.8.7, v2.0.0); файлы символов совместимы только с той версией, для которой они указаны.

Я бы попытался загрузить каждый файл символов для каждой ОС, что, кажется, вы уже сделали, но также загрузил саму библиотеку; Я обнаружил, что в некоторых библиотеках нет файла symbols или pdb, поэтому я загрузил саму библиотеку, и она сработала (это случай электрон-релизы, где он основан на электроне, но достаточно отличается, так что отображение отключено).

person Alexander Turinske    schedule 06.07.2018