如何让cscope在搜索过程中显示完整的文件路径

9

当我使用cscope搜索C符号或全局定义时,它会显示文件名和行号。我想看到完整的文件路径,以便我可以跳转到我的特定架构文件。例如,在搜索基于Linux代码库构建的cscope上的__switch_to的全局定义时,我得到:

Global definition: __switch_to

  File         Line
0 process.c    297 struct task_struct *__switch_to(struct task_struct *prev,
1 switch_to.h   44 #define __switch_to(prev,next,last) do { \
2 process.c    202 struct task_struct *__switch_to(struct task_struct *old,
3 process.c    400 struct task_struct *__switch_to(struct task_struct *prev,
4 process_32.c 211 __switch_to(struct task_struct *prev, struct task_struct *next)
5 process.c     80 void *__switch_to(struct task_struct *from, struct task_struct *to)
6 process_32.c 248 __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
7 process_64.c 272 __switch_to(struct task_struct *prev_p, struct task_struct *next_p)

现在,每个 arch 的文件 process.c 都是不同的。如何让 cscope 显示完整的文件路径?
1个回答

8

使用参数 -pn 运行 cscope

-pn 显示最后 n 个文件路径组件,而不是默认的 1 个。使用 0 不显示文件名。

使用 cscope -p4 运行并搜索 __switch_to 的全局定义结果为

Global definition: __switch_to

  File                           Line
0 arch/arm64/kernel/process.c    297 struct task_struct *__switch_to(struct task_struct *prev,
1 ia64/include/asm/switch_to.h    44 #define __switch_to(prev,next,last) do { \
2 arch/openrisc/kernel/process.c 202 struct task_struct *__switch_to(struct task_struct *old,
3 arch/powerpc/kernel/process.c  400 struct task_struct *__switch_to(struct task_struct *prev,
4 arch/sh/kernel/process_32.c    211 __switch_to(struct task_struct *prev, struct task_struct *next)
5 arch/um/kernel/process.c        80 void *__switch_to(struct task_struct *from, struct task_struct *to)
6 arch/x86/kernel/process_32.c   248 __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
7 arch/x86/kernel/process_64.c   272 __switch_to(struct task_struct *prev_p, struct task_struct *next_p)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接