用source insight阅读内核源代码问题请教?

惰鱼 2011-12-13 09:22:05
查看内核源代码或u-boot源代码时,由于硬件支持问题,一个变量可能在多个文件中定义。用SI看代码是要找到正确的定义找半天,非常不适合我这样的新手学习,不知道各位有什么高招?求指教!
...全文
249 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
惰鱼 2011-12-14
  • 打赏
  • 举报
回复
谢谢各位提供的方法!觉得都不错!
惰鱼 2011-12-13
  • 打赏
  • 举报
回复
找到一个方法。。可以自己把不对应的文件从工程的删除。。比较郁闷的方法文件很多。。删除后必须关闭这个文件,否则还是能连接到。。
deep_pro 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hjjph 的回复:]
不知道有没有方法可以根据makefile导入工程文件,根据makefile中的选项判断哪些文件时系统需要的哪些不是,不知道source insight是否有这样的功能!求大侠指点!
[/Quote]
开发这样的功能对于任何源码阅读工具来说都是巨大的工作量,不见得有公司愿意去做

这个东西习惯就好
惰鱼 2011-12-13
  • 打赏
  • 举报
回复
不知道有没有方法可以根据makefile导入工程文件,根据makefile中的选项判断哪些文件时系统需要的哪些不是,不知道source insight是否有这样的功能!求大侠指点!
惰鱼 2011-12-13
  • 打赏
  • 举报
回复
谢谢楼上两位的回答,我知道这些原因,知道是硬件选择多而造成的。现在我就想在SI里找到一个方法指定变量的定义,不要每次我一找这个变量定义一大堆,第一次我可以找到对应的定义,次次要我找我就觉得是工具不爽了!求好的方法解决?
2楼说的方法我觉得比较麻烦呢,每次都得去编译。。那看段代码要看到啥时候啊。。
沭水河畔 2011-12-13
  • 打赏
  • 举报
回复
在工程中把不相关硬件平台的文件夹和文件移除。
deep_pro 2011-12-13
  • 打赏
  • 举报
回复
确实存在一个变量或结构体在多个地方有定义的情况
需要依靠程序员根据具体的cpu体系结构区分,这是驱动程序员的基本要求


此外 ,如果实在搞不定找不到,在.c源码开头位置自己定义这个变量或结构体,编译内核就会报错,错误信息会告诉你真正的定义位置
李迟 2011-12-13
  • 打赏
  • 举报
回复
结合你的硬件平台来确定变量的定义。

另外,不仅仅看代码,也要参考其它资料,了解整个架构以及代码的组织,这样才能更好地理解。

--无论是内核还是u-boot,还是其它项目代码。
wence 2011-12-13
  • 打赏
  • 举报
回复
一般每个架构都是分目录的,直接把整个目录删掉,只保留比如x86的文件夹。 然后再建工程。 一般只需要花半个小时就能找出来。比如我看apache的源代码,就直接弄了个脚本来删除。可以参考下。

4 files="bs2000 win32 beos prefork winnt netware mpmt_os2 os2 tpf aix os390"
5
6 for file in $files
7 do
8 rmfiles=`find . -name $file`
9 echo "rm -rf $rmfiles"
10 echo "############################"
11 rm -rf $rmfiles
12 done
Wenxy1 2011-12-13
  • 打赏
  • 举报
回复
编译下,有中间文件 .o的就是你所要的。
惰鱼 2011-12-13
  • 打赏
  • 举报
回复
又发现个方法用Ctrl+=快捷键可以选定义,比较方便!看来没啥更好的办法了!
bjtea 2011-12-13
  • 打赏
  • 举报
回复
我理解,所找到的每个定义都是有用的,无法说那个是正确的定义;因为无法知道,当前文件会与哪些包含定义的文件联系或链接在一起。
明白了这一点,我想应该在某个MAKEFILE的作用范围内(还要去掉条件编译的情况),找原始定义的出处;SI有这样的功能吗?或者我们可以自己编写宏来实现这个功能吗?

4,468

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧