  ◆ 结构化摘要（blutter 对象池 dump 的统计与符号索引）
      文件头 : pool heap offset: 0xd80080
      规模   : 98,844 行 / 3,886 KB；识别 38,872 条，续行 59,971 条，未识别 0 条

      ◆ 对象类型（这就是「函数地址 ↔ Dart 源位置」的载体）
                    String  15,385                  Null   6,372      AnonymousClosure   4,268
             TypeArguments   1,672                 Field   1,370                  Type   1,297
                       IMM     934          UnlinkedCall     606      SubtypeTestCache     601
                   Closure     220                  Stub     210              NativeFn     193
                  Function     177                Double     140          FunctionType     137
      …（其余 5 种已省略）

      ◆ 符号条目 : 3,548 条带 (0x地址) —— 拿去 r2 就能按地址还原函数名

      ◆ 按 Dart 包统计（前 15）
         1,563  flutter   (框架)
           730  mdiary2   ← 业务包（非框架，条目最多）
           156  wechat_assets_picker
           142  material_color_utilities
           109  webview_flutter_android
            90  extended_image
            68  reorderables
            64  dio
            50  qiniu_sdk_base
            48  get
            48  xml
            36  lottie
            33  flex_color_picker
            29  flutter_neat_and_clean_calendar
            29  flutter_screen_lock

      ◆ 业务包 mdiary2 的符号（前 40 / 730 条）
             0x95606c  package:mdiary2/main.dart  ::main
             0x95fddc  package:mdiary2/services/home_widget_service.dart  HomeWidgetService::_schedulePendingAction
             0x576e54  package:mdiary2/state/diary.dart  DiaryState::handleLoginExpired
             0x57705c  package:mdiary2/state/diary.dart  DiaryState::_runAuthTransition
             0x888b30  package:mdiary2/state/diary.dart  DiaryState::_getCurrentDiary
             0x888b30  package:mdiary2/state/diary.dart  DiaryState::_getCurrentDiary
             0x888b30  package:mdiary2/state/diary.dart  DiaryState::_getCurrentDiary
             0x8890f8  package:mdiary2/state/diary.dart  DiaryState::_getAllDiary
             0x8890f8  package:mdiary2/state/diary.dart  DiaryState::_getAllDiary
             0x88f924  package:mdiary2/state/diary.dart  ::_getBookInfo
             0x958104  package:mdiary2/sql/upgrade.dart  ::upgradeData
             0x958104  package:mdiary2/sql/upgrade.dart  ::upgradeData
             0x958104  package:mdiary2/sql/upgrade.dart  ::upgradeData
             0x958104  package:mdiary2/sql/upgrade.dart  ::upgradeData
             0x95bb14  package:mdiary2/utils/util.dart  ::deepCopy
             0x95bb14  package:mdiary2/utils/util.dart  ::deepCopy
             0x95f9a8  package:mdiary2/main.dart  ::initServices
             0x95f9a8  package:mdiary2/main.dart  ::initServices
             0x95f9a8  package:mdiary2/main.dart  ::initServices
             0x95f9a8  package:mdiary2/main.dart  ::initServices
             0x960284  package:mdiary2/services/home_widget_service.dart  HomeWidgetService::_handleNativeCall
             0x95fc38  package:mdiary2/services/home_widget_service.dart  HomeWidgetService::init
             0x960424  package:mdiary2/state/diary.dart  DiaryState::initState
             0x960424  package:mdiary2/state/diary.dart  DiaryState::initState
             0x960424  package:mdiary2/state/diary.dart  DiaryState::initState
             0x960680  package:mdiary2/state/diary.dart  DiaryState::_refreshBookDays
             0x960c14  package:mdiary2/sql/index.dart  SqlService::_initDb
             0x960c14  package:mdiary2/sql/index.dart  SqlService::_initDb
             0x958104  package:mdiary2/sql/upgrade.dart  ::upgradeData
             0x952718  package:mdiary2/main.dart  MyApp::build
             0x952718  package:mdiary2/main.dart  MyApp::build
             0x952718  package:mdiary2/main.dart  MyApp::build
             0x952718  package:mdiary2/main.dart  MyApp::build
             0x9655b8  package:mdiary2/routes/index.dart  ::routes
             0x9655b8  package:mdiary2/routes/index.dart  ::routes
             0x9655b8  package:mdiary2/routes/index.dart  ::routes
             0x9655b8  package:mdiary2/routes/index.dart  ::routes
             0x9655b8  package:mdiary2/routes/index.dart  ::routes
             0x9655b8  package:mdiary2/routes/index.dart  ::routes
             0x9655b8  package:mdiary2/routes/index.dart  ::routes
      …（其余 690 条在完整 pp.txt 里，用 read_log 分页读）
