From 8101c141b697d00386855ec3dbc8df1301bca722 Mon Sep 17 00:00:00 2001 From: yanmengzhao1 Date: Tue, 21 Mar 2023 14:54:30 +0800 Subject: [PATCH] update faultlogger guide Signed-off-by: yanmengzhao1 --- .../figures/zh-cn_image_0000001261812333.png | Bin 12336 -> 0 bytes .../figures/zh-cn_image_0000001261812334.png | Bin 0 -> 7763 bytes .../subsystems/subsys-dfx-faultlogger.md | 154 ++++++++++-------- 3 files changed, 85 insertions(+), 69 deletions(-) delete mode 100644 zh-cn/device-dev/subsystems/figures/zh-cn_image_0000001261812333.png create mode 100644 zh-cn/device-dev/subsystems/figures/zh-cn_image_0000001261812334.png diff --git a/zh-cn/device-dev/subsystems/figures/zh-cn_image_0000001261812333.png b/zh-cn/device-dev/subsystems/figures/zh-cn_image_0000001261812333.png deleted file mode 100644 index 76fd15e43b8ccf8566ed55cc0592d3f3e6580319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12336 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 literal 0 HcmV?d00001 diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-faultlogger.md b/zh-cn/device-dev/subsystems/subsys-dfx-faultlogger.md index b290303ffd..06e91d7b7f 100644 --- a/zh-cn/device-dev/subsystems/subsys-dfx-faultlogger.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-faultlogger.md @@ -18,15 +18,15 @@ FaultLogger承载OpenHarmony系统上的故障记录功能,按照服务对象 **图1** 进程崩溃处理流程图 -![zh-cn_image_0000001261812333](figures/zh-cn_image_0000001261812333.png) +![zh-cn_image_0000001261812333](figures/zh-cn_image_0000001261812334.png) -1. 进程安装信号处理器后,通过DFX_SignalHandler函数检测并响应进程崩溃异常信号; +1. 进程安装信号处理器后,通过DFX_SignalHandler函数检测并响应由Kernel抛出的进程崩溃异常信号; 2. SignalHandler检测到异常信号后Fork出子进程,并运行ProcessDump程序开始dump崩溃进程和线程的堆栈信息; -3. ProcessDump程序在读取异常堆栈信息后将日志写入到Faultloggerd中的临时存储目录,进而生成完整的崩溃日志; +3. ProcessDump程序向Faultloggerd服务申请用于存储故障日志的文件句柄,在读取到异常堆栈信息后写入到该文件中,进而生成完整的崩溃日志; -4. Faultloggerd根据需要将故障通过Hiview提供的AddFaultLog()接口进行上报,hiview将处理生成简化的崩溃日志,并上报Hisysevent事件。 +4. ProcessDump完成崩溃日志收集后,根据需要将故障通过Hiview提供的AddFaultLog()接口进行上报,hiview将处理生成简化的崩溃日志,并上报Hisysevent事件。 基于这样的设计,在资源有限的小型系统上可只部署Faultloggerd,也依然可以获取用于定位崩溃问题的日志。 @@ -39,14 +39,14 @@ Faultloggerd意在为开发者在开发测试过程中遇到的崩溃或卡死 **表1** Faultloggerd模块应用场景 -| 场景描述 | 使用工具 | 使用方式 | +| 场景描述 | 使用工具 | 使用方式 | | -------- | -------- | -------- | -| 了解函数的调用顺序 | DumpCatcher API | 参见:[使用DumpCatcher获取调用栈](#使用dumpcatcher获取调用栈) | -| 应用卡死/CPU占用高 | ProcessDump | 参见:[使用ProcessDump获取调用栈](#使用processdump获取调用栈) | -| 进程未处理信号崩溃 | 崩溃日志和addr2line工具 | 参见:[基于崩溃日志对问题进行定位](#基于崩溃日志对问题进行定位) | +| 了解函数的调用顺序 | DumpCatcher API | 参见:[使用DumpCatcher接口获取调用栈](#使用dumpcatcher接口获取调用栈) | +| 应用卡死/CPU占用高 | DumpCatcher Command Tool | 参见:[使用DumpCatcher命令获取调用栈](#使用dumpcatcher命令获取调用栈) | +| 崩溃问题定位 | 崩溃日志和addr2line工具 | 参见:[基于崩溃日志定位问题](#基于崩溃日志定位问题) | -## 使用DumpCatcher获取调用栈 +## 使用DumpCatcher接口获取调用栈 ### 接口说明 @@ -55,57 +55,70 @@ DumpCatcher可以抓取OpenHarmony指定进程(线程)的调用栈。 **表2** DumpCatcher接口说明 -| 类 | 方法 | 描述 | +| 类 | 方法 | 描述 | | -------- | -------- | -------- | -| DfxDumpCatcher | bool DumpCatch(const int pid, const int tid, std::string& msg) |   接口返回值:
- true:回栈成功,回栈信息存储在msg字符串对象中;
- false:回栈失败。
  输入参数:
- pid:目标进程号;
- tid:目标线程号,如果需要回栈进程中的所有线程,则tid设定为0;
  输出参数:
- msg:如果回栈成功,则通过msg返回调用栈信息。 | +| DfxDumpCatcher | bool DumpCatch(const int pid, const int tid, std::string& msg) | 接口返回值:
- true:回栈成功,回栈信息存储在msg字符串对象中;
- false:回栈失败。
输入参数:
- pid:目标进程号;
- tid:目标线程号,如果需要回栈进程中的所有线程,则tid设定为0;
输出参数:
- msg:如果回栈成功,则通过msg返回调用栈信息。 | +| DfxDumpCatcher | bool DumpCatchMix(const int pid, const int tid, std::string& msg) | 接口返回值:
- true:回栈成功,回栈信息存储在msg字符串对象中;
- false:回栈失败。
输入参数:
- pid:目标进程号;
- tid:目标线程号,如果需要回栈进程中的所有线程,则tid设定为0;
输出参数:
- msg:如果回栈成功,则通过msg返回混合栈信息。 | +| DfxDumpCatcher | bool DumpCatchFd(const int pid, const int tid, std::string& msg, int fd) | 接口返回值:
- true:回栈成功,回栈信息存储在msg字符串对象中;
- false:回栈失败。
输入参数:
- pid:目标进程号;
- tid:目标线程号,如果需要回栈进程中的所有线程,则tid设定为0;
- fd:指定写入的文件句柄号;
输出参数:
- msg:如果回栈成功,则通过msg返回调用栈信息。 | +| DfxDumpCatcher | bool DumpCatchMultiPid(const std::vector\ pidV, std::string& msg) | 接口返回值:
- true:回栈成功,回栈信息存储在msg字符串对象中;
- false:回栈失败。
输入参数:
- pidV:目标进程号列表;
输出参数:
- msg:如果回栈成功,则通过msg返回调用栈信息。 | > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 当调用此接口的进程id与目标pid不一致时需要调用者是管理员(system,root)用户。当抓取非本用户组进程调用栈时还需具备读取对方/proc/pid/maps及ptrace到对方进程的权限。 +> 当调用此接口的进程id与目标pid不一致时需要调用者是管理员(system,root)用户。 ### 开发实例 -系统应用开发者可以用DumpCatcher在自己的应用中获取指定进程(线程)的调用栈。下文以dumpcatcherdemo模块使用DumpCatcher接口获取调用栈作为实例进行讲解。 +系统应用开发者可以用DumpCatcher在自己的应用中获取指定进程(线程)的调用栈。下文以dumpcatcherdemo模块使用DumpCatcher基础接口获取调用栈作为实例进行讲解。 1. 编译构建文件添加dumpcatcher依赖:以/base/hiviewdfx/faultloggerd/example/BUILD.gn为例,在include_dirs中添加DfxDumpCatcher头文件路径,并在deps中添加“//base/hiviewdfx/faultloggerd/interfaces/innerkits/dump_catcher:lib_dfx_dump_catcher”模块依赖。 - + ``` import("//base/hiviewdfx/faultloggerd/faultloggerd.gni") import("//build/ohos.gni") - + config("dumpcatcherdemo_config") { visibility = [ ":*" ] - + include_dirs = [ ".", "//utils/native/base/include", "//base/hiviewdfx/faultloggerd/interfaces/innerkits/dump_catcher/include/", # 添加dumpcatcher头文件路径 ] } - - ohos_executable("dumpcatcherdemo") { sources = [ "dump_catcher_demo.cpp" ] configs = [ ":dumpcatcherdemo_config" ] deps = [ "//base/hiviewdfx/faultloggerd/interfaces/innerkits/dump_catcher:lib_dfx_dump_catcher", # 添加dumpcathcer模块依赖 "//utils/native/base:utils", ] external_deps = [ "hilog_native:libhilog" ] install_enable = true part_name = "faultloggerd" subsystem_name = "hiviewdfx" + + ohos_executable("dumpcatcherdemo") { + sources = [ "dump_catcher_demo.cpp" ] + configs = [ ":dumpcatcherdemo_config" ] + deps = [ + "//base/hiviewdfx/faultloggerd/interfaces/innerkits/dump_catcher:lib_dfx_dump_catcher", # 添加dumpcathcer模块依赖 + "//utils/native/base:utils", + ] + external_deps = [ "hilog_native:libhilog" ] + install_enable = true + part_name = "faultloggerd" + subsystem_name = "hiviewdfx" } ``` 2. 头文件定义用到的函数:以/base/hiviewdfx/faultloggerd/example/dump_catcher_demo.h为例,本样例代码中,通过调用栈深度测试的测试函数来构造一个指定深度的调用栈。 - + ``` #ifndef DUMP_CATCHER_DEMO_H #define DUMP_CATCHER_DEMO_H - + #include - + #define NOINLINE __attribute__((noinline)) - + // 定义该宏函数用于自动生成函数调用链 #define GEN_TEST_FUNCTION(FuncNumA, FuncNumB) \ __attribute__((noinline)) int TestFunc##FuncNumA() \ { \ return TestFunc##FuncNumB(); \ } - + // 调用栈深度测试的测试函数 int TestFunc0(void); int TestFunc1(void); @@ -118,22 +131,22 @@ DumpCatcher可以抓取OpenHarmony指定进程(线程)的调用栈。 int TestFunc8(void); int TestFunc9(void); int TestFunc10(void); - + #endif // DUMP_CATCHER_DEMO_H ``` 3. 在源文件中调用DumpCatch接口:以/base/hiviewdfx/faultloggerd/example/dump_catcher_demo.cpp为例,引用dfx_dump_catcher.h头文件,声明DfxDumpCatcher对象,通过宏函数构造函数调用链,并最后调用DumpCatch接口方法,传入需要抓取调用栈的进程号、线程号。 - + ``` #include "dump_catcher_demo.h" - + #include #include #include // dfx_dump_catcher.h头文件引入 #include "dfx_dump_catcher.h" using namespace std; - + NOINLINE int TestFunc10(void) { OHOS::HiviewDFX::DfxDumpCatcher dumplog; @@ -144,7 +157,7 @@ DumpCatcher可以抓取OpenHarmony指定进程(线程)的调用栈。 } return 0; } - + // 通过宏函数自动生成函数调用链 GEN_TEST_FUNCTION(0, 1) GEN_TEST_FUNCTION(1, 2) @@ -156,7 +169,7 @@ DumpCatcher可以抓取OpenHarmony指定进程(线程)的调用栈。 GEN_TEST_FUNCTION(7, 8) GEN_TEST_FUNCTION(8, 9) GEN_TEST_FUNCTION(9, 10) - + int main(int argc, char *argv[]) { TestFunc0(); @@ -165,55 +178,57 @@ DumpCatcher可以抓取OpenHarmony指定进程(线程)的调用栈。 ``` -## 使用ProcessDump获取调用栈 +## 使用DumpCatcher命令获取调用栈 ### 工具说明 -ProcessDump是一个抓取调用栈的命令行工具,在OpenHarmony系统中可直接使用,该工具通过-p、-t参数指定进程和线程,命令执行后在命令行窗口打印指定进程的线程栈信息。 +DumpCatcher Command Tool是一个抓取调用栈的命令行工具,在OpenHarmony系统中可直接使用,该工具通过-p、-t参数指定进程和线程,命令执行后在命令行窗口打印指定进程的线程栈信息。还可通过添加-m参数来抓取应用进程的JS Native混合栈。 - **表3** ProcessDump命令行工具使用说明 + **表3** DumpCatcher Command Tool使用说明 -| 工具名称 | 命令行工具路径 | 执行命令 | 描述 | +| 工具名称 | 命令行工具路径 | 执行命令 | 描述 | | -------- | -------- | -------- | -------- | -| processdump | /system/bin | - processdump -p [pid]
- processdump -p [pid] -t [tid] | **参数说明:**
- -p [pid]:打印指定进程下面的所有线程栈信息。
- -p [pid] -t [tid]:打印指定进程下面的指定线程信息。
**返回值说明:**
如果栈信息解析成功,则将信息显示到标准输出;失败则打印错误信息。 | - - -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> 此工具需要在root下使用,或调用者有权限ptrace到目标进程,并读取目标进程的smaps。 +| dumpcatcher | /system/bin | - dumpcatcher -p [pid]
- dumpcatcher -p [pid] -t [tid]
- dumpcatcher -m -p [pid]
- dumpcatcher -m -p [pid] -t [tid]
| **参数说明:**
- -p [pid]:打印指定进程下面的所有线程栈信息。
- -p [pid] -t [tid]:打印指定进程下面的指定线程信息。
- -m -p [pid]:打印指定进程下面的所有线程混合栈信息。
- -m -p [pid] -t [tid]:打印指定进程下面的指定线程混合栈信息。
**返回值说明:**
如果栈信息解析成功,则将信息显示到标准输出;失败则打印错误信息。 | ### 使用实例 -通过processdump命令行工具打印hiview进程的调用栈。 +通过dumpcatcher命令打印hiview进程的调用栈。 + - ``` -# ps -A | grep hiview - 114 ? 00:00:00 hiview -# processdump -p 114 -t 114 -Tid:114, Name:hiview -#00 pc 0000000000089824(00000000b6f44824) /system/lib/ld-musl-arm.so.1(ioctl+68) -#01 pc 000000000002a709(00000000b6c56709) /system/lib/libipc_core.z.so(_ZN4OHOS15BinderConnector11WriteBinderEmPv+16) -#02 pc 000000000002ba75(00000000b6c57a75) /system/lib/libipc_core.z.so(_ZN4OHOS13BinderInvoker18TransactWithDriverEb+224) -#03 pc 000000000002bb37(00000000b6c57b37) /system/lib/libipc_core.z.so(_ZN4OHOS13BinderInvoker13StartWorkLoopEv+22) -#04 pc 000000000002c211(00000000b6c58211) /system/lib/libipc_core.z.so(_ZN4OHOS13BinderInvoker10JoinThreadEb+36) -#05 pc 0000000000038d07(00000000004bcd07) /system/bin/hiview(_ZNSt3__h6vectorINS_9sub_matchINS_11__wrap_iterIPKcEEEENS_9allocatorIS6_EEE8__appendEj+596) -#06 pc 0000000000028655(00000000004ac655) /system/bin/hiview -#07 pc 00000000000c2b08(00000000b6f7db08) /system/lib/ld-musl-arm.so.1(__libc_start_main+116) -#08 pc 00000000000285f4(00000000004ac5f4) /system/bin/hiview -#09 pc 0000000000028580(00000000004ac580) /system/bin/hiview +# ps -ef |grep hiview +hiview 240 1 0 17:01:49 ? 00:00:14 hiview +root 1822 1560 7 20:56:36 pts/0 00:00:00 grep hiview +# dumpcatcher -p 240 -t 240 +Result: 0 ( no error ) +Timestamp:2017-08-05 20:56:43.000 +Pid:240 +Uid:1201 +Process name:/system/bin/hiview +Tid:240, Name:hiview +#00 pc 00098f8c /system/lib/ld-musl-arm.so.1(ioctl+68) +#01 pc 0000e2a1 /system/lib/chipset-pub-sdk/libipc_single.z.so +#02 pc 0000ed59 /system/lib/chipset-pub-sdk/libipc_single.z.so +#03 pc 0000ee1f /system/lib/chipset-pub-sdk/libipc_single.z.so +#04 pc 0000f745 /system/lib/chipset-pub-sdk/libipc_single.z.so +#05 pc 00037577 /system/bin/hiview +#06 pc 00025973 /system/bin/hiview +#07 pc 000db210 /system/lib/ld-musl-arm.so.1 +#08 pc 000258d8 /system/bin/hiview +#09 pc 0002587c /system/bin/hiview ``` -## 基于崩溃日志对问题进行定位 +## 基于崩溃日志定位问题 开发者可以通过faultloggerd生成的崩溃堆栈日志进行问题定位。本章节将主要介绍如何利用addr2line工具进行崩溃问题定位。 1. 程序自崩溃或构造崩溃。 例如将如下代码植入自己的代码中,调用触发一个无效内存访问故障(SIGSEGV)。 - + ``` NOINLINE int TriggerSegmentFaultException() { @@ -226,42 +241,43 @@ Tid:114, Name:hiview ``` 2. 获取崩溃函数调用栈日志。 - 因为存在未处理的异常,进程会在 /data/log/faultlog/temp路径下生成临时的日志文件,其命名规则为: + 因为存在未处理的异常,进程会在/data/log/faultlog/temp路径下生成临时的日志文件,其命名规则为: + - ``` cppcrash-pid-time ``` 获取其生成的调用栈如下: - + ``` + Timestamp:2017-08-05 17:35:03.000 Pid:816 Uid:0 - Process name:./crasher + Process name:./crasher_c Reason:Signal:SIGSEGV(SEGV_ACCERR)@0x0042d33d Fault thread Info: Tid:816, Name:crasher + #00 pc 0000332c /data/crasher(TriggerSegmentFaultException+15)(8bc37ceb8d6169e919d178fdc7f5449e) + #01 pc 000035c7 /data/crasher(ParseAndDoCrash+277)(8bc37ceb8d6169e919d178fdc7f5449e) + #02 pc 00003689 /data/crasher(main+39)(8bc37ceb8d6169e919d178fdc7f5449e) + #03 pc 000c3b08 /system/lib/ld-musl-arm.so.1(__libc_start_main+116) + #04 pc 000032f8 /data/crasher(_start_c+112)(8bc37ceb8d6169e919d178fdc7f5449e) + #05 pc 00003284 /data/crasher(_start+32)(8bc37ceb8d6169e919d178fdc7f5449e) + Registers: r0:0042d33d r1:0000000b r2:1725d4c4 r3:b6f9fa84 r4:bec97e69 r5:b6fc0268 r6:0042d661 r7:bec97d60 r8:00000000 r9:00000000 r10:00000000 fp:bec97d20 ip:00000020 sp:bec97cd0 lr:b6f9fae4 pc:0042d32c - - #00 pc 000000000000332c(000000000042d32c) /data/crasher(TriggerSegmentFaultException+15) - #01 pc 00000000000035c7(000000000042d5c7) /data/crasher(ParseAndDoCrash+277) - #02 pc 0000000000003689(000000000042d689) /data/crasher(main+39) - #03 pc 00000000000c3b08(00000000b6fbbb08) /system/lib/ld-musl-arm.so.1(__libc_start_main+116) - #04 pc 00000000000032f8(000000000042d2f8) /data/crasher(_start_c+112) - #05 pc 0000000000003284(000000000042d284) /data/crasher(_start+32) ``` 3. 利用addr2line工具进行调用栈分析。 使用addr2line工具根据偏移地址解析行号: - + ``` - root:~/OpenHarmony/out/hi3516dv300/exe.unstripped/hiviewdfx/faultloggerd$ addr2line -e crasher 000332c + root:~/OpenHarmony/out/hi3516dv300/exe.unstripped/hiviewdfx/faultloggerd$ addr2line -e crasher 0000332c base/hiviewdfx/faultloggerd/tools/crasher/dfx_crasher.c:57 ``` -- GitLab