2012-02-04 17 views
5

Primero: es lo que de alguna manera el NDEBUG ya definió de manera predeterminada, por lo que afirma que no funciona hasta que #desdef. Segundo: funcionan, pero no recibo ningún registro en DDMS.Android NDK assert.h problems

Si hay alguna específica de Android assert.h?

¿O simplemente hago algo mal?

+0

Ya sea 'NDEBUG' se define debería depender de las opciones del compilador. Si compila en modo de lanzamiento, debe definirse, en modo de depuración, obviamente no debería. Puede verificar (si su configuración IDE no responde eso) poniendo algo como '#ifdef NDEBUG \ n # error Vaya, NDEBUG está definido \ n # endif' (reemplace '\ n' con nuevas líneas reales) en una fuente archivo y compilarlo. –

Respuesta

11

Si desea compilar el código con afirma a continuación, puede hacerlo de tres maneras:

  • uso NDK_DEBUG = 1 argumento a NDK-acumulación de comandos
  • añadir androide: depurable = "true" para < la instalación de señales>
  • en AndroidManifest.xml
  • añadir APP_OPTIM: = depuración para su archivo Application.mk - esto también desactivará optimizaciones y compilará con símbolos de depuración
6

Por lo general, el programa se bloqueará debido a la señal SIGSEGV después de llamar al assert(), de manera predeterminada se define NDEBUG, puede desactivar agregando el indicador (LOCAL_CFLAGS += -UNDEBUG) durante la compilación pero no funciona para mi caso.

he encontrado otra solución es utilizar __android_log_assert, sólo tiene que definir de la siguiente manera y reemplazar assert() con assert3:

#define assert3(e...) __android_log_assert(e, "TAG", #e) 
+0

-UNDEBUG realmente funcionó para mí .. Muchas gracias –