Program Slicing

 

       在计算机编程程序切片是一组程序语句的计算,切片可用于调试以更容易地定位错误源。切片的其他应用包括软件维护优化程序分析信息流控制

      自Mark Weiser最初的定义以来,切片技术一直在迅速发展。最初,切片只是静态的,即应用于源代码而没有除源代码之外的其他信息。Bogdan KorelJanusz Laski介绍了动态切片,它适用于程序的特定执行(对于给定的执行跟踪)

      静态切片 VS 动态切片

      (1)静态切片

      仅仅是静态可用的信息
      没有对输入做任何假设
      计算切片通常是不准确的
      识别最小切片是一个不可确定的问题
      结果可能并不有用 

     (2)动态切片

      对给定的输入进行计算
      实际而不是
      适用于调试和测试等应用程序

    Examples1:(static backward slice)

     使用后向静态切片,关于程序点p和程序变量组V的程序的后向切片;关于程序点p和程序变量集V的程序的后向切片由程序中的所有语句和谓词组成,这些语句和谓词可能影响V中的变量值;程序点p和变量集V一起形成切片标准,通常写为<p,V>。

    一般方法:向后遍历程序流程
    切片从点p开始(C =(p,V))
    检查可以执行的语句
    在p之前(不只是在p之前出现的语句)
    添加影响p的值或执行的语句以获得p
    考虑传递依赖

 

     程序执行方式:

     如果切片中的语句形成可以执行的语法正确的程序,则切片是可执行的。
     如果正确(安全地)计算切片,则运行作为可执行切片的程序的结果对于所有输入的V中的变量产生相同的结果。

     执行结果:

     Examples2:(Dynamic slice)

    对于程序的特定执行e,关于程序点p处的变量v的输入值的程序的动态切片是程序中影响v的值的所有语句的集合。
    程序点p,变量V和e的输入i形成切片标准,通常写为<i,v,p>。 切片使用输入i的程序的执行历史或轨迹。

     Compare the static slice with dynamic slice

     Method for computing slices

     流程图上的数据流
     过程内:控制流图(CFG)
     过程间:过程间控制 - 流程图
     依赖图中的可达性
     过程内:程序依赖图(PDG)
     过程间:系统依赖图(SDG)
     数据流方程(CFG上的数据流)
           迭代过程(通过CFG)
                  使用数据依赖性为CFG中的每个节点计算连续的“相关”变量集
                  不明确计算控制依赖性
                  控制谓词的变量(if,while)如果其身体中的任何一个陈述相关,则“间接相关”
          从切片准则开始:C =(p,V)
         继续,直到达到一个固定点(即,最后一次迭代没有找到新的相关语句)

    关于一些程序分片的源码,可在github上参考:https://github.com/search?q=programming+slice

切片过程 1)开始切片过程,在Unity编辑器顶部选择地形选项,然后单击“切片地形”选项。一个窗口会出现一些配置信息。 2)拖动您希望分割为“地形切片”字段的地形。或者,如果您在步骤1中单击“切片地形”选项时选择了地形,则该字段中已经出现了地形。 3)输入每个补丁的详细分辨率。优选地,该值应与每个补丁值的基本地形细节分辨率匹配。这些信息不能通过脚本访问,这就是为什么你必须在这里输入它。您可以输入与基础地形设置不同的值,但这将导致细节网格(植物和草地)复制的准确性降低。 4)选择您希望结束的切片维度。2×2仅仅意味着基本地形将沿着X轴2次和Z轴2次分割,以创建4个地形片。64×64未经测试,不建议使用,所以请自行承担风险。 5)设置希望存储地形数据的文件路径。默认情况下,这是资产/ terrainslicing /地形数据。如果您希望暂时在另一个文件夹中创建地形数据,只需在这里输入新路径。如果希望永久更改默认文件夹,请输入新的文件路径,并选择“保存当前文件路径作为默认文件路径”按钮。请确保没有“/”后的文件路径上的文件夹名称(例如,用于文件的默认路径的地形数据后),否则将会出现错误。 6)当单击“创建地形”按钮时,选择是否覆盖现有的地形数据。这是一个安全功能,以确保你不小心覆盖的地形数据,你已经创造了。如果试图在未选中此值时重写数据,则会出现警告消息,告诉您要检查此值,而切片操作将不会开始。 7)单击“创建地形”按钮,等待进度条填充。如果进度条未显示,则在编辑器窗口显示通知错误的通知消息。有时您可能需要检查控制台以获得更详细的信息。最后,确保只在编辑模式下执行切片地形脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值