Android NDK assert.h problems
10,664
Solution 1
If you want to compile your code with asserts then you can do it in three ways:
- use NDK_DEBUG=1 argument in ndk-build commandline
- add android:debuggable="true" to < application > tag in AndroidManifest.xml
- add APP_OPTIM := debug to your Application.mk file - this will also disable optimizations and will compile with debug symbols
Solution 2
Usually program will crash due to SIGSEGV
signal after assert()
is called, by default NDEBUG
is define, you may turn off by add the flag (LOCAL_CFLAGS += -UNDEBUG
) during compilation but not work for my case.
I found another solution is using __android_log_assert
, simply define as below and replace assert()
with assert3
:
#define assert3(e...) __android_log_assert(e, "TAG", #e)
Author by
Aristarhys
Sad man behind a screen. Why you siting in cubicle alone? You are not.
Updated on June 04, 2022Comments
-
Aristarhys almost 2 years
First one - is what NDEBUG somehow already defined by default, so asserts don't work until you #undef it. Second one - they do they work, but i receive no logging in DDMS.
If there is some android specific one assert.h?
Or i just do something wrong?
-
Sandeep almost 8 years-UNDEBUG actually worked for me.. Thank you very much
-
Moshe Rabaev almost 5 yearsBut why though? Why can't I use
assert
statements when building in release mode?