我有一个崩溃,我试图找到它,甚至将应用程序构建为调试并执行它,我似乎没有得到任何符号信息。
我在控制台收到的输出是:
fatal error: unexpectedly found nil while unwrapping an Optional value
Current stack trace:
0 libswiftCore.so 0x00007f1c51ca51c0 swift_reportError + 120
1 libswiftCore.so 0x00007f1c51cbfbe0 _swift_stdlib_reportFatalError + 62
2 libswiftCore.so 0x00007f1c51ab9be6 <unavailable> + 1186790
3 libswiftCore.so 0x00007f1c51c18ead <unavailable> + 2625197
4 libswiftCore.so 0x00007f1c51ab9be6 <unavailable> + 1186790
5 libswiftCore.so 0x00007f1c51bd4060 specialized _fatalErrorMessage(StaticString, StaticString, file : StaticString, line : UInt, flags : UInt32) -> Never + 96
6 myProgram 0x000000000045909e <unavailable> + 364702
7 myProgram 0x0000000000423f37 <unavailable> + 147255
8 libdispatch.so 0x00007f1c5276e177 <unavailable> + 278903
9 libdispatch.so 0x00007f1c52779edd <unavailable> + 327389
10 libdispatch.so 0x00007f1c5277a890 <unavailable> + 329872
11 libdispatch.so 0x00007f1c5277c5f4 <unavailable> + 337396
12 libdispatch.so 0x00007f1c5279aa18 <unavailable> + 461336
13 libpthread.so.0 0x00007f1c50c6f6ba <unavailable> + 30394
14 libc.so.6 0x00007f1c4f7b9370 clone + 109
Illegal instruction (core dumped)
我根本找不到任何方法来扩展此信息,尽管我可以查看 map 文件。我觉得我们现在使用现代工具已经远远超出了这个领域。
有没有人有任何指示,或者确实知道如何生成包含更多信息的构建。
Ubuntu 16.04、Swift 3.1.1
最佳答案
所以,遗憾的是,这似乎是 lldb 中的一个错误,它在 ELF 可执行文件中使用本地符号,而 dladdr
在 linux 平台上找不到它们。
请在此处查看错误报告: https://bugs.swift.org/browse/SR-755
注意:
好消息是,有一个 bash 脚本可以为您完成所有工作。说明很少,但这是您需要做的:
下载此脚本: https://raw.githubusercontent.com/apple/swift/master/utils/symbolicate-linux-fatal
执行崩溃的应用。
$ myApp &> crash.log
然后执行脚本。
$ ./symbolicate-linux-fatal myApp crash.log
它帮了我很多忙。
使用 LLDB
如果仍处于开发阶段,您还可以使用 swift 调试器来提供帮助。
此外,如果您执行 lldb yourexecutable
,则运行
。您将暂停并能够完全调试您的应用程序。
关于Linux 上的 Swift 调试 - 缺少回溯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954314/