android - NDK 如何在发布时删除 Log Debug 语句

标签 android c++ debugging android-ndk

我知道使用混淆器可以从发布版本中删除 java Log.d 调试语句 https://stackoverflow.com/a/13327603/1527440

但是有没有办法从 NDK C/C++ 代码中删除日志调试语句。

我正在使用定义语句在 NDK 中调用它们

#define  LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) 

最佳答案

使用 NDEBUG 宏。或者你真的可以在任何事情上#ifdef

#ifdef NDEBUG

#define LOGD(...)

#else

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)

#endif

然后是代码:

void f()
{
    LOGD("About to do some stuff");
    doSomeStuff();
}

编译器将看到(大致 - ANDROID_LOG_DEBUGLOG_TAG 如果它们是宏,也将被替换为它们的值):

void f()
{
    __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,"About to do some stuff");
    doSomeStuff();
}

NDEBUG 未定义时,将会看到:

void f()
{
    ;
    doSomeStuff();
}

NDEBUG 被定义时。

关于android - NDK 如何在发布时删除 Log Debug 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935474/

相关文章:

android - 引导接收器和广播接收器之间的区别

debugging - 为我的自定义 .NET 语言构建调试器

android - 是否有(有点高级的)C++ 库来创建在 iOS 和 Android 上运行的 pdf 文档?

javascript - 无法在 React Native 中导入其他组件

android - Artifact : ResolvedArtifact 的空提取文件夹

c++ - Boost spirit语法问题

c++ - 如何从 UTC 时间戳的组件(Y、M、D、h、m、s、ms)创建 system_clock::time_point

c++ - Linux c++ 中的 shmget() 函数

swift - 如何调试我不能经常重新创建的东西?

python - IDA Python - 为什么我的代码返回不正确的 ESP 值?