首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KLEE是如何计算分支机构数目的?

KLEE是如何计算分支机构数目的?
EN

Stack Overflow用户
提问于 2015-06-24 21:49:43
回答 1查看 141关注 0票数 0

我正在使用Klee2.9,并试图从stat文件Klee获取分支信息。我输入了一个if- fed语句程序,klee将NumBranches报告为8。

正在测试的代码如下所示,

代码语言:javascript
复制
#include <stdio.h>
#include <stdbool.h>

int main(){
    int a;
    int b;
    klee_make_symbolic(&a,sizeof(a),"a");
    klee_make_symbolic(&b,sizeof(b),"b");
    if (a / b == 1) {
        printf("a==b\n");
    }
    else {
        printf("a!=b\n");   
    }
    return 0;
}

并输出以下文件中的run.stats (“指令”、“全分支”、“部分分支”、“NumBranches”、“UserTime”、“NumState”、“MallocUsage”、“NumQueries”、“NumQueries”、“NumQueryConstructs”、“NumObjects”、“WallTime”、“CoveredInstructions”、“UncoveredInstructions”、“QueryTime”、“SolverTime”、“CexCacheTime”、“ForkTime”、“ResolveTime”)

(0,0,0,8,5.609000e-03,0,528704,0,0,0,4.196167e-05,0,78,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00) )

(32,2,0,8,9.722000e-03,0,654176,3,56,0,3.826760e-01,27,51,3.799300e-01,3.802470e-01,3.801040e-01,6.900000e-05,0.000000e+00)

有人能解释一下8是怎么来的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-30 15:54:26

有两个可能的原因:

"klee_make_symbolic“和"printf”包含条件语句。当KLEE执行程序时,它不会将您的函数与外部函数区分开来。

如果您使用“-libc=uclibc”运行KLEE,则主函数将被替换为"__uclibc_main“。"__uclibc_main“首先进行一些初始化工作,然后调用原始的"main”函数。初始化可能包含一些条件语句。

您需要检查KLEE的版本和您使用的命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31037722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档