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

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.xdnf.cn/news/17886.html

相关文章:

  • 楼宇自控系统是智能建筑核心,其重要地位日益凸显
  • C++面试——内存
  • Flutter 自定义组件开发指南
  • Spark03-RDD01-简介+常用的Transformation算子
  • 让数据可视化更简单:Embedding Atlas使用指南
  • initdata段使用方式
  • 第454题.四数相加II
  • Ant-Design AUpload如何显示缩略图;自定义哪些类型的数据可以使用img预览
  • 如何下载低版本的NVIDIA显卡驱动
  • Pytest项目_day17(随机测试数据)
  • 【LeetCode 热题 100】45. 跳跃游戏 II
  • 杭州网站建设:如何展示企业科研实力?
  • GitCode疑难问题诊疗
  • 状态流程框架(cola-component-statemachine)
  • 正点原子STM32H743配置 SDRAM
  • 序列晋升6:ElasticSearch深度解析,万字拆解
  • 【补充】数据库中有关系统编码和校验规则的简述
  • 非极大值抑制(NMS)详解:目标检测中的“去重神器”
  • 小兔鲜儿-小程序uni-app(二)
  • 【原创理论】Stochastic Coupled Dyadic System (SCDS):一个用于两性关系动力学建模的随机耦合系统框架
  • C语言基础00——基本补充(#define)
  • 非中文语音视频自动生成中文字幕的完整实现方案
  • 38 C++ STL模板库7-迭代器
  • 电子电气架构 --- 线束设计一些事宜
  • 商城开发中,有哪些需要关注的网络安全问题
  • 【大模型微调系列-02】 深度学习与大模型初识
  • tun/tap 转发性能优化
  • 如何通过ETLCloud做数据监听
  • 北京JAVA基础面试30天打卡10
  • Unity与OpenGL中的材质系统详解