上一版 B 把最内层栈帧的位置改写成“当前语句”,结果它与错误帧落在同一 file:line, 被去重合并 —— 输出只剩一帧,`_start` 那帧(函数定义)反而没了。 改为:栈帧只记录**被调函数的定义位置**(不随语句推进覆盖);“当前语句/具体表达式” 统一由错误帧给出(CurArg 兜底,见 TypeGenErr)。这样能得到完整两帧: File "./Apps/HelloWorld/main.vp", line 11 export def _start() -> int: ← 定义帧 File "./Apps/HelloWorld/main.vp", line 36 ... &_on_submit) ← 出错语句帧 同时删除已无调用的 TypeGenBase.update_top_trace_position。