已给刷新/背景循环夹取行界,但现象不变(仍卡在 “[rc] vblank done” 之后、 没有 “[rc] flush done”)——说明跑飞的不是循环边界(_dirty_y_max), 而是循环体内的量:row_bytes/run_bytes 或指针,或 _dirty_rows 本身。 故在 _wait_vblank() 之后、刷新循环之前,一次性打印所有参与量: dc dmin dmax w h pitch row_bytes fb back dirty_rows row_buf bg_row_buf 任一异常即为被写坏的对象,且直接给出被写坏后的数值(量级)。 (这就是你说的“内存转储”的定向版:只打这块状态,编译快、迭代方便。)