2016-09-27 29 views
2

Ist es möglich, auf dem iPhone in eine Datei zu loggen (oder irgendwie an der Konsolenausgabe zu bekommen), um es später zu lesen, oder vielleicht direkt vom Telefon?iOS App Debug ohne Kabel

Ich muss eine App debuggen, die ein kabelgebundenes Zubehörgerät verwendet, so dass es nicht gleichzeitig an XCode angeschlossen werden kann.

+0

Betrachten Protokolle in einer Textdatei im Dokumentenverzeichnis zu schreiben. später können Sie jederzeit darauf zugreifen. –

+0

Ich fand das, aber ich weiß nicht, ob es immer noch funktioniert http://iphonedevwiki.net/index.php/Debugserver#Alternative_Instructions_.2864-bit_compatible.29 – Paulw11

Antwort

0

Kevin Xi Ansatz ist in Ordnung.

NSArray *allPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [allPaths objectAtIndex:0]; 
NSString *pathForLog = [documentsDirectory stringByAppendingPathComponent:@"log.txt"]; 
freopen([pathForLog cStringUsingEncoding:NSASCIIStringEncoding],"a+", stderr); 
0

Es ist wirklich schade, dass Apple nicht WiFi-Debugging für Xcode, aber für Ihre Frage zur Verfügung stellen, die Antwort ist JA, Sie NSLog in eine Protokolldatei auf jeden Fall umleiten können, können Sie versuchen, diesen Ansatz:

// this will redirect all NSLog in your project, add it to PCH file. 
#define NSLog(args...) writeLog(__PRETTY_FUNCTION__, __LINE__, args) 

void writeLog(const char *function, int lineNumber, NSString *format, ...) { 

// basic log content. 
va_list ap; 
va_start (ap, format); 
NSString *msg = [[NSString alloc] initWithFormat:format arguments:ap]; 
va_end (ap); 

// add function name, and line number. 
NSString *log = [NSString stringWithFormat:@"%s line %d $ %@", function, lineNumber, msg]; 

// add your own code to write `log` into a text file. 
.... 
} 

Hinweis: Wenn Sie einige Bibliotheken verwenden, die auch Protokolle in Console schreiben, leitet dieser Makro diese Protokolle nicht in Ihre Protokolldatei um, sondern funktioniert nur mit in Ihren eigenen Quelldateien.

0

Soweit ich weiß, ist dies nicht möglich.

Sie können schließlich eine kostenlose und ausgezeichnete Lösung wie bugfender verwenden, mit der Sie die von NSLog protokollierten Daten aus der Ferne abrufen können. Dies könnte dir helfen.

+1

Es ist nicht möglich, etwas in eine Textdatei zu schreiben? Ich bin extrem positiv, dass es so ist. –

+0

Wirklich, meine persönliche Erfahrung für diese Art von Situation ist die Verwendung der Bugfender-Umgebung, die sehr einfach einzurichten und zu verwenden ist. Es ermöglicht Ihnen, alle Ihre NSLog im Internet zu bekommen, und überwachen/verfolgen, was Sie wollen, wenn Sie den Debugger nicht verwenden können. Hoffe du Erfolg. –

1

Sie können von PonyDebugger machen: Sie können auch NSLog Ausgabe in die Datei mit folgendem Code in AppDelegate der didFinishLaunchingWithOptions Methode umleiten.

Ich habe es viel verwendet, um Netzwerk- und CoreData-Ressourcen zu debuggen, aber es ermöglicht auch die Protokollierung auf der Konsole mit PDLog.

PonyDebugger ist ein Remote-Debugging-Toolset. Hierbei handelt es sich um eine Kombination aus Clientbibliothek und Gatewayserver, die die Chrome-Entwicklertools in Ihrem Browser verwendet, um den Netzwerkverkehr und die verwalteten Objektkontexte der Anwendung zu debuggen.

Einige Empfehlungen:

  • Es funktioniert besser in Safari als Chrome.
  • Sehen Sie sich Repo-Probleme an, damit es bei Bedarf in Ihrer OSX-Version funktioniert. Ich arbeite am El Capitan.
  • Automatische Verbindung für mich nicht funktioniert, versuchen Sie es mit lokalen IP-Gateway-Adresse statt:
    • z.B. [debugger connectToURL:[NSURL URLWithString:@"ws://192.168.0.12:9000/device"]];