Skip to content

Defect Reporting and Triage 缺陷报告与分诊

对应se-10那节。

1。 一个概念判断

fault 是运行时的,
defect/ bug是静态缺陷。

A fault is an exceptional situation at run time
A defect is any characteristic of a product which hinders its usability for its intended purpose。

bug report出defect信息。
feature啥的出potential change功能,
需要的话从se -10 哪个里面找第十一页。

2. 缺陷报告生命周期 defect report lifecycle

reporting, confirmation, triage, assignment, resolution, and verification.

bug从发现到关闭的全过程etc。

查第十三页。

3. internal and external 内部和外部来源

查第十六页。

4. end-user bug reports 终端用户,噪音啥的

查18页。

5. 好report标准

可以去看20几页那几个,21开始吧应该。

6. triage 分诊

se-10 p36抄吧,不知道有啥用

7. severity

直接看p38找 那个图。

8. 优先级和分配

见 39 40 没有需要理解的部分

9. 后面现查吧,基本上没有特别离谱的,都在ppt里写的还算明白

fault local lization

对应 se-11

1. fault localization 定位

定义,不唯一,范围,等等。
查se-11 p-15

2. debugger 核心特性

查 p17。
单步,附加(夺舍),断点,条件断点,观察,blablade我也不知道怎么出题

3. signals

中断支持debugger,
race conditioner : asynchronous 异步执行,别的回来看吧,我也不知道了

4. p20 example

In signal handler, global = 33。

然后程序结束。
后面的

Outside, global = 55

不会打印出来。

基本上 如果 有注册signal(SIGSEGV, my_handler);
触发了就去执行,
*pointer = 0;,而且 pointer = NULL 有这种东西就去执行。

类似的东西还有 空指针访问 除零 用户 Ctrl-C kill 信号 OS 发来的某些信号 这种东西。

5. attach

见p21,理解不了不管了。

6. 创建, hbp,见22,23吧,管不了了也

硬件断点和条件断点,见p23

7. single-step 一次一步

见24

8 watchpoint 抓地址L,

见p26,也没看出来有啥用。

9. 不同类型

见p38,可能类似,不同类型啥的,对人不同。

10. SBFL spectrum based 啥啥的

定义见p 39

11. suspicious 算数

见 p41-43
底下几个pass是total是几。
底下几个fail是fail是几。
然后套那个公式去算。
看最可疑思路。
先看fail, 没红的不太容易, 因为压根没执行到。
然后看 fail红了,pass红的少,可疑。
看suspicious分数,越高越容易。

12. profiler 查性能

定义见 p45
flat看平均调用,另一个看调用链。

13. Event-Based Profiling 观察回调

定义见 p46

14. 定时采样 Statistical Profiling

见p47

15. Sampling Analysis 抽样

pros and cons 见 p50 trade-off: 更准 <=> 更耗性能
Accuracy depends on sampling rate
Higher sampling rate incurs higher overhead

16. 哲学

p53 54,
ranking 提前,不一定让人实际更快。
评价标准,乱七八糟的,从后面开始看

delta debugging 类似分治法那种吧

se-12 debug这节。

1. delta debug

思想见p8吧。

2. 发版挂

见p11,没看出来哪有用,就是告诉哪个版本寄了

3. difference概念,改了啥挂了

见p12

4. DD 具体逻辑

比如真正的触发集合是

那:

P1={1,2,3,4},单独没有 6,所以 No
P2={5,6,7,8},单独没有 3,所以 No
但合起来里面同时有 3 和 6,所以 Yes

这就是 interference。
可能跨起来。

5. 可能出的

dd找到的东西: one-minimal, 三个assumption,乱七八糟的,直接找书吧,别管别的了

6. 复杂度

最好情况就一个 O(log|c|) c是集合大小。
坏情况 O(|C^2|)

7. dd现查吧

不管了没时间管了

github

见se-13那个ppt。

1. cicd/ devops

现查和现搜上网解决吧不想管了

ATR

见se-24-repair
基本上跟自动生成patch相关的都在这节,可以现搜。

1. Atr定义

见 p11 为啥work见 p12。
简答题可以直接搞。

2. minimizing patches和costs

delta 缩圈。
见p14 p15。
cost也抄吧,我搞不太好这个。
The dominant cost of APR is running tests on candidate patches. A repair is valid only if it passes the entire test suite. Therefore, APR reduces cost by stopping the search once a valid repair is found, stopping evaluation of a patch after the first failing test, using test-suite prioritization/minimization, and parallelizing the search.

3. static analysis静态分析看两个等不等价

我也不知道,见p18吧。

4. 一些骨架

APR 是什么:给程序 + bug evidence,产出 patch 为什么可行:fault localization + small edits + testing 怎么生成 patch:mutation / templates / later LLM 怎么验证 patch:compile + test,pass all tests 才算 valid repair 怎么优化 patch:minimizing patches,delta debugging 怎么优化成本:prioritization / minimization / early stop / parallelization 怎么避免重复测:static analysis 判断等价 patch 怎么让 patch 更像人写的:learned fix templates / design patterns 怎么让人更能接受:文档、maintainability、trust 这些后续问题 LLM 版本怎么做:LLMAPR 流程图那几页

5. why low quality.

可以见p38

requirements

见 sec-13那个ppt
Requirements say what, not how Functional = what it does; non-functional = how well it does it Verification = building the product right; Validation = building the right product Common flaws: omission, contradiction, inadequacy, ambiguity

pair programming

是se-20那张。

1. 有一个计算问题

就是 如果原来是100, 新增 15%, 计算115 不是计算 230
见p20.

2. 其余的查表吧

前半部敏捷开发,历史那些东西。
中半部 pair 定义。
后半部。 技术面问题。

UIUx

se-15 那张 现查吧, ui的我感觉也还好。