HarmonyOS 鸿蒙Next 面对这种看不懂的native层报错应该如何排查问题?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 面对这种看不懂的native层报错应该如何排查问题?

有个不懂的c++报错,偶发的,看着好像跟app无关,麻烦帮忙看看

PreInstalled:No
Foreground:Yes
Timestamp:2024-11-22 15:55:00.585
Pid:1434
Uid:20020174
Process name:com.ehang.ehangRdpHar
Process life time:25s
Reason:Signal:SIGSEGV(SEGV_MAPERR)@0x0000005990597ce8
Fault thread info:
Tid:1649, Name:OS_FFRT_3_13
#00 pc 00000000000a01b0 /system/lib/ld-musl-aarch64.so.1(cfi_slowpath_common+80)(8aa6bb5d81119af23adcca677c08c176)
#01 pc 00000000000a1c44 /system/lib64/platformsdk/libnative_rdb.z.so(OHOS::NativeRdb::SqliteStatement::Prepare(sqlite3*, std::__h::basic_string<char, std::__h::char_traits<char>, std::__h::allocator<char>> const&)+376)(9b909a81fa6a19c3ec6b5df56195b26b)
#02 pc 00000000000966e0 /system/lib64/platformsdk/libnative_rdb.z.so(OHOS::NativeRdb::SqliteConnection::CreateStatement(std::__h::basic_string<char, std::__h::char_traits<char>, std::__h::allocator<char>> const&, std::__h::shared_ptr<OHOS::NativeRdb::Connection>)+156)(9b909a81fa6a19c3ec6b5df56195b26b)
#03 pc 00000000000d4f74 /system/lib64/platformsdk/libnative_rdb.z.so(OHOS::NativeRdb::SqliteSharedResultSet::PrepareStep()+352)(9b909a81fa6a19c3ec6b5df56195b26b)
#04 pc 00000000000d4b30 /system/lib64/platformsdk/libnative_rdb.z.so(9b909a81fa6a19c3ec6b5df56195b26b)
#05 pc 0000000000088d9c /system/lib64/platformsdk/libnative_rdb.z.so(9b909a81fa6a19c3ec6b5df56195b26b)
#06 pc 00000000000772a0 /system/lib64/platformsdk/libnative_rdb.z.so(OHOS::NativeRdb::RdbStoreImpl::QuerySql(std::__h::basic_string<char, std::__h::char_traits<char>, std::__h::allocator<char>> const&, std::__h::vector<OHOS::NativeRdb::ValueObject, std::h::allocator<OHOS::NativeRdb::ValueObject>> const&)+308)(9b909a81fa6a19c3ec6b5df56195b26b)
#07 pc 0000000000078b14 /system/lib64/platformsdk/libnative_rdb.z.so(9b909a81fa6a19c3ec6b5df56195b26b)
#08 pc 00000000000545b0 /system/lib64/module/data/librelationalstore.z.so(3d0c2c78f4cd805346cd5a01b7d4ea12)
#09 pc 000000000001fc74 /system/lib64/module/data/librelationalstore.z.so(OHOS::RelationalStoreJsKit::AsyncCall::OnExecute(napi_env, void)+140)(3d0c2c78f4cd805346cd5a01b7d4ea12)
#10 pc 0000000000061908 /system/lib64/platformsdk/libace_napi.z.so(NativeAsyncWork::AsyncWorkCallback(uv_work_s*)+504)(1455b3ae743f360769a14e86983f9904)
#11 pc 0000000000012784 /system/lib64/platformsdk/libuv.so(uv__ffrt_work+56)(6d7650ad61f07110b6c717bbf7593d75)
#12 pc 000000000005ebb4 /system/lib64/ndk/libffrt.so(ffrt::CPUWorker::Run(ffrt_executor_task*, int)+488)(40fd18e4c5106ae1841836cd4c83a08f)
#13 pc 000000000005f960 /system/lib64/ndk/libffrt.so(ffrt::CPUWorker::WorkerLooperDefault(ffrt::WorkerThread*)+568)(40fd18e4c5106ae1841836cd4c83a08f)
#14 pc 000000000005f294 /system/lib64/ndk/libffrt.so(ffrt::CPUWorker::Dispatch(ffrt::CPUWorker*)+152)(40fd18e4c5106ae1841836cd4c83a08f)
#15 pc 000000000005f1e4 /system/lib64/ndk/libffrt.so(ffrt::CPUWorker::WrapDispatch(void*)+28)(40fd18e4c5106ae1841836cd4c83a08f)
#16 pc 00000000001ba294 /system/lib/ld-musl-aarch64.so.1(start+236)(8aa6bb5d81119af23adcca677c08c176)
Registers:
x0:f7a6c0fb1dcb855a x1:0000005a19d36dec x2:0000000000000000 x3:0000000000000000
x4:0000005b3c58d75f x5:00000000002d0ce8 x6:0000000080000000 x7:2054434e49545349
x8:00000059902c7000 x9:00000000002d0ce9 x10:204d4f5246202a20 x11:57207372656e776f
x12:6573752045524548 x13:203f203d20644972 x14:0000000000000000 x15:5c651d079f7e82f9
x16:0000005a17ce1938 x17:000000598eb9d158 x18:0000000000000009 x19:0000005b4485c478
x20:0000005a19d36dec x21:0000005b4485c4b8 x22:0000005b319b4280 x23:0000005a19d2e988
x24:0000005a19e5afb8 x25:0000005b4416bb39 x26:0000005a17ce0fe0 x27:0000005b4485c468
x28:000000598eefb7c0 x29:0000005b3701d0e0
lr:0000005a17ca1c48 sp:0000005b3701d0b0 pc:000000598eb9d1b0<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

2 回复

您好!推荐您使用以下方法尝试

更新相关库和依赖

  • 检查应用所依赖的数据库相关库(如libnative_rdb.z.solibrelationalstore.z.so等)是否是最新版本。如果可能,尝试更新这些库到最新版本,以修复可能存在的已知问题或漏洞。
  • 确保应用的构建配置与所使用的库版本兼容。有时候,库版本的不匹配也可能导致在运行时出现各种奇怪的错误,包括内存访问异常; 

    进行调试和日志记录:

    • 在可能出现问题的代码区域添加更多的日志输出,特别是在数据库操作之前和之后,记录关键的变量值、SQL 语句等信息。这将有助于更准确地定位问题发生的具体位置和原因。
    • 如果可能,可以使用调试工具(如 HarmonyOS 提供的调试支持或第三方调试器)来单步调试应用,观察在数据库操作过程中各个变量和内存的状态变化,以便及时发现异常的内存访问行为。

面对HarmonyOS 鸿蒙Next中看不懂的native层报错,可以从以下几个方面进行排查:

  1. 检查错误日志:详细阅读并分析报错信息,注意其中的错误代码、错误位置及可能的原因。这通常是定位问题的第一步。
  2. 分析代码:检查引发错误的代码段,特别是与报错信息相关的部分。确认代码逻辑是否正确,是否有潜在的空指针引用、越界访问等问题。
  3. 检查依赖库:确认项目中所使用的第三方库或模块是否兼容当前的开发环境,特别是架构类型(如x86_64)是否匹配。
  4. 使用调试工具:利用IDE(如DevEco Studio)提供的调试功能,设置断点并逐步执行代码,观察变量值及程序执行路径,以便更准确地定位问题。
  5. 查阅文档:参考HarmonyOS官方文档及开发者社区,查找是否有类似问题的解决方案或建议。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部