Android NDK assert.h问题

Ari*_*hys 6 c c++ android assert android-ndk

第一个 - 是默认情况下已经定义的NDEBUG,因此断言在#undef之前不起作用.第二个 - 他们工作,但我没有收到DDMS登录.

如果有一些特定于android的assert.h?

或者我只是做错了什么?

Mār*_*iko 13

如果要使用断言编译代码,则可以通过三种方式完成:

  • 在ndk-build命令行中使用NDK_DEBUG = 1参数
  • 将android:debuggable ="true"添加到AndroidManifest.xml中的<application>标记
  • 将APP_OPTIM:= debug添加到Application.mk文件中 - 这也将禁用优化,并将使用调试符号进行编译


小智 6

通常程序会因为调用SIGSEGV后的信号而崩溃assert(),默认情况下NDEBUG是定义的,你可以通过LOCAL_CFLAGS += -UNDEBUG在编译期间添加flag()来关闭但不适用于我的情况.

我发现另一种解决方案是使用__android_log_assert,只需在下面定义并替换assert()assert3:

#define assert3(e...) __android_log_assert(e, "TAG", #e)
Run Code Online (Sandbox Code Playgroud)