gpt4 book ai didi

c - 我们可以从控制流图中得到什么信息?

转载 作者:行者123 更新时间:2023-11-30 15:55:05 25 4
gpt4 key购买 nike

我有一个 C 程序跟踪的控制流图(在虚拟机中执行),它非常复杂。我想知道如果我有一个除了控制依赖之外的程序跟踪的 CFG,我可以提取哪些信息!谢谢

最佳答案

这里有一个区别:

  • 控制流图是程序控制的近似。一个control flow graph可以告诉您,对于程序的任何运行,可能控制流程。程序可能永远不会执行图的某个边是完全可行的:

    i := 23;
    x := some_complicated_function_returning_zero();
    if (x < i) {
    print "Hello, world!";
    } else {
    print "Bad!";
    }

在该程序中,else分支永远不会被执行,但是程序分析工具通常会报告分支两侧都有控制流边缘。这是因为程序分析是近似的。

  • 程序的踪迹是程序控制流图中边的遍历。一组好的测试通常会涵盖许多可能的控制流路径(或者至少是那些可行的控制流路径,直到控制流图构造的不精确性为止),但除此之外,测试用例还涵盖更广泛的范围。诸如变量之类的东西在这些执行路径中采用的值的范围。

跟踪可以让您看到程序在单次运行中是如何执行的,而控制流图可以让您说出“我的程序可以执行的可能方式是什么”。

真实的程序很大,因此整个程序的控制流图将非常大,但是,跟踪会相当小,因为您没有指数分支效应...

关于c - 我们可以从控制流图中得到什么信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12537953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com