1、准备flutter engine的编译环境;
2、执行命令./oh --oh-cpu x64 -t release,编译出engine/src/out/oh_release_x64/目录;
3、在 oh_release_x64目录下,运行cp exe.unstripped/* . -rf,将目录engine/src/out/oh_release_x64/exe.unstripped/下带符号表的编译产物文件拷贝覆盖到engine/src/out/oh_release_x64/目录;
4、准备好flutter sdk环境;
5、运行命令 flutter create --platforms oh --org com.example test_37,创建1个flutter的工程;
6、在test_37下执行:flutter build hap --release --split-debug-info=info --target-platform oh-x64 --no-tree-shake-icons --local-engine=/home/pc240015/engine/src/out/oh_release_x64 -v 2>&1|tee a.txt
7、在生成的目录test_37/info下,取出符号表app.oh-x64.symbols
8、在test_37/oh/entry/build/default/outputs/default/目录下取出entry-default-unsigned.hap,
9、解压entry-default-unsigned.hap并在entry-default-unsigned\libs\x86_64\目录下取出libapp.so
10、在报错的cppcrash文件中查找报错地址00000000002784d8,执行D:\Oh_Sdk\12\native\llvm\bin\llvm-addr2line.exe -f -e libapp.so00000000002784d8(栈顶地址)
FfiTrampoline____getRootIsolateToken$Method$FfiNative$Ptr
dart:ffi:0
11、按上步骤,解析出整个堆栈如下,然后,根据代码流程处理crash问题:
Timestamp:2024-11-19 17:10:03.170
Pid:25538
Uid:20020040
Process name:com.example.test_37
Process life time:2s
Reason:Signal:SIGSEGV(SEGV_MAPERR)@0x000000001a2bfa50
Fault thread info:
Tid:25570, Name:1.ui
#00 pc 000000001a2bfa50 Not mapped
#01 pc 00000000002784d8 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) FfiTrampoline____getRootIsolateToken$Method$FfiNative$Ptr dart:ffi:0
#02 pc 000000000027847b /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) FfiTrampoline____getRootIsolateToken$Method$FfiNative$Ptr dart:ffi:0
#03 pc 000000000012d133 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) RootIsolateToken.__getRootIsolateToken dart:ui/platform_dispatcher.dart:91
#04 pc 000000000012d0ca /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) RootIsolateToken.instance.<anonymous closure> dart:ui/platform_dispatcher.dart:86
#05 pc 00000000002896b3 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) stub _iso_stub_InitLateFinalStaticFieldStub dart:core-patch/type_patch.dart:0
#06 pc 000000000012d01d /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) _findBinaryMessenger package:flutter/src/services/platform_channel.dart:0
#07 pc 0000000000251c7c /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) MethodChannel.binaryMessenger package:flutter/src/services/platform_channel.dart:273
#08 pc 000000000025b2fd /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) RestorationManager.initChannels package:flutter/src/services/restoration.dart:169
#09 pc 000000000025b2a0 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) new RestorationManager package:flutter/src/services/restoration.dart:157
#10 pc 000000000025b164 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) ServicesBinding.createRestorationManager package:flutter/src/services/binding.dart:311
#11 pc 0000000000254808 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) ServicesBinding.initInstances package:flutter/src/services/binding.dart:40
#12 pc 0000000000254649 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) PaintingBinding.initInstances package:flutter/src/painting/binding.dart:20
#13 pc 00000000002545bd /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) SemanticsBinding.initInstances package:flutter/src/semantics/binding.dart:18
#14 pc 0000000000252ed5 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) RendererBinding.initInstances package:flutter/src/rendering/binding.dart:30
#15 pc 00000000002519f5 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) WidgetsBinding.initInstances package:flutter/src/widgets/binding.dart:246
#16 pc 0000000000251806 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) new BindingBase package:flutter/src/foundation/binding.dart:150
#17 pc 00000000002517bc /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) new _WidgetsFlutterBinding&BindingBase&GestureBinding package:flutter/src/widgets/binding.dart:0
#18 pc 0000000000251649 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) new _WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding package:flutter/src/widgets/binding.dart:0
#19 pc 000000000025143f /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) new _WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding&PaintingBinding package:flutter/src/widgets/binding.dart:0
#20 pc 00000000002513a2 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) new Completer dart:async/future.dart:0
#21 pc 000000000025125f /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) WidgetsFlutterBinding.ensureInitialized package:flutter/src/widgets/binding.dart:0
#22 pc 0000000000250d8a /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) runApp package:flutter/src/widgets/binding.dart:1017
#23 pc 0000000000250d5e /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) main package:test_37/main.dart:4
#24 pc 000000000029174b /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) _Closure.call dart:core-patch/function.dart:0
#25 pc 00000000000ffcdc /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) _runMain.<anonymous closure> dart:ui/hooks.dart:131
#26 pc 000000000029174b /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) _Closure.call dart:core-patch/function.dart:0
#27 pc 00000000002675c8 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) _delayEntrypointInvocation.<anonymous closure> dart:isolate-patch/isolate_patch.dart:297
#28 pc 0000000000291480 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) _Closure.call dart:core-patch/function.dart:0
#29 pc 00000000000ea3db /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd)_RawReceivePort._handleMessage dart:isolate-patch/isolate_patch.dart:192
#30 pc 00000000000ce8c1 /data/storage/el1/bundle/libs/x86_64/libapp.so(60f3f401a479d40d6a9fecd635c56bcd) stub InvokeDartCode
#31 pc 0000000000a4db6c /data/storage/el1/bundle/libs/x86_64/libflutter.so(1425d217238e6dd99aeb5330ca93eca60899c3db) _ZN4dart9DartEntry10InvokeCodeERKNS_4CodeEmRKNS_5ArrayES6_PNS_6ThreadE /home/pc240015/li_guoning/engine_1009/src/out/ohos_release_x64/../../third_party/dart/runtime/vm/dart_entry.cc:195
Registers:
rax:000000001a2bfa50 rdx:00007fd014d280e1 rcx:000000001a2bfa50 rbx:00007fd01847a3d0
rsi:00007fd015408421 rdi:0000000000000002 rbp:00007fd01847a3c0 rsp:00007fd01847a3b8