linux 内核模块调用图,Linux内核的静态调用图生成

Ira Baxter..

5

我们已经完成了全局点分析(使用间接函数指针)和2600万行(18,000个编译单元)的单片C系统的完整调用图构建.

我们使用我们的DMS软件再造工具包,C前端及其相关的流量分析机器来完成它.分数分析机制(和其他分析)是保守的; 是的,你会得到一些虚假的点,因此会调用边缘.这些很难避免.您可以通过提供关键功能的某些关键事实来帮助此类分析器,并利用诸如"嵌入式系统[和操作系统]之类的知识在调用图中不会有循环",这意味着您可以消除其中的一些.当然,你必须允许例外; 我的道德:"在大系统中,一切都在发生."

特定问题包括使用特定于此特定软件的特殊加载方案动态加载(!)C模块,但这只是添加到问题中.

对函数指针的强制转换不应该丢失边缘; 保守分析应该简单地假设转换指针匹配系统中的任何函数,其中签名对应于转换结果.更有问题的是能够产生多种兼容签名的演员表; 如果在调用的实际函数接受int时将函数指针强制转换为void*foo(uint),则分析点必然会保守地选择错误的函数.你不能责怪分析仪; 演员就是那种情况.是的,我们在2600万线系统中看到了这种垃圾.

这当然是分析Linux的合适尺度(我认为只有800万行左右:-).但我们还没有专门针对Linux进行过尝试.

设置此工具很复杂,因为您必须捕获有关编译本身的所有详细信息,特别是要生成的Linux内核的配置.因此,您几乎必须拦截编译器调用以获取命令行开关等.

不幸的是,我想不要使用商业工具.谢谢您的帮助. (2认同)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值