设计取舍
前面十个部分讲的是「它怎么做」,每章里顺带提过「为什么这样做、放弃了什么」。这一部分只有一章,把这些散落的取舍收到一起:
- 十二条取舍:全局注册表加插件;目标描述编译期转 bincode;探针 trait 分层加 polyfill;去掉 typestate;本地也走 RPC;
Core是短命视图;调试层只认MemoryInterface;只读.debug_frame,每次停下全量展开;轮询而不是中断;defmt 在客户端解码;gdb server 只做硬件断点;TODO 集中在哪几个文件。每条只写换来什么、付出什么、在哪一章有数字,机制不再重讲。
flowchart TB ext["可扩展:插件、注册表"] --> cost1["全局状态,库用户自己注册"] data["编译期目标描述"] --> cost2["改内置 YAML 要重编"] layer["探针分层加 polyfill"] --> cost3["每个访问单独成批"] rpc["本地也走 RPC"] --> cost4["dry-run 失效、入口不统一"] mi["只认 MemoryInterface"] --> gain["coredump、QEMU 都能接"] poll["轮询"] --> cost5["延迟与 USB 负载"]
💬 关联讨论
发起讨论加载中...