nutzen die "target.source-Karte" -Einstellung
(LLDB) Einstellungen Liste target.source-Karte
Quelle-Karte - Quellpfad Neuzuordnungen verwendet, um den Standortwechsel zwischen einem verfolgen Quelldatei wenn gebaut, und wo es auf dem aktuellen System existiert. Es besteht aus einem Array von Duples, das erste Element jedes Duple ist ein Teil (beginnend an der Wurzel) des Pfads zur Datei, wenn es wurde gebaut, und die zweite ist, wo der Rest der ursprünglichen Build-Hierarchie ist verwurzelt auf dem lokalen System. Jedes Element des Arrays wird der Reihe nach überprüft und das erste, das zu einer Übereinstimmung führt, gewinnt.
dh
settings set target.source-map /build_src /source
, wo die Gebäudeumgebung ist unter /build_src
und the.dSYM Dateien (Symbole) unter kopiert werden /source
EDIT:
Binaries werden nach oft gestrippt gebaut und in eine Version verpackt. Wenn Ihr Build-Systeme eine unstripped ausführbare spart auf diese ausführbare Datei ein Pfad kann mit der Taste DBGSymbolRichExecutable zur Verfügung gestellt werden
Sie einen Shell-Befehl schreiben, die einen UUID-Wert gegeben wird und ist erwartet eine plist mit bestimmten Tasten zurückzukehren das gibt an, wo die binäre ist.
Sie können das Shell-Script aktivieren mit:
% defaults write com.apple.DebugSymbols DBGShellCommands /path/to/shellscript
Ihr Shell-Skript wird aufgerufen mit einem UUID-Zeichenfolge-Wert wie "23516BE4-29BE-350C-91C9-F36E7999F0F1".Der Shell-Skript kann mit einem plist in folgendem Format antworten:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
<key>23516BE4-29BE-350C-91C9-F36E7999F0F1</key>
<dict>
<key>DBGArchitecture</key>
<string>i386</string>
<key>DBGBuildSourcePath</key>
<string>/path/to/build/sources</string>
<key>DBGSourcePath</key>
<string>/path/to/actual/sources</string>
<key>DBGDSYMPath</key>
<string>/path/to/foo.dSYM/Contents/Resources/DWARF/foo</string>
<key>DBGSymbolRichExecutable</key>
<string>/path/to/unstripped/exectuable</string>
</dict>
<key>A40597AA-5529-3337-8C09-D8A014EB1578</key>
<dict>
<key>DBGArchitecture</key>
<string>x86_64</string>
.....
</dict>
</dict>
</plist>
für weitere Details siehe:
http://lldb.llvm.org/symbols.html
https://www.mail-archive.com/[email protected]/msg01142.html
EDIT 2:
Terminal-Befehl um die Build-UUID einer ausführbaren Datei zu drucken
$ xcrun dwarfdump --uuid <PATH_TO_APP_EXECUTABLE>
source
Sie bauen Sie die App mit Gradle? Wenn ja, können Sie Ihre Build-Datei freigeben? Auch teilen Sie Ihre Android.mk Datei –
Ich baue es mit Gradle. Die Build-Datei ist identisch mit der, die mit dem Teekannen-Beispiel geliefert wird (https://developer.android.com/ndk/samples/sample_teapot.html) Der einzige Unterschied ist, dass ich in meinem Projekt einen Ordner namens "jniLibs" habe Gradle findet diesen Ordner und fügt der Apk das .so hinzu. Das Android.mk zum Erstellen des .so ist ebenfalls ein Standard, der vor dem Android Studio-Support für den Aufbau mit dem Ndk verwendet wurde. es verwendet clang und C++ _ static (zu groß, um es hier hinzuzufügen). Ich verwende die neuesten NDK – shoosh
Debuggen Sie auf Windows? Die von mir angegebenen Pfade stammen von Android. Es gibt noch einige bekannte Fehler in NDK; beim Debuggen mit LLDB-Breakpoints funktioniert unter Windows nicht immer; Wenn Sie darauf stoßen, können Sie als vorübergehende Problemumgehung zu GDB-Debugging wechseln. –