Suppose you have a huge source directory for example a kernel source or a library source like OpenCV and if you want to trace a function call,what do you do?
We do a case study:
Suppose there is a function warpPerspective() & you want the defination(one or multiple) for it
how do you trace the defination ?
Well, [grep -nr “warpPerspective”] is one way to do it but you get only multiple instances of the functions
Two tools come handy in this case
1)ctags
2)cscope
Using vim editor & these tools we can easily goto the function defination of any function and trace it or we can search for :
(cscope options)
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:
Find assignments to this symbol:
Usages
Cscope:
First Method:
Goto top level directory where you want to trace the function for eg kernel git directory.
1]cscope -R
to create a database ,an scope.out file will be created.
Now you will see a window like this with multiple options.
2]Enter warpPerspective in find global defination:
You will be presented with possible accurances of that file:
Same as this you can also find strings & symbols and get all accurances.
3]Now suppose you want to follow or trace this function:
press 1 for going into warp.cpp
(vim should be preinstalled)
4]Press escape
5] :cs add csope.out (full path)
6]:set tags=cscope.out (full path)
7]Now place your cursor over the function you want to trace
& hit ctrl -] (control and right square bracket key)
8]If there are multiple accurances you will see a list: