Android NDK assert.h问题

时间:2012-02-04 11:10:02

标签: android c++ c android-ndk assert

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

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

或者我只是做错了什么?

2 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:6)

通常程序会因调用SIGSEGV后的assert()信号而崩溃,默认情况下NDEBUG已定义,您可以通过添加标记(LOCAL_CFLAGS += -UNDEBUG)来关闭汇编但不适用于我的案例。

我发现其他解决方案正在使用__android_log_assert,只需定义如下,并将assert()替换为assert3

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