我想调试一些android原生的c/c++代码,如PROJECT_NAME/frameworks/av/media/libaudioclient/AudioTrack.cpp等,但当我使用cmd logcat时,我无法获得像D&I&V这样的日志级别。我尝试在AudioTrack.cpp文件顶部取消对//#define LOG_NDEBUG 0的注释,但我有两个问题:
一个是我想要动态打开或关闭日志,但在这种方法中,我必须注释/取消#define LOG_NDEBUG 0。另一个是虽然我取消了对#define LOG_NDEBUG 0的注释,并忍受了很长一段时间的make target-files-package -j12,但它不能在终端中打印出日志级别的“详细”。我的问题是,是否有一些方法可以动态(比如读取和编辑xxx.xml)来捕获android原生c/c++调试日志(包括详细、信息、调试级别)?
发布于 2020-08-25 13:19:21
您可以定义cppFlags,在此基础上可以在本机代码中切换日志
app build.gradle -
externalNativeBuild {
cmake {
cppFlags += "-DBUILD_DEBUG"
}
}在原生代码中创建日志常量(可能在一些头文件中)-
#ifdef BUILD_DEBUG
#include<android/log.h>
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "tag", __VA_ARGS__)
#else
#define LOGV(...)
#endif最后,像这样使用它- LOGV("log to print")
https://stackoverflow.com/questions/63572283
复制相似问题