【问题标题】:Is using static bytecode analysis to determine all the possible paths through a given method a variant of trying to solve the Halting Problem?使用静态字节码分析来确定通过给定方法的所有可能路径是尝试解决停机问题的变体吗?
【发布时间】:2011-08-05 06:18:44
【问题描述】:

是否可以通过读取给定方法的字节码来确定所有可能的执行路径,或者这是否等同于尝试解决停止问题?如果不能归结为停机问题,那我在不越过试图解决停机问题的边界的情况下,静态分析能走多远?

相关问题:"Finding all the code in a given binary is equivalent to the Halting problem." Really?

【问题讨论】:

    标签: static-analysis bytecode cil


    【解决方案1】:

    是的,这很容易等同于解决停机问题。考虑以下 if 语句:

    if (TuringMachine(x)) then goto fred;

    好的,真的可以转到 fred 吗?只有能够分析图灵机,才能回答这个问题。 为此有一组等效的字节码。

    现在,如果唯一的问题是确定所有似是而非的路径,并且您不在乎是否得到一些误报,那么答案是否定的。考虑以下程序:

    if (false) then x else y ;
    

    可能的路径:eval(false);do x 和 eval(false);do y 是一个完整的枚举。

    您必须特别对待循环,将其视为零、一、二或某个最大有界迭代次数,您需要一个可计算的答案。如果一个循环可以永远重复,你的一些路径将无限长,你不能用算法和有限的时间来报告它们:-{

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2013-11-23
      相关资源
      最近更新 更多