DFX开发常见问题

hilog日志如何落盘存储

适用于:OpenHarmony 3.2Beta API 9

解决措施

使用命令:hilog -w start -f ckTest -l 1M -n 5 -m zlib -j 11

文件保存在目录:/data/log/hilog/

参数解释:

-w 开启日志落盘任务,start表示开始,stop表示停止。
-f 设置日志文件名
-l 设置单个日志文件大小,单位可以是:B/K/M/G
-n 设置最大日志文件编号,当文件计数超过此编号时,日志文件旋转。范围:【2,1000】
-m 设置日志文件压缩算法
-j 任务ID,范围:[10,0xffffffffff)
更多参数含义请使用hilog --help查看。

Hilog日志如何设置为只打印当前应用的日志

适用于:OpenHarmony 3.2Beta API 9

解决措施

通过hilog命令行工具来过滤保留当前应用的日志日志。

hilog -T xxx 按tag过滤;

hilog –D xxx 按domain过滤;

hilog -e 对日志内容匹配,支持正则式tag, domain, pid都支持多重过滤,组合过滤以及反向过滤。

程序打开直接崩溃了,如何定位问题

适用于:OpenHarmony 3.2Beta API 9

解决措施

方法1:通过业务日志打印,定位崩溃的代码位置。

方法2:通过Crash文件查看报错信息,Crash文件路径是:/data/log/faultlog/faultlogger/。

应用如何打印日志是使用hilog还是console,hilog接口参数domain的设置范围是什么

适用于:OpenHarmony 3.2Beta API 9

console是对hilog日志系统的封装,其采用默认参数,主要用于应用开发调试阶段。

推荐使用hilog,可以对日志系统进行分类和统一处理,具体参考文档:hilog日志系统

hilog接口参数domain的取值范围0x0~0xFFFF,建议开发者在应用内根据需要自定义划分。

hilog日志打印长度限制是多少,是否可以配置

适用于:OpenHarmony 3.2Beta API 9

日志打印的长度限制为1024个字符,该长度不能配置

格式化日志打印时,使用private的作用是什么

适用于:OpenHarmony 3.2 Beta API 9

问题现象

C++代码中hilog的格式参数类型为%d或者%s时,日志打印为何显示private

解决措施

直接使用%d、%s等格式化参数时,标准系统默认使用private替换真实数据进行打印,防止数据泄露。如果需要打印出真实数据,需要使用%{public}d替换%d或者%{public}s替换%s。

如何解决hilog.debug日志无法打印

适用于:OpenHarmony 3.2 Beta API 9

解决措施

通过hdc命令 hdc shell hilog -b D开启调试开关

hilog接口的tag参数是否支持用空格隔开的多个字符串

适用于:OpenHarmony 3.2 Beta API 9

支持。

hilog如何打印{private}隐私标志的内容

适用于:OpenHarmony 3.2 Beta API 9

解决措施

使用命令关闭隐私模式即可。命令如下:hdc shell hilog -p off

有关崩溃日志收集和性能问题排查的功能有哪些

适用于:OpenHarmony 3.2 Beta API 9

问题现象

有关崩溃日志收集和性能问题排查的功能有哪些

解决措施

faultLogger:崩溃日志收集,参考文档:故障日志获取

hichecker:问题检测,参考文档:检测模式

hiTraceMeter:性能打点,参考文档:性能打点

如何控制日志输出

适用于:OpenHarmony 3.2 Beta API 9

问题现象

根据不同的环境要求,输出不同的日志信息。

解决措施

通过hilog命令调整日志打印级别,输出不同级别的日志信息。命令如下:

hdc shell hilog -L <D/I/W/E/F>

hilog的TAG长度有限制吗

适用于:OpenHarmony 3.2 Beta API 9

整个tag的长度是32。

日志里面的appfreeze文件的怎么查看,要看哪些内容

适用于:OpenHarmony 3.2 Beta API 9

主要查看方向:

1、先看一下Reason是什么事件的;根据不同的Reason下面有大致的检测原理和分析样例。

2、关注MSG有什么信息,根据MSG的信息看一下大致的方向;

3、分析OpenStacktraceCatcher里面的应用栈信息,并且结合流水日志一起确定一下当前在干什么事情;

4、看一下PeerBinderCatcher当前进程是否有对端的binder卡住,如果有跟当前进程相关的同步wait,则会有相应的PeerBinder Stacktrace信息——这个是卡住你当前进程的对端进程的栈信息。

5、还有整机进程的cpu信息和当前进程的内存信息辅助定位。

如何查看ArkCompiler出现Error日志时,具体的异常调用栈信息?(API 10)

解决方案

Native抛异常,如果需要查看backtrace,需要运行一下命令。

打开异常栈:

hdc shell param set persist.ark.properties 0x125c
hdc shell reboot

恢复默认值:

hdc shell param set persist.ark.properties 0x105c
hdc shell reboot

hdc工具的属性开关有哪些?例如Ark属性开关等(API 10)

解决方案

在命令行输入 hdc shell ark 可以看到Ark命令行的所有参数和开关。