我正在寻找一种工具,它会告诉您从给定的头文件中使用了哪些符号(类型、预编译器定义、函数等)。我正在做一个从 Solaris 到 Windows 的大型驱动程序的移植,并且弄清楚事情的来源变得越来越困难,所以这将是一个巨大的帮助。有任何想法吗?
编辑:不是绝对要求,但适用于 Windows 的工具将是一个加号。
编辑#2:为了澄清我正在尝试做的事情,我有一个我正在尝试移植的代码库,它带来了大量的标头。我想要的是一个工具,给定 foo.c,它会告诉我它使用 bar.h 中的哪些符号。
我正在寻找一种工具,它会告诉您从给定的头文件中使用了哪些符号(类型、预编译器定义、函数等)。我正在做一个从 Solaris 到 Windows 的大型驱动程序的移植,并且弄清楚事情的来源变得越来越困难,所以这将是一个巨大的帮助。有任何想法吗?
编辑:不是绝对要求,但适用于 Windows 的工具将是一个加号。
编辑#2:为了澄清我正在尝试做的事情,我有一个我正在尝试移植的代码库,它带来了大量的标头。我想要的是一个工具,给定 foo.c,它会告诉我它使用 bar.h 中的哪些符号。
我喜欢KScope,它可以处理非常大的项目。
我在 Linux 和 Windows 上都使用:
gvim + ctags + cscope。
同样的环境也可以在 solaris 上运行,但这当然会迫使你使用 vim 作为编辑器,我很确定emacs也可以与 ctags 和 cscope 一起使用。
你可能想尝试一下vim,一开始有点难,但很快你就不能用另一种方式工作了。最高效的编辑器(恕我直言)。
评论回放:
查看cscope 人:
...
查找此函数调用的函数:
查找调用此函数的函数:...
我认为这正是您要寻找的……如果不是,请澄清。
评论重播2:
好的,现在我明白你了。我建议的工具可以帮助您理解代码流,并找到定义了某些符号,但不是您要查找的。
不是您要的,但由于我们在谈论,我对移植和驱动程序有一些经验(请随意忽略)
编译器似乎足以胜任您的任务。您只是从原始文件开始并让编译器找到缺少的部分,这将是很多空存根,您将编译代码。
至少在开始时,我建议您创建大量存根并尽可能少地修改原始代码,稍后一旦您开始工作,您就可以优化。
根据您要移植的驱动程序类型(我假设内核驱动程序),它可能会更复杂,Windows 和 Solaris 子系统不太相似。我们确实有一个在 solaris 和 windows 上工作的驱动程序,但它从一开始就被设计为多平台。
试试doxygen,它可以生成图形和/或 HTML 并且高度可定制
emacs
和etags
。
我利用 make 为我运行标签索引——这样我就可以用一个命令索引一个大型项目。我一直在考虑建立一个主索引和单独的模块索引,但还没有开始实施这个......
@Ilya :黎明时的手枪可以接受吗?