已合并
hidebug 补充 ProfilerOptions 扩展配置 API(26.1.0) #3819
hidebug 补充 ProfilerOptions 扩展配置 API(26.1.0) #3819
已合并
王俊龙创建于 12 天前
2 个文件变更+167-5
@@ -442,6 +442,143 @@ void OH_HiDebug_PopAsyncContext(uint64_t ctx);
442 * @since 26.0.0442 * @since 26.0.0
443 */443 */
444void OH_HiDebug_ReleaseAsyncContext(uint64_t ctx);444void OH_HiDebug_ReleaseAsyncContext(uint64_t ctx);
445+ 
446+/**
447+ * @brief 资源采集配置结构体前向声明。
448+ * @since 26.1.0
449+ */
450+typedef struct OH_HiDebug_ProfilerOptions OH_HiDebug_ProfilerOptions;
451+ 
452+/**
453+ * @brief 创建资源Profiler配置对象。
454+ * @return 指向OH_HiDebug_ProfilerOptions结构体的指针,当创建失败时返回NULL
455+ * @since 26.1.0
456+ */
457+OH_HiDebug_ProfilerOptions* OH_HiDebug_CreateProfilerOptions(void);
458+ 
459+/**
460+ * @brief 释放通过{@link OH_HiDebug_CreateProfilerOptions}创建的配置对象。
461+ * @param opts 指向OH_HiDebug_ProfilerOptions结构体的指针,不能为NULL
J
Jjinqiuheng10 天前

问题类型:🟡建议修改

问题描述:参数描述中直接使用类型名 OH_HiDebug_ProfilerOptions 而未使用 @link 标记。同文件中其他参数描述(如line 243 @param dispatchTable、line 294 @param config)均使用 {@link} 引用类型。

规范依据:QA-003(参数描述规范)、CE-007(链接格式)

修复建议:修改为"指向{@link OH_HiDebug_ProfilerOptions}结构体的指针,不能为NULL。"

likedislike
462+ * @return 返回结果码:\n
463+ * HIDEBUG_SUCCESS:操作成功。\n
464+ * HIDEBUG_RES_PROF_INVALID_ARG:opts为空指针。
465+ * @since 26.1.0
466+ */
467+HiDebug_ErrorCode OH_HiDebug_DestroyProfilerOptions(OH_HiDebug_ProfilerOptions* opts);
468+ 
469+/**
470+ * @brief 设置异步调用的最大嵌套深度(也称为最大嵌套层数)。
471+ * @param opts 指向OH_HiDebug_ProfilerOptions结构体的指针,不能为NULL
472+ * @param depth 允许的最大异步嵌套深度,取值范围为[1, 16]。
473+ * @return 返回结果码:\n
474+ * HIDEBUG_SUCCESS:操作成功。\n
475+ * HIDEBUG_RES_PROF_INVALID_ARG:opts为空指针。\n
476+ * HIDEBUG_RES_PROF_INVALID_MAX_ASYNC_NESTING_DEPTH:异步嵌套深度参数无效。
477+ * @since 26.1.0
478+ */
479+HiDebug_ErrorCode OH_HiDebug_SetMaxAsyncNestingDepth(OH_HiDebug_ProfilerOptions* opts, uint32_t depth);
480+ 
481+/**
482+ * @brief 设置异步任务函数的最大回栈深度。
483+ * @param opts 指向OH_HiDebug_ProfilerOptions结构体的指针,不能为NULL
484+ * @param depth 最大异步任务回栈深度,取值范围为[1, 256]。
485+ * @return 返回结果码:\n
486+ * HIDEBUG_SUCCESS:操作成功。\n
487+ * HIDEBUG_RES_PROF_INVALID_ARG:opts为空指针。\n
488+ * HIDEBUG_RES_PROF_INVALID_MAX_ASYNC_TASK_STACK_DEPTH:资源采集异步任务回栈深度参数无效。
489+ * @since 26.1.0
490+ */
491+HiDebug_ErrorCode OH_HiDebug_SetMaxAsyncTaskStackDepth(OH_HiDebug_ProfilerOptions* opts, uint32_t depth);
492+ 
493+/**
494+ * @brief 设置采样间隔,单位为Byte。
495+ * @param opts 指向OH_HiDebug_ProfilerOptions结构体的指针,不能为NULL
496+ * @param bytes 采样间隔,取值范围为[384, 4294967295],单位为Byte。
497+ * @return 返回结果码:\n
498+ * HIDEBUG_SUCCESS:操作成功。\n
499+ * HIDEBUG_RES_PROF_INVALID_ARG:opts为空指针。\n
500+ * HIDEBUG_RES_PROF_INVALID_SAMPLE_INTERVAL:采样间隔参数无效。
501+ * @since 26.1.0
502+ */
503+HiDebug_ErrorCode OH_HiDebug_SetSampleIntervalBytes(OH_HiDebug_ProfilerOptions* opts, uint32_t bytes);
504+ 
505+/**
506+ * @brief 设置统计间隔,单位为s。
507+ * @param opts 指向OH_HiDebug_ProfilerOptions结构体的指针,不能为NULL
508+ * @param seconds 统计间隔,取值范围为[1, 3600],单位为s。
509+ * @return 返回结果码:\n
510+ * HIDEBUG_SUCCESS:操作成功。\n
511+ * HIDEBUG_RES_PROF_INVALID_ARG:opts为空指针。\n
512+ * HIDEBUG_RES_PROF_INVALID_STATISTICS_INTERVAL:统计间隔参数无效。
513+ * @since 26.1.0
514+ */
515+HiDebug_ErrorCode OH_HiDebug_SetStatisticsIntervalSec(OH_HiDebug_ProfilerOptions* opts, uint32_t seconds);
516+ 
517+/**
518+ * @brief 设置最大回栈深度。
x_huahua
x_huahuax_huahua12 天前

这个意思是设置同步的?建议写一下,好和上边的做区分。

likedislike
王俊龙
王俊龙
10 天前 评论:
519+ * @param opts 指向OH_HiDebug_ProfilerOptions结构体的指针,不能为NULL
520+ * @param depth 最大回栈深度,取值范围为[1, 30]。
521+ * @return 返回结果码:\n
522+ * HIDEBUG_SUCCESS:操作成功。\n
523+ * HIDEBUG_RES_PROF_INVALID_ARG:opts为空指针。\n
524+ * HIDEBUG_RES_PROF_INVALID_MAX_STACK_DEPTH:最大回栈深度参数无效。
525+ * @since 26.1.0
526+ */
527+HiDebug_ErrorCode OH_HiDebug_SetMaxStackDepth(OH_HiDebug_ProfilerOptions* opts, uint32_t depth);
528+ 
529+/**
530+ * @brief 设置内存分配过滤大小。
531+ * @param opts 指向OH_HiDebug_ProfilerOptions结构体的指针,不能为NULL
532+ * @param size 过滤大小阈值,取值范围为[1, 4294967295],单位为Byte。
533+ * @return 返回结果码:\n
534+ * HIDEBUG_SUCCESS:操作成功。\n
535+ * HIDEBUG_RES_PROF_INVALID_ARG:opts为空指针。\n
536+ * HIDEBUG_RES_PROF_INVALID_FILTER_SIZE:过滤大小参数无效。
537+ * @since 26.1.0
538+ */
539+HiDebug_ErrorCode OH_HiDebug_SetFilterSize(OH_HiDebug_ProfilerOptions* opts, uint32_t size);
540+ 
541+/**
542+ * @brief 设置最大采集时长,单位为s。
543+ * @param opts 指向OH_HiDebug_ProfilerOptions结构体的指针,不能为NULL
544+ * @param seconds 最大采集时长,取值范围[1, 3600],单位为s。
545+ * @return 返回结果码:\n
546+ * HIDEBUG_SUCCESS:操作成功。\n
547+ * HIDEBUG_RES_PROF_INVALID_ARG:opts为空指针。\n
548+ * HIDEBUG_RES_PROF_INVALID_MAX_DURATION:最大持续采集时间参数无效。
549+ * @since 26.1.0
550+ */
551+HiDebug_ErrorCode OH_HiDebug_SetMaxDurationSec(OH_HiDebug_ProfilerOptions* opts, uint32_t seconds);
552+ 
553+/**
554+ * @brief 按指定资源类型和配置开启当前进程资源分配栈信息采集功能。
555+ * @param type 资源采集类型(OH_HiDebug_ResourceType)。
J
Jjinqiuheng10 天前

问题类型:🟡建议修改

问题描述:参数描述中使用中文括号 () 包裹类型名 OH_HiDebug_ResourceType,应使用 @link 标记。同文件中其他参数描述(如line 311 @param type 维测信息的数据类型{@link HiDebug_CrashObjType}。)使用 {@link} 引用枚举类型。

规范依据:QA-003(参数描述规范)、CE-007(链接格式)

修复建议:修改为"* @param type 资源采集类型,参考{@link OH_HiDebug_ResourceType}。"

likedislike
x_huahua
x_huahua
10 天前 评论:
556+ * @param opts 指向已配置的OH_HiDebug_ProfilerOptions结构体的指针,不能为NULL
J
Jjinqiuheng10 天前

问题类型:🟡建议修改

问题描述@param opts(line 556)和 @param callback(line 557)的参数描述均未使用 @link 引用类型。同文件中其他函数(如line 155-156)使用 {@link} 引用回调类型。

规范依据:QA-003(参数描述规范)、CE-007(链接格式)

修复建议

  • line 556修改为"指向已配置的{@link OH_HiDebug_ProfilerOptions}结构体的指针,不能为NULL。"
  • line 557修改为"接收采集结果的回调函数,参考{@link OH_HiDebug_ProfilingCallback}。"
likedislike
x_huahua
x_huahua
10 天前 评论:
557+ * @param callback 接收采集结果的回调函数。
558+ * @return 返回结果码:\n
559+ * HIDEBUG_RES_PROF_SUCCESS:启动资源采集成功。\n
560+ * HIDEBUG_RES_PROF_INVALID_ARG:opts或callback为空指针。\n
561+ * HIDEBUG_RES_PROF_INVALID_MAX_DURATION:最大持续采集时间参数无效。\n
562+ * HIDEBUG_RES_PROF_INVALID_FILTER_SIZE:过滤大小参数无效。\n
563+ * HIDEBUG_RES_PROF_INVALID_MAX_STACK_DEPTH:最大回栈深度参数无效。\n
564+ * HIDEBUG_RES_PROF_INVALID_STATISTICS_INTERVAL:统计间隔参数无效。\n
565+ * HIDEBUG_RES_PROF_INVALID_SAMPLE_INTERVAL:采样间隔参数无效。\n
566+ * HIDEBUG_RES_PROF_INVALID_MAX_ASYNC_NESTING_DEPTH:异步嵌套深度参数无效。\n
567+ * HIDEBUG_RES_PROF_INVALID_MAX_ASYNC_TASK_STACK_DEPTH:资源采集异步任务回栈深度参数无效。\n
568+ * HIDEBUG_RES_PROF_INVALID_RESOURCE_TYPE:资源采集类型参数无效。\n
569+ * HIDEBUG_RES_PROF_PERMISSION_DENIED:资源采集权限不足。\n
570+ * HIDEBUG_RES_PROF_ALREADY_STARTED:资源采集重复启动。\n
571+ * HIDEBUG_RES_PROF_PROCESS_OVERLIMIT:资源采集进程数超出限制。\n
572+ * HIDEBUG_RES_PROF_CONFLICT:资源采集与命令行工具或系统采集任务冲突。\n
573+ * HIDEBUG_RES_PROF_DAILY_QUOTA_EXCEEDED:资源采集每日配额超出限制。\n
574+ * HIDEBUG_RES_PROF_CPU_OVERLOADED:系统CPU处于高负载状态。\n
575+ * HIDEBUG_RES_PROF_MEM_PRESSURE_CRITICAL:内存可用空间紧张。\n
576+ * HIDEBUG_RES_PROF_STORAGE_PRESSURE_CRITICAL:存储可用空间紧张。\n
577+ * HIDEBUG_RES_PROF_FAILURE:启动资源采集失败。
578+ * @since 26.1.0
579+ */
580+HiDebug_ErrorCode OH_HiDebug_StartProfilerWithOptions(OH_HiDebug_ResourceType type,
581+ OH_HiDebug_ProfilerOptions* opts, OH_HiDebug_ProfilingCallback callback);
445#ifdef __cplusplus582#ifdef __cplusplus
446}583}
447#endif584#endif
@@ -146,7 +146,7 @@ typedef enum HiDebug_ErrorCode {
146 */146 */
147 HIDEBUG_RES_PROF_NOT_STARTED = 11400422,147 HIDEBUG_RES_PROF_NOT_STARTED = 11400422,
148 /**148 /**
149- * @brief 资源采集进程数超出4个限制。149+ * @brief 资源采集并行进程数超出限制,整机最多4个不同应用并行采集,应用内最多2个进程并行采集
150 * @since 24150 * @since 24
151 */151 */
152 HIDEBUG_RES_PROF_PROCESS_OVERLIMIT = 11400423,152 HIDEBUG_RES_PROF_PROCESS_OVERLIMIT = 11400423,
@@ -161,22 +161,22 @@ typedef enum HiDebug_ErrorCode {
161 */161 */
162 HIDEBUG_RES_PROF_AUTO_STOPPED_BY_DURATION = 11400425,162 HIDEBUG_RES_PROF_AUTO_STOPPED_BY_DURATION = 11400425,
163 /**163 /**
164- * @brief 资源采集每日配额超出10次限制。164+ * @brief 资源采集每日配额超出限制,整机每日最多4次,应用每日最多2次
J
Jjinqiuheng10 天前

规格出现非兼容变更 有相关TMG会议纪要吗?

likedislike
165 * @since 24165 * @since 24
166 */166 */
167 HIDEBUG_RES_PROF_DAILY_QUOTA_EXCEEDED = 11400426,167 HIDEBUG_RES_PROF_DAILY_QUOTA_EXCEEDED = 11400426,
168 /**168 /**
169- * @brief 系统CPU处于高负载状态,CPU占用率超过70%。169+ * @brief 整机系统CPU占用率超过70%。
170 * @since 24170 * @since 24
171 */171 */
172 HIDEBUG_RES_PROF_CPU_OVERLOADED = 11400427,172 HIDEBUG_RES_PROF_CPU_OVERLOADED = 11400427,
173 /**173 /**
174- * @brief 内存可用空间紧张,可用空间少15%174+ * @brief 整机系统可用内存低2GB
175 * @since 24175 * @since 24
176 */176 */
177 HIDEBUG_RES_PROF_MEM_PRESSURE_CRITICAL = 11400428,177 HIDEBUG_RES_PROF_MEM_PRESSURE_CRITICAL = 11400428,
178 /**178 /**
179- * @brief 存储可用空间紧张,可用空间少15%。179+ * @brief 整机系统可用存储空间存储阈值,阈值为总存储容量的3%与15GB中的较大值
180 * @since 24180 * @since 24
181 */181 */
182 HIDEBUG_RES_PROF_STORAGE_PRESSURE_CRITICAL = 11400429,182 HIDEBUG_RES_PROF_STORAGE_PRESSURE_CRITICAL = 11400429,
@@ -185,6 +185,16 @@ typedef enum HiDebug_ErrorCode {
185 * @since 24185 * @since 24
186 */186 */
187 HIDEBUG_RES_PROF_FAILURE = 11400430,187 HIDEBUG_RES_PROF_FAILURE = 11400430,
188+ /**
189+ * @brief 资源采集异步嵌套深度参数无效。
190+ * @since 26.1.0
191+ */
192+ HIDEBUG_RES_PROF_INVALID_MAX_ASYNC_NESTING_DEPTH = 11400431,
193+ /**
194+ * @brief 资源采集异步任务回栈深度参数无效。
195+ * @since 26.1.0
196+ */
197+ HIDEBUG_RES_PROF_INVALID_MAX_ASYNC_TASK_STACK_DEPTH = 11400432
188} HiDebug_ErrorCode;198} HiDebug_ErrorCode;
189 199 
190/**200/**
@@ -599,6 +609,21 @@ typedef enum OH_HiDebug_ResourceType {
599 * @since 24609 * @since 24
600 */610 */
601 OH_RES_TYPE_GLOBAL_HANDLE,611 OH_RES_TYPE_GLOBAL_HANDLE,
612+ /**
613+ * @brief DMA内存
614+ * @since 26.1.0
615+ */
616+ OH_RES_TYPE_DMA,
617+ /**
618+ * @brief 匿名共享内存
619+ * @since 26.1.0
620+ */
621+ OH_RES_TYPE_ASHMEM,
622+ /**
623+ * @brief 组合堆
624+ * @since 26.1.0
625+ */
626+ OH_RES_TYPE_COMPOSITE_HEAP
602} OH_HiDebug_ResourceType;627} OH_HiDebug_ResourceType;
603 628 
604/**629/**