2009-01-09 9 views
13

NSLog() ile bir grup veri kaydediyorum. IPhone'um geliştirme makineme bağlı olmadığında ve bir hata ayıklayıcısında çalışırken günlük verilerini yakalamanın bir yolu var mı? Örneğin, bir dosyaya yeniden yönlendirebilir ve daha sonra Xcode üzerinden daha sonra bir zamanda kayıt dosyasını okuyabilir miyim? Wi-Fi zayıf olduğunda benim app test etmek için bunu yapmak gerekir, bu benim masamdan uzak gitmek gerekir.Bir hata ayıklayıcıya bağlı değilken iPhone'da NSLog'un çıkışını yakalamanın bir yolu var mı?

cevap

17

NSLog() çağrılarının sistem konsolu günlüğüne yazılacağına eminim. Bu nedenle, iPhone'u çevrimdışı olduktan sonra bilgisayarınıza bağlarsanız, XCode Düzenleyicisi'nde konsol günlüğüne bakabilmeniz gerekir. Tek uyarı, konsol günlüğünün boyut olarak sınırlı olmasıdır, bu nedenle çok sayıda günlük kaydı yaparsanız daha büyük girişler atlanabilir.

+0

İyi çağrı - iPhone geliştirme konusunda yeniyim ve NSLog() ürününün çıktısını görmenin tek yolu hata ayıklama konsolu idi. –

28

Aşağıdaki yöntem, uygulamanızın Belgeler klasöründe “console.log” adlı bir dosya adı oluşturacaktır, böylece daha sonra okuyabilirsiniz.

Çağrı programın başında bu yöntemi:

günlük silinecek asla
- (void) redirectConsoleLogToDocumentFolder 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"]; 
    freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr); 
} 

, bu yüzden dikkatli kullanın. Uygulamanızı sınandıktan sonra, telefonunuzu Mac'inize yeniden bağlayın, Xcode'da Ajanda'yı açın. Özet panelinde, telefonunuzdaki tüm uygulamaların listesine sahip olursunuz. Hata ayıkladığınız alanı genişletin ve "Uygulama Verileri" adlı bir paket görürsünüz.

Adının sağındaki oku tıklayın ve bunu kaydedin. Paket Tanımlayıcınızın adı ve ardından bir tarih içeren bir klasörle sonlanacaksınız. console.log

+0

Günlüğün boyutu hakkında endişeleriniz varsa, küçük bir değişiklik, freopen() içinde "a +" "w" olarak değiştirmektir. Ama bu diğer uyarıyı yaratır, programın çalıştırıldığı her defasında sıfırdan yeniden oluşturulacağı için programın çalıştırılacağından emin olun (bu çok büyük bir dosya gibi büyük bir engel olabilir) – KevinDTimm

+0

Teşekkür ederim :) Dosyaya de log kaydetme ve aynı anda xcode konsolunda NSLog gösterme mümkün mü? –

2

Marc Novakowski içermelidir Dokümanlar Klasör bulacağınız bu klasöre, İç

haklı. Konsol çıkışı telefona giriş yapar ve Mac'inizi telefonunuza bağladığınızda konsol çıkışı düzenleyici penceresinde kullanılabilir.

Sadece cihaz panelinden telefonunuzu seçin ve konsol sekmesini seçin. Son konsol çıkışı orada olacak. Çok havalı.

Sadece bunu anladım. Bilgisayarınızdan uzakta olmanız gereken yerleri açıkladığınız durumlarda bu çok yardımcı olacaktır.

BTW, Zayıf WiFi sinyallerini test etme ihtiyacına bir çözüm buldum. Telefonunuzu alüminyum folyoya sarın, USB kablosu folyo sargısından yapışır. Bununla birlikte çalışıyorsanız, hata ayıklayıcısındaki kodu tek adımda atabilirsiniz. Kullanıcı arayüzünü kullanamazsınız, ancak 3D, WiFi ve GPS gibi radyo sinyallerini bozabilir/ortadan kaldırabilirsiniz. Sinyal gücünü bozmak, ancak tamamen iptal etmek istemiyorsanız, folyo ile telefonun kısmen örtülmesi, kaplamaya küçük delikler yerleştirilmesi vb. Ile denemeniz gerekebilir.

Bir uyarı: Telefonu sarılı bırakmayın Bir seferde birkaç dakikadan fazla folyo için. Muhtemelen aşırı ısınır.

5

Ayrıca App Store'da bir Console uygulaması vardır, ancak yalnızca iOS 6 ve önceki sürümlerde çalışır.

iOS 7 çıktığında, it effectively stopped working. (Artık tüm sistemdeki değil, sadece kendi Konsol loglarını okuyabilir.

+1

Bu sorunun yaşı göz önüne alındığında, cevabınızın uzunluğu ve söz konusu uygulamanın bir "Chris" tarafından geliştirildiği gerçeği, belki de uygulamanın muhtemelen kendiniz tarafından yapıldığını açıklamalısınız. :) –

+2

Aslında bu yazılımın yazarı değilim, siz yine de aynı isme sahibiz. –

+3

Bu durumda içten özür dilerim! –

İlgili konular