如何用cscope根据符号定义文件筛选对应符号的引用?
用cscope获取特定位置符号的引用列表
可以通过指定符号所在的文件和行号参数,让cscope只返回对应特定符号的引用,具体操作如下:
方法一:直接指定符号位置查询
- 先通过定义查询定位目标符号:
执行cscope -d -L -1 foo,会列出所有foo的声明/定义条目,找到你需要的目标条目(比如来自foo1.h的那一条),记录下对应的文件名和行号。 - 执行带位置参数的引用查询命令:
这条命令会仅返回引用cscope -d -L -0 foo foo1.h 目标行号foo1.h中指定行号处声明的foo()的调用位置。
方法二:脚本化自动完成查询
如果不想手动查找行号,可以用命令组合自动提取并查询:
# 自动提取foo1.h中foo的行号 LINE=$(cscope -d -L -1 foo | grep foo1.h | awk '{print $2}') # 查询该特定符号的引用 cscope -d -L -0 foo foo1.h $LINE
补充说明
由于两个头文件声明了同名函数,cscope默认会合并所有同名符号的引用结果。通过指定符号的声明/定义所在的文件和行号,就能精准筛选出关联到该特定符号的调用记录。
内容的提问来源于stack exchange,提问作者Javier Ron Arteaga
相关产品推荐
相关产品推荐

