cscope 精准定位代码位置

背景

当初入了vim的坑,习惯了vim的编辑方式和命令。现在发现eclips,visual studio code这些工具门槛更低,而且有很多优秀的功能。

vim的特点是这些优秀的功能可以靠插件实现。

目前我的vim配置了:YouCompleteMe,cscope,配置了cscope的快捷键可以一件找到定义处和调用处。

在有cscope阅读代码是遇见已经糟心事:linux kernel代码和uboot代码等,有很多函数的定义因为有不同的board和arch的实现,所以多处有定义。这和时候就需要在几百个选项中找到我们使用的代码中的定义。

思路

最开始想既然我们编译的时候能更具编译规则找出需要编译的文件,那么我们弄个工具按照编译规则去生成需要的文件列表。这个思路来自与YCM。

但是这个方法不可行,因为很多项目的编译系统并不一致,比如有makefile,还有cmake,nmake等要去适配众多编译系统是个巨大的工作任务。

偶遇

直到最近我买了jlink在官网下载了Ozone调试软件,当我用Ozone打开elf调试文件时,它会自动把使用的文件显示出来。这个功能给我迎头一击。

它肯定是用了elf中的调试信息,说明elf调试信息中会包含使用文件的记录。然后就搜出了dwarf

简单的介绍:

http://www.cnblogs.com/zqingnn/archive/2011/01/05/1926384.html

通过搜索引擎知道,可以通过 readelf 命令来获取到调试信息。

 解决方法

readelf -wL 可以将这些文件打印处出来,然后重定向到cscope.files

${cross}readelf -wL OUT/u-boot |grep "CU:" |sed  -e 's/:$//g' > cscope.files

这个时候通过cscope生成的cscope.out文件它只会去索引cscope.files中的文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值