Android NDK断言.h问题

Android NDK assert.h problems

本文关键字:问题 断言 NDK Android      更新时间:2023-10-16

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

如果有一些安卓特定的断言。h?

或者我只是做错了什么?

如果你想用assert编译你的代码,那么你可以用三种方法来完成:

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

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

我发现另一个解决方案是使用__android_log_assert,简单地定义如下,并将assert()替换为assert3:

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