从测试角度写代码(二)宏定义快速定位
-
一.为什么需要宏快速定位问题
- 通过上面我们已经用了调试分级将调试信息和交互信息分离,可以快速找到分离出交互信息和调试信息。但是在调试信息过程中,比如内存申请,我们会malloc很多次,在很多个地方都需要判断有没有malloc成功,那么当运行时,系统给我们打印出"no enough memory malloc"时,我们需要快速定位到是哪个地方没有malloc成功。
-
二.快速定位的宏有哪些?
-
FILE:定位出异常属于哪个文件
-
LINE:定位出异常在文件的第几行
-
FUNCTION:定位出异常属于那个函数
-
需要注意的是____FUNCTION____在C99标准下才支持使用
-
-
三.测试代码和效果
-
测试代码
#include <stdio.h> #include <stdlib.h> int main(int args, char *argv[]) { int *pointer = NULL; while(1) { pointer = (int*)malloc(sizeof(int)*100000000); if(NULL == pointer) { printf("no enough memory, it happened in %s, %s, %d\n", __FILE__, __FUNCTION__, __LINE__); break; } } free(pointer); pointer = NULL; return 0; }
-
运行结果
-