关于C#:Android NDK assert.h的问题

Android NDK assert.h problems

第一个-是NDEBUG在某种程度上已经默认定义的内容,因此断言在您#undef它之前不起作用。
第二个-它们确实起作用,但是我没有在DDMS中记录任何日志。

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

还是我做错了什么?


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

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

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

我发现另一个解决方案是使用__android_log_assert,只需定义如下,然后将assert()替换为assert3

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