Cursor 分析 bug 记录

1. 写在最前面

工作忙起来的好处就是没时间思考,不停的在赶着一个又一个功能的迭代。但是昨天偶然听到一位父亲在给孩子讲述「西西弗斯」的故事,突然意识到就这样日复一日的一成不变下去,自己是不是就跟永不停歇一直推石头到山顶的西西弗斯一样。

注:这周紧张而繁忙的工作,让我在思考。AI 工具的发展在助力劳动者的同时是不是也给资本家提供了压榨劳动者的手段。

在前前后后接近 20 轮的压测过程中,不仅需要快速的相应压测出现的各种问题,还需要同时快速修复代码的 bug。

注:为 cursor gpt-5-fast 模型的分析能力点赞!

2. Cursor 分析 bug

2.1 正则匹配

问题:QA 反馈压测环境的任务非预期退出?

分析:

  • 针对报错的任务做初步的分析,粗估一下退出的原因

  • 将非预期退出日志 + 模块丢给 cursor

  • cursor 分析过程简单总结:何你的这条日志被判定为 fatal ?

    • 事件里 last_error_code 是 "7",按错误码集合本不致命。
    • 但 last_error_message 里包含 "Error code: 1013 ... SessionId: ...1007"。由于正则是 error\s+code.*1007,它会从 "Error code" 开始一直向后匹配,直到命中 SessionId 末尾的 "1007",从而误判为致命错误。

也就是说,是"过宽"的正则把 SessionId 里的 "1007" 当成了错误码 1007。

  • cursor 修复方案简单总结:

    • 将模式改为只匹配错误码字段本身,例如:r"error\scode:\s1007\b";
    • 更稳妥地优先使用结构化的 last_error_code 判断,再辅以消息匹配作为兜底,避免被 SessionId 等字段干扰。

总结:遇到不是自己写的模块出现 bug ,先不要慌,因为必要时刻可以请 cursor 出手。

2.2 golang 数据竞争 【 cursor fix】

问题: QA 反馈 uploader 服务出现问题

分析:

  • 根据反馈的问题,结合日志排查,根因为 golang 的数据竞争
  • 先让 cursor 在本地用测试用例复现一下

  • 然后再让 cursor 给出 fix 这个 bug 的方案

结论:边压测边分析自己的 bug ,似乎压力也没有那么大了不是。

2.3 golang 数据竞争【非 cursor fix】

问题: QA 反馈服务没有按照预期退出

分析:

  • 根因又又又是因为数据竞争
  • 但是这个非 cursor 修复的,原因是 cursor 没有办法本地复现,导致它在 fix 这个问题的时候花费了比较长的时间。

    注: cusor 没办法本地复现的原因是有人定义的 interface 里,用了不支持导出的方法......

    因为 Go 语言的一个特殊设计:如果接口中包含未导出的方法(小写字母开头),那么这个接口只能在定义该接口的包内实现。这是一个安全特性,确保未导出的方法只能在定义它们的包内部实现。

    在我们的例子中:

    1. internal 接口是在 xxx/yyy 包中定义的
    2. 这个接口包含了一个未导出的方法 internal
  • 人肉修复的方案总结:

    • 首先,分析数据竞争产生的 Write/Read 的具体位置
    • 然后,移除Write/Read 中的一个,防止数据竞争的产生
    • 最后,果然每个人写代码都有每个人写代码的风格......

总结:遇到数据竞争的 case 不要慌,虽然是别人写出来的,但是咱也有处理的经验不是了。

注: 以上的数据竞争展示隐去了部分内容

3. 碎碎念

忙碌的连晚饭时间都要牺牲出来测试的一周终于结束了,开始搓搓手期待这个周末啦。

  • 自己生活贫乏的人,才喜欢刺探别人的私事。
  • 这个世界,需要无用的东西。什么都要有意义的话,你会感到窒息的。
  • 成长是一笔交易,我们都是用朴素的童真,与未经人事的洁白,交换长大的勇气。
相关推荐
努力的小郑36 分钟前
MySQL索引(三):字符串索引优化之前缀索引
后端·mysql·性能优化
IT_陈寒1 小时前
🔥3分钟掌握JavaScript性能优化:从V8引擎原理到5个实战提速技巧
前端·人工智能·后端
程序员清风2 小时前
贝壳一面:年轻代回收频率太高,如何定位?
java·后端·面试
考虑考虑2 小时前
Java实现字节转bcd编码
java·后端·java ee
AAA修煤气灶刘哥2 小时前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
爱读源码的大都督2 小时前
Java已死?别慌,看我如何用Java手写一个Qwen Code Agent,拯救Java
java·人工智能·后端
星辰大海的精灵3 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
天天摸鱼的java工程师3 小时前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
一乐小哥3 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
LSTM973 小时前
如何使用C#实现Excel和CSV互转:基于Spire.XLS for .NET的专业指南
后端