2012-02-04 29 views
5

Birincisi - NDEBUG'un bir şekilde zaten varsayılan olarak tanımlanmış halidir, bu nedenle, sizden #undef. İkincisi - işe yarıyorlar, ancak DDMS'de günlük kaydı yok.Android NDK assert.h sorunları

Bazı android belirli bir assert.h varsa? Ya da sadece yanlış bir şey mi yapıyorum?

+0

. Serbest bırakma modunda derlerseniz, hata ayıklama modunda tanımlanmalıdır, açıkçası olmamalıdır. #ifdef NDEBUG \ n # hatası gibi bir şey koyarak kontrol edebilirsiniz (IDE ayarlarınız buna cevap vermiyorsa) Hatalar, NDEBUG bir kaynakta \ n # endif' ('\ n' yerine gerçek yeni satırlarla) tanımlanır dosya ve derleme. –

cevap

11

o zaman üç şekilde yapabiliriz iddia ile kodunuzu derlemek istiyorsanız: ndk-build komut içinde

  • kullanım NDK_DEBUG = 1 argüman
  • android ekleyin: Hata ayıklaması = "true" AndroidManifest.xml < uygulama> etiketi
  • APP_OPTIM ekleyin: = debug Application.mk dosyasına - Bu da optimizasyonları devre dışı bırakır ve hata ayıklama simgeleri ile derlemeye olacak
6

Genellikle, program , NDEBUG tanımlandıktan sonra SIGSEGV sinyali nedeniyle çökecektir, derleme sırasında bayrağı (LOCAL_CFLAGS += -UNDEBUG) ekleyerek kapatabilir ama benim durumumda çalışmayabilir.

başka bir çözüm, aşağıdaki tanımlar ve assert3 ile assert() yerine, __android_log_assert kullanarak Bulunan:

`NDEBUG` derleyici bayrakları bağlı olmalıdır tanımlandığı olsun
#define assert3(e...) __android_log_assert(e, "TAG", #e) 
+0

-UNDEBUG aslında benim için çalıştı .. Çok teşekkür ederim –