diff --git a/build/libace.map b/build/libace.map index eeddefc89ea73c1361fb873c05a84f872a5c6268..46d8cedfc647b5ebc12b27d3cbc5a87ca2d8870c 100644 --- a/build/libace.map +++ b/build/libace.map @@ -43,6 +43,7 @@ OHOS::Ace::AceApplicationInfo::*; OHOS::Ace::AceScopedTrace::*; + OHOS::Ace::IsACETagEnabled*; OHOS::Ace::ActionSheetModel::*; OHOS::Ace::Animator::*; "OHOS::Ace::Backend::Create()"; diff --git a/frameworks/base/BUILD.gn b/frameworks/base/BUILD.gn index 9c4d89f9a2432fde71543ed97a8363bf2d6288ca..742b86098efb162e007e52fb1fa016bbd32c0b57 100644 --- a/frameworks/base/BUILD.gn +++ b/frameworks/base/BUILD.gn @@ -36,6 +36,7 @@ template("ace_base_source_set") { ] external_deps = [] external_deps += [ "zlib:shared_libz" ] + external_deps += [ "hitrace:hitrace_meter" ] include_dirs = [ "$ace_root" ] if (ohos_indep_compiler_enable) { include_dirs += indep_compile_includes diff --git a/frameworks/base/log/ace_trace.cpp b/frameworks/base/log/ace_trace.cpp index c6f554cd6fe1af5b786952f82e3ac70b4b1fdd57..b7fa907158c6a2e27eaff4220036622311e870f6 100644 --- a/frameworks/base/log/ace_trace.cpp +++ b/frameworks/base/log/ace_trace.cpp @@ -14,6 +14,7 @@ */ #include "base/log/ace_trace.h" +#include "hitrace_meter.h" #ifndef WINDOWS_PLATFORM #include "securec.h" @@ -24,6 +25,11 @@ namespace { const size_t MAX_STRING_SIZE = 512; } +bool IsACETagEnabled() +{ + return IsTagEnabled(HITRACE_TAG_ACE); +} + bool AceTraceBeginWithArgv(const char* format, va_list args) { char name[MAX_STRING_SIZE] = { 0 }; diff --git a/frameworks/base/log/ace_trace.h b/frameworks/base/log/ace_trace.h index 65fb0fe7e75f51bb9f3f838682ab89f2ad6a5bbb..72d634fc8c6ad8063e1eaa09a5ecdabe670c6402 100644 --- a/frameworks/base/log/ace_trace.h +++ b/frameworks/base/log/ace_trace.h @@ -26,60 +26,94 @@ #include "base/utils/noncopyable.h" #include "base/utils/system_properties.h" -#define ACE_SCOPED_TRACE(fmt, ...) AceScopedTrace aceScopedTrace(fmt, ##__VA_ARGS__) -#define ACE_SCOPED_TRACE_COMMERCIAL(fmt, ...) AceScopedTraceCommercial aceScopedTrace(fmt, ##__VA_ARGS__) -#define ACE_SCOPED_TRACE_FLAG(flag, fmt, ...) AceScopedTraceFlag aceScopedTraceFlag(flag, fmt, ##__VA_ARGS__) +#define ACE_SCOPED_TRACE(fmt, ...) \ + if (IsACETagEnabled()) { \ + AceScopedTrace aceScopedTrace(fmt, ##__VA_ARGS__); \ + } +#define ACE_SCOPED_TRACE_COMMERCIAL(fmt, ...) \ + if (IsACETagEnabled()) { \ + AceScopedTraceCommercial aceScopedTrace(fmt, ##__VA_ARGS__); \ + } +#define ACE_SCOPED_TRACE_FLAG(flag, fmt, ...) \ + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(flag, fmt, ##__VA_ARGS__); \ + } #define ACE_SVG_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetSvgTraceEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetSvgTraceEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_TEXT_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetTextTraceEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetTextTraceEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_SYNTAX_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetSyntaxTraceEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetSyntaxTraceEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_ACCESS_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetAccessTraceEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetAccessTraceEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_LAYOUT_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetLayoutTraceEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetLayoutTraceEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_IMAGE_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetDebugEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetDebugEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_MEASURE_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetMeasureDebugTraceEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetMeasureDebugTraceEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_SAFE_AREA_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetSafeAreaDebugTraceEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetSafeAreaDebugTraceEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_VSYNC_MODE_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetVsyncModeTraceEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetVsyncModeTraceEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_EVENT_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetTraceInputEventEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetTraceInputEventEnabled(), fmt, ##__VA_ARGS__); \ + } #define ACE_REUSE_DETECTION_SCOPED_TRACE(fmt, ...) \ - AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetDynamicDetectionTraceEnabled(), fmt, ##__VA_ARGS__) + if (IsACETagEnabled()) { \ + AceScopedTraceFlag aceScopedTraceFlag(SystemProperties::GetDynamicDetectionTraceEnabled(), fmt, ##__VA_ARGS__); \ + } #ifdef ACE_DEBUG -#define ACE_DEBUG_SCOPED_TRACE(fmt, ...) AceScopedTrace aceScopedTrace(fmt, ##__VA_ARGS__) +#define ACE_DEBUG_SCOPED_TRACE(fmt, ...) \ + if (IsACETagEnabled()) { \ + AceScopedTrace aceScopedTrace(fmt, ##__VA_ARGS__); \ + } #else #define ACE_DEBUG_SCOPED_TRACE(fmt, ...) #endif #define ACE_LAYOUT_TRACE_BEGIN(fmt, ...) \ - if (SystemProperties::GetLayoutTraceEnabled()) { \ + if (IsACETagEnabled() && SystemProperties::GetLayoutTraceEnabled()) { \ AceTraceBeginWithArgs(fmt, ##__VA_ARGS__); \ } #define ACE_LAYOUT_TRACE_END() \ - if (SystemProperties::GetLayoutTraceEnabled()) { \ + if (IsACETagEnabled() && SystemProperties::GetLayoutTraceEnabled()) { \ AceTraceEnd(); \ } // Enable trace for component creation and attribute settings #define ACE_BUILD_TRACE_BEGIN(fmt, ...) \ - if (SystemProperties::GetBuildTraceEnabled()) { \ + if (IsACETagEnabled() && SystemProperties::GetBuildTraceEnabled()) { \ AceTraceBeginWithArgs(fmt, ##__VA_ARGS__); \ } #define ACE_BUILD_TRACE_END() \ - if (SystemProperties::GetBuildTraceEnabled()) { \ + if (IsACETagEnabled() && SystemProperties::GetBuildTraceEnabled()) { \ AceTraceEnd(); \ } #define CHECK_NULL_VOID_LAYOUT_TRACE_END(ptr) \ do { \ if (!(ptr)) { \ - if (SystemProperties::GetLayoutTraceEnabled()) { \ + if (IsACETagEnabled() && SystemProperties::GetLayoutTraceEnabled()) { \ AceTraceEnd(); \ } \ return; \ @@ -89,8 +123,10 @@ #define ACE_FUNCTION_TRACE() ACE_SCOPED_TRACE(__func__) #define ACE_FUNCTION_TRACE_COMMERCIAL() ACE_SCOPED_TRACE_COMMERCIAL(__func__) -#define ACE_COUNT_TRACE(count, fmt, ...) AceCountTraceWidthArgs(count, fmt, ##__VA_ARGS__) - +#define ACE_COUNT_TRACE(count, fmt, ...) \ + if (IsACETagEnabled()) { \ + AceCountTraceWidthArgs(count, fmt, ##__VA_ARGS__); \ + } namespace OHOS::Ace { bool ACE_EXPORT AceAsyncTraceEnable(); void ACE_EXPORT AceTraceBegin(const char* name); @@ -104,6 +140,8 @@ void ACE_EXPORT AceAsyncTraceEnd(int32_t taskId, const char* name, bool isAnimat void ACE_EXPORT AceCountTrace(const char *key, int32_t count); void ACE_EXPORT AceCountTraceWidthArgs(int32_t count, const char* format, ...); +bool ACE_FORCE_EXPORT IsACETagEnabled(); + // for commercial trace void ACE_EXPORT AceTraceBeginCommercial(const char* name); void ACE_EXPORT AceTraceEndCommercial();