Changes

Summary

  1. build: Debug 调试信息拆到 .dwo, 链接改用 lld (details)
  2. fix: BETWEEN_YARD 条件增加前进方向判断, 倒车时不启用 (details)
  3. feat: 锁站方向判定增加终点在车后倒车分支 (details)
  4. fix: 途径点匹配改按横向距离绝对值取最近中心线 (details)
  5. fix: center_line 深度 review 一轮(判定修正+越界防护+去冗余拷贝+清死代码) (details)
Commit ec9340249732808b8bb0aff790e41a93e52afb95 by wuyanjun110
build: Debug 调试信息拆到 .dwo, 链接改用 lld

-fstandalone-debug 让每个 .o 都带完整调试信息, 全量产出 819 个 .o 共 4.7GB、
可执行文件各 1.35GB, 结果 ccache 装不下一次全量(命中率仅 17%), 链接也很慢。
追加 -gsplit-dwarf 把调试信息拆到独立 .dwo, 不再进 .o 和最终二进制。两个 flag
各管一件事(前者决定类型完整性, 后者决定存放位置), 必须同时保留, 调试能力不变。
改动后 .o 总量降到 1.25GB, pnc_node 降到 768MB。

链接器在探测到 lld 时改用 lld, 链接阶段耗时占比从瓶颈降到 0.3%。lld 是独立包
不随 clang 一起装, 所以先问编译器能否使用再启用, 没装的机器回落系统默认链接器。

注意: .dwo 按相对路径记录, 调试器需从 build/ 目录启动才能定位。
The file was modifiedCMakeLists.txt
Commit 8a87ff88ceb619b57bc3fb2609e3e5d5731598a1 by wuyanjun110
fix: BETWEEN_YARD 条件增加前进方向判断, 倒车时不启用
The file was modifiedscenarios/task_condition_evaluator.cpp
Commit 7268950b8f11da77e93c148cf9e661c396982533 by wuyanjun110
feat: 锁站方向判定增加终点在车后倒车分支

终点在车后且对齐余量超过 1m 时直接置为倒车方向, 避免落到
req_step_align 分支后按前进方向规划。
The file was modifieddata/plan/path_direction_data.cpp
Commit ffcbaf27b3966535b3120134e0ae867ba6af7098 by wuyanjun110
fix: 途径点匹配改按横向距离绝对值取最近中心线

引桥/岸桥/park/buffer/lane_change 五处筛选中心线时, min_l 初值为 DBL_MAX
却用带符号的 l() 比较, 实际选出的是横向偏移最负(最靠右)的那条, 而非横向
最近的。外层已按 fabs(l()) < 2.0 过滤, 内层比较与之矛盾。改为与
UpdateDestAttr / UpdateCurrentAttr 一致的 fabs 写法。
The file was modifieddata/map/reference/center_line.cpp
Commit 07d92304fb54c78cba2b3372c5c505f2b6438d9d by wuyanjun110
fix: center_line 深度 review 一轮(判定修正+越界防护+去冗余拷贝+清死代码)

判定:
- 变道左右邻的 distance 跨越数不同, 原 check_range 被右邻覆盖后左侧实线
  检查也复用它, 拆成 left/right 各算各的
- 引桥途径点 s 只算不用, 结果取到最后一个而非最近的, 补上筛选
- seaside/lane_change 比较用 start_match.s() 却存 end_match.s(), 下一轮
  比较基准错位, 统一回 start

越界与崩溃防护:
- RelationOfRefByIdx 两个重载空容器时 size()-1 下溢, 后面 CHECK 必失败,
  改优雅返回 INT32_MAX(46 处调用点已按此值处理)
- UpdateSwitchAttr 开头补 empty() 早退, 原先 back() 无保护
- JudgeIsInBlackLane 查的是邻车道, 补 idx==0 查左邻的边界判断
- GetBlackLaneDistanceFromEgo 的 count 是变道相对关系可为负, idx+count
  走 size_t 会下溢, 改 int64_t 中转后校验
- SwitchData::curr_lane_idx_/target_lane_idx_ 无类内初始化也不在构造列表,
  补 SIZE_MAX

冗余拷贝(均为每帧热路径, CenterLine 含完整点列):
- UpdateBlackLaneDistance 深拷贝整个 MltCenterLines
- GetBlackLaneDistanceFromEgo 首次 at(idx) 拷贝立即被覆盖
- JudgeIsInBlackLane 按值拷贝邻车道

死代码:
- 136 行注释掉的 lane_change 旧实现
- LaneChangePtIsInCurPath(条件括号错位致语义反转, 仅注释块内调用)
- buffer 途径点在 center_line 侧的链路(赋值处早已注释, 无消费者);
  AppReaction::buffer_passing_pts_ 仍在用, 未动
The file was modifieddata/map/reference/center_line.cpp
The file was modifieddata/plan/switch_data.hpp
The file was modifieddata/map/reference/center_line.hpp