当前位置: 首页 > news >正文

Cursor 分析 bug 记录

文章目录

    • 1. 写在最前面
    • 2. Cursor 分析 bug
      • 2.1 正则匹配
      • 2.2 golang 数据竞争 【 cursor fix】
      • 2.3 golang 数据竞争【非 cursor fix】
    • 3. 碎碎念

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. 碎碎念

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

  • 自己生活贫乏的人,才喜欢刺探别人的私事。

  • 这个世界,需要无用的东西。什么都要有意义的话,你会感到窒息的。

  • 成长是一笔交易,我们都是用朴素的童真,与未经人事的洁白,交换长大的勇气。

http://www.lryc.cn/news/622232.html

相关文章:

  • 基于RobustVideoMatting(RVM)进行视频人像分割(torch、onnx版本)
  • 【机器学习深度学习】客观评估主观评估:落地场景权重比例
  • 四、图与网络模型
  • 大模型性能测试完全指南:从流式响应到多模态的深度实践
  • [激光原理与应用-286]:理论 - 波动光学 - 不同频段电磁波的特点与差异性
  • Docker Compose部署Clickhouse最新版
  • 区块链技术原理(13)-以太坊燃料费Gas
  • 力扣top100(day04-03)--二分查找
  • whisper 语种检测学习笔记
  • canoe面板中的进度条的使用
  • 机器学习——PCA(主成分分析)降维
  • 岩石薄片图像数据及标签-一些研究参考
  • Ceres Solver中 SetParameterization函数的完整详解
  • MySQL视图:虚拟表的强大用途与限制
  • Effective C++ 条款43:学习处理模板化基类内的名称
  • 农药化肥行业的 “智能化拐点”:边缘计算网关如何破解生产效率困局?
  • P4069 [SDOI2016] 游戏 Solution
  • 使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期
  • Python匿名函数的具体用法
  • 蓝桥杯 二叉树
  • 企业级时序数据库选型指南:从传统架构向智能时序数据管理的转型之路
  • Java: Spring前端传递列表和数组限制大小256问题
  • ​Visual Studio 2013.5 ULTIMATE 中文版怎么安装?iso镜像详细步骤
  • [优选算法专题二滑动窗口——无重复字符的最长子串]
  • 介绍TCP的拥塞控制
  • 【Go语言-Day 36】构建专业命令行工具:`flag` 包入门与实战
  • 用Qt自带工具windeployqt快速打包程序
  • 龙蜥邀您参加 AICon 全球人工智能开发与应用大会,探索 AI 应用边界
  • 2020 GPT3 原文 Language Models are Few-Shot Learners 精选注解
  • [Chat-LangChain] 会话图(LangGraph) | 大语言模型(LLM)