2017-01-17 4 views
12

Ich habe ein Framework mit einer Dylib in meiner iOS App, die auf einem anderen Rechner kompiliert wurde. ich ausgecheckt, die Quellen auf meiner Maschine und versuchte lldb anweist, den Quellcode Weg zur Karte mit:Quellen an eine Binärdylib in Xcode anfügen

settings set target.source-map /source/code/path/in/dylib/prefix /source/code/path/on/my/machine/prefix 

Ohne Erfolg, noch Montage zu sehen.

Hinweis # 1: Die Dylib wurde aus C++ - Code in der gleichen Version von Xcode kompiliert.

Hinweis # 2: Ich bin nm -pa /path/to/dylib verwendet, um festzustellen, ob Dateipfade in die Debug-Informationen eingebettet sind, und sie sind, lldb nicht aus irgendeinem Grund mitspielen.

Dank

UPDATE

ich Jim Ingham Antwort unten ein und erstellt ein Skript ausgeführt haben, die dies automatisiert, ist das Skript als Kern Link in diesem Artikel vorhanden Ich schrieb: https://medium.com/@maxraskin/background-1b4b6a9c65be

Antwort

4

Um Code zu debuggen, der auf einem Computer erstellt wurde, aber auf einem anderen debuggt, müssen Sie einen dSYM erstellen und diesen auf dem Computer verfügbar haben, auf dem Sie debuggen. Wenn Sie das nicht getan haben, wird nichts funktionieren.

Als nächstes zu überprüfen ist, dass lldb den dSYM abholt. Diese Seite hat einige Beschreibung, wie dieser Prozess funktioniert:

http://lldb.llvm.org/symbols.html

aber wenn alles andere fehlschlägt, können Sie den add-dsym Befehl verwenden Sie es von Hand zu haben.

Wenn das immer noch nicht behoben Ihr Problem, dann einige Symbol in Ihrem dylib holen, und zu tun:

(lldb) image lookup -vn <SYMBOL_NAME> 

oder alternativ eine Adresse in der geladenen dylib und zu tun:

(lldb) image lookup -va <ADDRESS> 

Wenn lldb den dSYM gefunden hat und die Debug-Informationen korrekt sind, sollte eine der Zeilen der Ausgabe der Eintrag für die "Compile Unit" sein. Das ist, was die Debug-Info den Pfad zur Quelldatei angibt. Die entsprechende Basis dieses Pfades sollte in target.source-map verwendet werden. Wenn Sie diesen Eintrag nicht sehen, gehen die Debug-Informationen für diese Kompilierungseinheit irgendwie verloren.

Wenn all diese Dinge gut aussehen und lldb die Quelldateien immer noch nicht sieht, dann werden Sie wahrscheinlich einen Fehler bekommen, in diesem Fall bitte einen Fehler mit http://bugreporter.apple.com einreichen.

+0

Dank für die ausführliche Antwort, die funktionierte, fehlte mir tatsächlich der dSYM. Ich habe 'add-dsym' verwendet und auf den dSYM-Pfad hingewiesen, dann habe ich' image lookup -vn 'verwendet, um einen Symbolquellcodepfad zu erhalten, und dann das Mapping unter Verwendung von' set target.source-map/path/prefix geändert/i/got/von/lookup/Pfad/Präfix/on/my/machine'. –

+0

Um dies zu automatisieren, verwende ich Anweisungen von http://lldb.llvm.org/symbols.html. –

+0

BTW - für Debug Builds einer Dylib, ist ein dSYM erforderlich, oder sind die gleichen Daten in der Zwerg-Datei eingebettet? –