2024-05-13 10:15:58 +08:00
|
|
|
# 观察
|
|
|
|
|
|
|
|
首先来看一段代码,这段代码可能和你平常写的也差不多,但是也有一些区别
|
|
|
|
|
2024-05-13 10:18:12 +08:00
|
|
|
```c
|
|
|
|
#include <assert.h>
|
|
|
|
|
|
|
|
int main(void) {
|
|
|
|
int a = 3;
|
|
|
|
int b = 5;
|
|
|
|
|
|
|
|
assert(a + b == 8);
|
|
|
|
}
|
|
|
|
```
|
2024-05-13 10:15:58 +08:00
|
|
|
|
|
|
|
编译运行它,结果是什么都没有,这说明没有问题,那么如果不小心打错了呢,比如你是复制粘贴的第四行只改了变量名
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-05-13 10:18:12 +08:00
|
|
|
``` C
|
|
|
|
#include <assert.h>
|
2024-05-13 10:15:58 +08:00
|
|
|
|
2024-05-13 10:18:12 +08:00
|
|
|
int main(void) {
|
|
|
|
int a = 3;
|
|
|
|
int b = 3;
|
|
|
|
|
|
|
|
assert(a + b == 8);
|
|
|
|
}
|
|
|
|
```
|
2024-05-13 10:15:58 +08:00
|
|
|
|
2024-05-13 10:18:12 +08:00
|
|
|
那么很快,当你运行时,程序就会提示你预先认为的`a + b == 8`并不成立,导致出错的代码是`/app/example.c`他的行数是`7`。
|
2024-05-13 10:15:58 +08:00
|
|
|
|
|
|
|
```
|
|
|
|
我们把 /app/example.c:7 叫位置信息
|
|
|
|
其中/app/example.c是文件名
|
|
|
|
7是行数
|
|
|
|
有了这两个就可以精确定位出问题的代码附近
|
|
|
|
```
|
|
|
|
|