How to use cscope?
Solution 1
I agree that cscope documentation is not very clear.
Use tab to move to the interactive part. Type your symbol name in “find this C symbol” or “Find this egrep pattern” and validate pressing RETURN.
If you want to call it from vim, type :help if_cscop.txt
; hoping it helps!
:cscope add your_cscope_database
:cscope find s [your_symbol]
This will make a new quickfix list. use :cn
and :cp
to navigate, :cnf
and :cpf
to navigate from file to file in the results, and :colder
and :cnewer
to restore previous quickfix lists.
Solution 2
To exit from cscope interactive prompt, type Ctrl-d
. If you just want to rebuild cscope's database, and not invoke cscope's interactive prompt, pass it the -b option. I usually invoke cscope as cscope -bcqR
.
As for jumping around in vim using cscope, it really depends on your vim config.
Most probably, jump to tag (Ctrl-]
) will use cscope first, then ctags (see :help cst
and :help csto
). Use Ctrl-T
to go back.
There are some useful mappings for cscope that you can find by typing :help cscope-suggestions
in vim. After adding those mappings to your .vimrc, you will be able to jump to symbols using Ctrl-_ s
, the calling function using Ctrl-_ c
, etc...
You can access vim's cscope documentation by typing :help cscope
.
Solution 3
I mostly use the following. These are very basic to understand the cscope.
- "cscope -R" Then you get options.
- Press down arrow. Then you will move to your required option. Type whatever you want at the respective option.
- From the search result. Use arrows(Up and down) then Press "enter key" to see the detailed file.
- ":q" to exit from the file.
- Press "Tab key" to come to the cscope options.
- "ctrl + d" to exit from the cscope.
narayanpatra
Updated on March 15, 2020Comments
-
narayanpatra about 4 years
I am using cscope to get familiar with all the keywords used in socket programming. I went to the directory with c files. I used cscope. and then I searched for AF_INET. I got this :
#define AF_FILE PF_FILE #define AF_INET PF_INET #define AF_AX25 PF_AX25
This was a full page. I only published part of it. Now I want to know from where this PF_INET is coming? what command I should use. I have seen a guy to double click on PF_INEt and using some command to find it. I don't know what the command is? Kindly help me in this.
The second thing is when i quit the page with :q command. I come to this page :
Global definition: AF_INET File Line 0 socket.h 119 #define AF_INET PF_INET Find this C symbol: Find this global definition: Find functions called by this function: Find functions calling this function: Find this text string: Change this text string: Find this egrep pattern: Find this file: Find files #including this file:
here the cursor is blinking at 0. If I want to search again something, how I will do? How to navigate from here. I tried to google it but unable to understand anything from the tutoials. Please help me in this regard as I am complete noob to linux operating system and c programming. Thanks in advance.