2017-07-06 2 views
5

Ich habe einen Absturz, den ich zu finden versuche, und sogar die Anwendung als Debug zu bauen und auszuführen, scheint ich keine symbolischen Informationen zu bekommen.Schnelles Debuggen unter Linux - Fehlende Backtrace

Der Ausgang I an der Konsole empfangen ist:

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) 

ich einfach keine Möglichkeit, diese Informationen zu erweitern finden, und obwohl ich auf der Suche durch eine Kartendatei gehen könnte. Ich fühle, dass wir uns mit modernen Werkzeugen sehr weit über dieses Territorium hinaus bewegt haben.

Hat irgendjemand irgendwelche Zeiger oder weiß, wie man einen Build mit mehr Informationen erzeugt.

Ubuntu 16.04, Swift 3.1.1

+0

A [mcve] wäre hilfreich. –

+1

Welchen Code laufen Sie zum Zeitpunkt des Absturzes? Zeigen Sie diesen Code, damit die Community hilft. – MwcsMac

+0

@MartinR, kann es einige Missverständnisse von dem, was ich fragen. Ich frage, ob es eine Möglichkeit gibt, symbolische Informationen zu dem Debug-Build hinzuzufügen, um mir einen Stack-Backtrace zu geben oder irgendetwas, das mir etwas zum Arbeiten gibt. Leider ist das kein Problem, das dem demonstrierbaren Beispiel-Paradigma entspricht. Wenn ich ein reproduzierbares Beispiel erstellen könnte, hätte ich es bereits beheben können. –

Antwort

6

So, leider scheint dies ein Fehler in LLDB zu sein, die lokalen Symbole in ELF-Executables benutzt und dladdr kann sie nicht auf Linux-Plattformen.

Siehe Bug-Report hier: https://bugs.swift.org/browse/SR-755

ACHTUNG:

Große Nachrichten obwohl es ein Bash-Skript, der für sie die ganze Arbeit tut. Instruction sind gering, aber das ist, was Sie tun müssen:

Herunterladen dieses Skript: https://raw.githubusercontent.com/apple/swift/master/utils/symbolicate-linux-fatal

Exectute Ihre Krachen App.

$ myApp &> crash.log 

Dann führen Sie das Skript aus.

Es hat mir kein Ende geholfen.

+0

Ich traf dieses Problem, als ich versuchte, Swift-Test auf Ubuntu 16.04 zu starten. Wo finde ich die ausführbare Datei, die etwas wie "myApp" mag? –