我正在为在Unix(HP-UX)上部署的非常复杂的应用程序工作,其C / C ++源文件数> 10-15k。 我想知道我是否可以搜索具有特定用户定义函数定义的确切文件名。有很多这样的函数从几个地方调用,使用grep进行搜索需要时间。
我在其他线程中找到了关于Cscope,ack的讨论,但这些在我的客户端机器上不可用。还有其他任何可以实现的吗?任何建议都会有很大的帮助!
另外我如何在vi编辑器中标记一个函数,这有助于移动另一个有其定义的文件?我知道可以使用ctags(Ctrl + [)来实现。还有其他方法吗?
如果存在相关线程,请发布。谢谢。
答案 0 :(得分:1)
如果无法在开发计算机上安装新工具,可以使用两种常用方法。
您已经提到使用grep
,但表示需要时间来筛选结果,因为调用网站会与定义一起出现。为避免这种情况,您可以调整grep
模式。首先,尝试只搜索头文件:
find PATH -name '*.h' | xargs grep FUNC
如果您的项目遵循惯例,每当您在头文件中找到声明的函数时,它将在同一文件或相应命名的代码文件中定义。
或者,尝试使用特殊模式来查找定义:
grep 'FUNC(.*) *$'
这将只匹配右括号位于行尾(模数空白)的那些地方。这将过滤掉大多数呼叫站点和声明,尽管它并不完美。
在此方法中,首先生成每个目标文件中定义的符号列表。这假设您已经或可以生成这些中间构建工件,并且您的项目再次遵循常规做法。您可以在此处详细使用nm
:pygame.transform.chop()
您可以在.bashrc
中为上述命令创建别名,以使其更易于使用。