函数定义的源文件

时间:2015-09-27 13:26:19

标签: c++ c unix hp-ux

我正在为在Unix(HP-UX)上部署的非常复杂的应用程序工作,其C / C ++源文件数> 10-15k。 我想知道我是否可以搜索具有特定用户定义函数定义的确切文件名。有很多这样的函数从几个地方调用,使用grep进行搜索需要时间。

我在其他线程中找到了关于Cscope,ack的讨论,但这些在我的客户端机器上不可用。还有其他任何可以实现的吗?任何建议都会有很大的帮助!

另外我如何在vi编辑器中标记一个函数,这有助于移动另一个有其定义的文件?我知道可以使用ctags(Ctrl + [)来实现。还有其他方法吗?

如果存在相关线程,请发布。谢谢。

1 个答案:

答案 0 :(得分:1)

如果无法在开发计算机上安装新工具,可以使用两种常用方法。

文字搜索

您已经提到使用grep,但表示需要时间来筛选结果,因为调用网站会与定义一起出现。为避免这种情况,您可以调整grep模式。首先,尝试只搜索头文件:

find PATH -name '*.h' | xargs grep FUNC

如果您的项目遵循惯例,每当您在头文件中找到声明的函数时,它将在同一文件或相应命名的代码文件中定义。

或者,尝试使用特殊模式来查找定义:

grep 'FUNC(.*) *$'

这将只匹配右括号位于行尾(模数空白)的那些地方。这将过滤掉大多数呼叫站点和声明,尽管它并不完美。

对象代码搜索

在此方法中,首先生成每个目标文件中定义的符号列表。这假设您已经或可以生成这些中间构建工件,并且您的项目再次遵循常规做法。您可以在此处详细使用nmpygame.transform.chop()

您可以在.bashrc中为上述命令创建别名,以使其更易于使用。