Проблемы с Android NDK assert.h - PullRequest
       12

Проблемы с Android NDK assert.h

6 голосов
/ 04 февраля 2012

Первый - это то, что NDEBUG каким-то образом уже определил по умолчанию, поэтому утверждения не будут работать, пока вы не #undef. Второй - они работают, но я не получаю вход в DDMS.

Если есть какой-то конкретный андроид assert.h?

Или я просто что-то не так делаю?

Ответы [ 2 ]

13 голосов
/ 05 февраля 2012

Если вы хотите скомпилировать свой код с утверждениями, вы можете сделать это тремя способами:

  • использовать NDK_DEBUG = 1 аргумент в командной строке ndk-build
  • добавить android: debuggable = "true" в тег в AndroidManifest.xml
  • добавить APP_OPTIM: = отладка в файл Application.mk - это также отключит оптимизацию и скомпилирует символы отладки
6 голосов
/ 04 сентября 2012

Обычно происходит сбой программы из-за сигнала SIGSEGV после вызова assert(), по умолчанию определено NDEBUG, вы можете отключить его, добавив флаг (LOCAL_CFLAGS += -UNDEBUG) во время компиляции, но не работает для моего случая.

Я обнаружил, что другое решение использует __android_log_assert, просто определите, как показано ниже, и замените assert() на assert3:

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