Wie kann ich manuell einen Core Dump (oder Ähnliches) in lldb erstellen, das an iOS angeschlossen ist?

8

Manchmal versuche ich einen wirklich seltenen Fehler in einer iOS App zu finden. Ich werde es im Debugger nach stundenlangem Versuch zu repro treffen, nur um xcode oder lldb zum Absturz zu bringen, während ich debugge (normalerweise wenn ich durch C ++ code gehe). Das ist nicht nur ärgerlich.

Mit gdb können Sie generate-core-dump verwenden, um einen Core-Dump der Datei zu erstellen, so dass ich sie in gdb neu laden und zumindest den gesamten Speicher ansehen kann. Was ich will, ist die Fähigkeit, etwas Ähnliches in lldb zu tun, so dass, wenn xcode abstürzt (wie es immer zu den schlechtesten Zeiten tut) ich meine Debugging-Sitzung wiederherstellen kann, ohne den Absturz reproduzieren zu müssen.

Die App läuft auf einem nicht-jailbroken iPhone, so dass ich nicht viel Zugriff auf das Betriebssystem habe, um etwas wie den Speicher von dort abzuladen.

Eine mögliche Antwort ist, nur gdb anstelle von lldb zu verwenden, aber ich denke, das verursacht einige andere Probleme, an die ich mich im Moment nicht erinnere, und es enthält nicht einige der Funktionen, die in lldb nützlich sind / p>     

stokastic 26.07.2013, 04:01
quelle

2 Antworten

12

UPDATE : Xcode 6, veröffentlicht im Herbst 2014, enthält einen neuen process save-core -Befehl in lldb - lldb kann jetzt einen Coredump eines Benutzerprozesses erzeugen. z.B. (lldb) process save-core /tmp/corefile und warte ein wenig.

Die ursprüngliche Antwort für Xcode 5 und frühere lldb's war:

Diese Funktion ist noch nicht in lldb implementiert. Diese Funktion ist in der Apple-Version von gdb ebenfalls nicht implementiert.

Obwohl es sich nicht um eine häufig angeforderte Funktion handelt, ist es etwas, das andere Leute gesagt haben, dass es auch nützlich wäre. Hoffentlich wird jemand ausreichend motiviert sein, diese Fähigkeit zu lldb hinzuzufügen. Ich bin nicht sicher, wie gut es auf einem iOS-Gerät funktionieren würde, da riesige Datenmengen über ein Protokoll, das für große Datenübertragungen nicht sehr effizient ist, auf den Mac übertragen werden - ich erwarte, dass es bemerkenswert langsam ist .

Die Core-Datei kann mit lldb -c / tmp / corefile

geöffnet werden     
Jason Molenda 26.07.2013, 07:39
quelle
0

Es ist erwähnenswert, dass das Prozess-Explorer-Tool für iOS Core-Dumps aller PIDs generieren kann (vorausgesetzt, Sie haben root oder die gleiche UID wie Sie), ohne den Prozess zu beeinflussen.

    
Technologeeks 06.09.2015 03:34
quelle

Tags und Links