cbmc源码分析(二)

在使用多线程文件对cbmc测试仍然失败后,忙碌了一天的王师傅依旧一无所获。于是他决定先放一放测试的问题,开始研究源码,在一遍一遍的调试过框架后,王师傅依旧一头雾水,无从下手,于是他决定从最基础的函数看起,就从这个看起来就跟多线程有关系的has_threads函数开始

 SSA_steps和step都是SSA_stept类型,所以很明显下一步会是看该类。

好,依旧是一层套一层,无从下手,放弃,以上的话当我放屁。不过在过了一遍又一遍流程后,对整个代码的执行有个比以前更清晰的认识。

首先,我觉得cbmc_parse_options.cpp是最能体现整个结构的文件。

645以上,笼统来说,都是对测试文件的加载与预处理 ,而646是对预处理结果的分析,将结果进行保存,647是对保存的结果进行输出,然后649结束。这样一看结构就比较清晰了。

645以上的部分,又可以分为几个小部分,其中涉及到两个中间变量,第一个叫做goto模型。

如图,代码所在文件看图片左上角。676行就是对goto模型的初始化。

第二个变量叫做properties,其实还存在第三个变量,好像叫sorted_properties,就是对第二个变量进行一个排序,图我就不放了,最终对结果的判断就是基于sorted_properties进行的,而properties又是通过goto模型得到的,环环相扣。

 调试过程中需要特别注意以上这些地方,都是流程的关键部分。

我们想要看的mm命令并不是单独出来的,同样都是通过对sorted进行判断得出的,所以看懂如何得到sorted还是很必要的,所有的信息都是存储在里面的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值