2011-03-31 26 views
10

SDL 1.3'ü indirdim ve Android 2.2 cihazımda OpenGL ES ile birlikte test ettim. İyi çalışıyor ama çıkışları printf çağrılardan alamıyorum. android developer page'da belirtildiği gibi aşağıdaki komutları denedim, ancak ne Eclipse'de ne de DDMS ve adb logcat, programın printf kullanarak yazdığı dizeleri bildirmiyor. stdout etiketini filtreledim.Neden android üzerinde stdout/stderr yönlendirme çalışmıyor?

$ adb shell stop 
$ adb shell setprop log.redirect-stdio true 
$ adb shell start 

Neyi eksik veya yanlış yapıyorum?

+0

FWIW, bu, Dalvik VM'nin stdout/stderr dosyasını günlük dosyasına kopyalayan bir iş parçacığı oluşturmasına neden olur. Uygulama çerçevesini durdurmak/başlatmak için root olmanız gerekir. Ayrıca bkz. Http://stackoverflow.com/questions/17188987/android-native-code-debugging/17199704#17199704. – fadden

cevap

1

Bunu yapmanın başka bir yolu, log.redirect-stdio=true numaralı satırı içeren /data/local.prop numaralı bir dosyaya sahip olmaktır. Belki bu daha iyi çalışır? Ayrıca, stdout'un arabelleğe alındığını unutmayın, bu nedenle çıkışınız hala arabelleğin içinde durup, temizlenmesini bekliyor olabilir. Bunu kontrol etmek için fflush'u manuel olarak arayabilirsiniz.

myprogram | xargs log 

Bu:, aygıttaki busybox yükleyin ve bu gibi kendi xargs programını kullanmak zorunda (örneğin printf gibi)

+0

adb push local.prop /data/local.prop izinler nedeniyle çalışmaz. Cihazımı rootlamak zorunda mıyım? – trenki

+1

Hmm, Bunun bir cihazda sorun çıkardığını anlayamadım. Ancak emülatörde iyi çalışıyor. Emülatörün, özellikle OpenGL ile birlikte kullanabileceği bir acı olduğunu biliyorum, ama belki de bu sorunlu çekim için bir seçenek olabilir. David Turner tarafından NDK grubundaki bir mesaja göre (bkz. Http://groups.google.com/group/android-ndk/msg/0d37b24df6df7cde) stop/setprop/start desteklenmemelidir. – svdree

+0

Bu, C'den mi çalışıyor? Bunu yaptığımda java'dan stcat çıkışını görüyorum, fakat C aramalarından çıktılarını fprintf (stderr, "bir şey" gibi) olarak görmüyorum. –

2

bu presentation göre, log.redirect-stdio C/C++ çıkışını yönlendirmek için, Dalvik çıkışı için Açıkça tek başına bir çalıştırılabilir olarak adlandırılan kod için çalışır. Yalnızca hata ayıklama amaçlıysa, kitaplığınızı aramak için küçük bir program yazabilir ve bunu uygulamanızdan xargs kullanarak çağırabilirsiniz.

+1

http://stackoverflow.com/questions/9192749/capturing-stdout-stderr-with-ndk adresindeki cevabımı, meşrubat kutusu yerine borularla çözüme bakın. –

İlgili konular