3

使用 electron-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

此信息在识别崩溃时不是很有用。有没有办法获得发生崩溃的应用程序代码的堆栈跟踪?

另外,我不确定 WARNING 消息是否相关,或者如果是,如何修复它。

我看过,

但似乎缺乏关于调试电子崩溃报告的文档。

4

2 回答 2

4

您正在寻找说它的线程crashed

如果没有本地的所有调试符号,minidump_stackwalk不会给你任何非常有用的东西。看起来您上面的堆栈跟踪根本没有被解码,所以即使您找到崩溃的线程,您也可能只会看到内存地址。

如果您可以在本地重现崩溃,获取解码堆栈跟踪的最快方法是使用backtrace.io开设一个试用帐户并将电子崩溃报告器指向他们的服务器。他们已经拥有所有的 Electron 符号,您将毫不费力地获得解码堆栈。

从长远来看,让您的生产应用程序指向远程服务器是一个好主意,这样您就可以自动获取堆栈跟踪。我们最终选择了Sentry.io,因为整个堆栈都是开源的,并且您可以在一个地方获得原生和 JavaScript 崩溃。

于 2018-03-07T10:56:22.380 回答
0

您上传*dsym.zip和 是正确的*symobols.zip,但我会仔细检查您是否获取了正确的版本(例如v1.8.7v2.0.0);符号文件只与它们指定的版本兼容。

我会尝试为每个操作系统上传每个符号文件,看起来你已经完成了,但也会上传库本身;我发现一些库没有symbolsorpdb文件,所以我上传了库本身并且它可以工作(这就是electron-releases的情况,它基于电子,但足够不同以至于映射关闭)。

于 2018-07-06T21:44:57.627 回答