计算机科学

首页 > 计算机科学

PREFast for Drivers

2018-09-03 09:44:17     所属分类:调试

PREfast(Prefast.exe)是微软公司为驱动程序设计所提供的静态的源代码分析工具(static source code analysis tool),可侦测原始代码中不易用一般编译器找到的特定类型错误,与Windows DDK建置环境一同安装。目前已集成至Visual Studio 2005 Team Suite中,使用时只要设置‘Enable Code Analysis For C/C++’为‘Yes’即可,接下来PREfast会拦截cl编译器 (cl.exe) 的调用,产生由一次检查所有文件所得的单一联合清单,内容属于XML格式。

侦测错误类别:

  • 存储器:内存泄露(memory leak)。
  • 资源:没能即时释放资源。
  • 函数使用方式:不正确的函数引数、使用某个过时函数的情况。
  • 浮点运算状态
  • 优先运行规则
  • 核心模式程序安全性考量

PREfast的工作

  • 变量未初始化
void init() {
    int a;
    int b;
    b = a;
}
  • 运算对象优先权的问题
void priority() {
    int a = 1;
    int b = 1;
    int c = 1;
    if(a & b == c)
       return ;
}
  • 存储器溢出问题
void overrun() {
     char buf100;
    char buf2200;
    int  i = 100;

    sprintf(buf, "size%d" , i);
    strcpy(buf, buf2);
}
  • 死循环
void infinite_loop() {
    int i;
    for(i = 100 ; i >= 0 ; i ++ ) {
               ; 
    }
}
  • 运算对象误用
void  op_misuse() {
    int a = 2;
    if (a = 2)
       return ;
}

相关条目

  • Windows Driver Foundation

外部链接

  • Windows DDK
  • WHDC 上的开发工具与测试
  • PREfast逐步教学帮助文档

上一篇:调试
下一篇:十六进制转储
相关推荐