数据上报验证

最近更新时间:2025-12-19 15:00:12

我的收藏

崩溃监控

在程序中构造一个 crash,非调试运行触发 crash 后检查诊断窗口是否弹出,然后单击确定,再前往 崩溃 页面检查上报是否成功。具体步骤如下:
1. 在业务项目中添加如下内存访问异常的代码。

{
int a = 0x1234;
int* p = (int*)a;
*p = 2;
}
2. 上述代码触发执行以后,观察会不会弹出如下窗口,然后单击确定

3. 您可以在 崩溃 页面检查上报是否成功。


自定义错误

上报自定义错误,这种错误不是 crash,而是业务定义的一些错误,例如业务集成了 Lua 捕获的 Lua 错误、JS 错误等。下面是一个简单的 dart 错误上报示例:

/// <summary>
/// 上报自定义错误,这种错误不是 crash,而是业务定义的一些错误,例如业务集成了 lua 捕获的 lua 错误、js 错误等
/// </summary>
void CustomErrorTest() {
std::string addr =
"#0 _MyHomePageState._incrementCounter.<anonymous closure> (package:flutter_application_1/main.dart:81:33)";
std::string message = "type 'double' is not a subtype of type 'int' in type cast";
std::string name = "_CastError(Serious)";
std::string thread_name = "main";
std::string call_stack =
"#0 _MyHomePageState._incrementCounter.<anonymous closure> "
"(package:flutter_application_1/main.dart:81:33)\\n#1 State.setState "
"(package:flutter/src/widgets/framework.dart:1088:30)\\n#2 _MyHomePageState._incrementCounter "
"(package:flutter_application_1/main.dart:73:5)\\n#3 _InkResponseState._handleTap "
"(package:flutter/src/material/ink_well.dart:989:21)\\n#4 GestureRecognizer.invokeCallback "
"(package:flutter/src/gestures/recognizer.dart:193:24)\\n#5 TapGestureRecognizer.handleTapUp "
"(package:flutter/src/gestures/tap.dart:608:11)\\n#6 BaseTapGestureRecognizer._checkUp "
"(package:flutter/src/gestures/tap.dart:296:5)\\n#7 BaseTapGestureRecognizer.acceptGesture "
"(package:flutter/src/gestures/tap.dart:267:7)\\n#8 GestureArenaManager.sweep "
"(package:flutter/src/gestures/arena.dart:157:27)\\n#9 GestureBinding.handleEvent "
"(package:flutter/src/gestures/binding.dart:444:20)\\n#10 GestureBinding.dispatchEvent "
"(package:flutter/src/gestures/binding.dart:420:22)\\n#11 RendererBinding.dispatchEvent "
"(package:flutter/src/rendering/binding.dart:278:11)\\n#12 GestureBinding._handlePointerEventImmediately "
"(package:flutter/src/gestures/binding.dart:374:7)\\n#13 GestureBinding.handlePointerEvent "
"(package:flutter/src/gestures/binding.dart:338:5)\\n#14 GestureBinding._flushPointerEventQueue "
"(package:flutter/src/gestures/binding.dart:296:7)\\n#15 GestureBinding._handlePointerDataPacket "
"(package:flutter/src/gestures/binding.dart:279:7)\\n#16 _rootRunUnary (dart:async/zone.dart:1444:13)\\n#17 "
" _CustomZone.runUnary (dart:async/zone.dart:1335:19)\\n#18 _CustomZone.runUnaryGuarded "
"(dart:async/zone.dart:1244:7)\\n#19 _invoke1 (dart:ui/hooks.dart:185:10)\\n#20 "
"PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:293:7)\\n#21 "
"_dispatchPointerDataPacket (dart:ui/hooks.dart:98:31)\\n";

IBuglyAgent* pBugly = nullptr;
CreateBuglyAgent(&pBugly);
if (nullptr == pBugly) {
return;
}

/// 设置自定义字段
pBugly->SetCustomField("custom field1", "1234");
pBugly->SetCustomField("custom field1", "");
pBugly->SetCustomField("custom field2", "hodxiang");
pBugly->SetCustomField("custom field3", nullptr);
pBugly->SetCustomField("", nullptr);

/// 上报自定义错误
pBugly->ReportCommonCustomError(addr.c_str(), message.c_str(), name.c_str(), call_stack.c_str(), thread_name.c_str());
}
然后在 错误 页面查看是否上报成功。