"Fossies" - the Fresh Open Source Software Archive
Member "ncc-2.8/nccnav/README" (12 Sep 2006, 6316 Bytes) of package /linux/privat/old/ncc-2.8.tar.gz:
As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard
) with prefixed line numbers.
Alternatively you can here view
the uninterpreted source code file.
2 nccnav is used explore the output of ncc in a convenient manner for
5 INSTALL & EXTERNAL VIEWER
8 As of version 1.3 of ncc, nccnav can invoke an external viewer to browse
9 source code.
11 To install nccnav, copy the file nccnav to /usr/bin.
12 Then make a symbolic link nccnavi -> nccnav
14 If called as "nccnav" the source code will be viewed with "less".
15 If called as "nccnavi" the source will be automatically indented
16 and viewed with "indent -kr -st | less"
21 Supposing you've compiled the linux kernel with ncc.
22 Collecting all the .nccout files can be done with :
24 find . -name \*.nccout | xargs cat > kernel.map
26 You can use the pathremover which is found in the
27 current directory to truncate long paths in `kernel.map'.
28 If you want to compile and install pathremover, the above
29 command will be something like:
31 find . -name \*.nccout | xargs cat | pathremover /mnt/src/hacks/linux-2.4.10/ > kernel.map
33 Then, that's viewed with:
35 nccnav kernel.map
40 nccnav is designed to run in a text console. The ideal display
41 is a black&white framebuffer 132x50 text mode. Of course, it can
42 be executed in an xterm window, but this usually sucks.
44 In the framebuffer case, the colors are different from the normal
45 text mode. DIM white is missing.
47 INITIAL SCREENS
50 Initially, nccnav displays a list of all the source files.
51 Pressing 'O' shows a list of all the functions and BACKSPACE or 'q' goes
52 back to the source files.
53 Pressing 'E' shows a list of all the functions not called by any other
54 function (which are supposed to be interface entry functions).
55 Pressing 'G' shows a list of all the global variables.
57 Pressing any letter (except 'q') in the list of functions will
58 get the cursor to the closest function beginning with that letter.
60 Movement is possible with the arrow keys and page-up/down.
62 Pressing <enter> on a file or function or variable goes to MODE 2.
64 MODE 2
67 This mode is oriented around a resource which can be a:
69 file, function, global variable, member of structure, structure
71 For any of the above, all the related resources are listed.
72 For example, in the case of a <function> there are:
74 1. File(s) with <function> definition (may not exist)
75 2. Functions calling <function> (Blue)
76 3. Global variables used by <function> (Red)
77 4. <function-herself>
78 5. Functions called by <function>
79 Dim grey: functions that do not call any other functions.
80 Brown: functions that do call other functions.
81 Red: Recursion detector alert (if enabled)
82 6. Structure members used by <function> (Dark grey)
84 Selecting something from 1, 2, 3, 5, 6 and pressing enter, will recursively
85 enter MODE 2 for that resource.
86 Pressing enter on 4 or typing 'q' will return to the previous screen.
87 Pressing BACKSPACE will get you to the INITIAL SCREENS with a longjmp.
88 Pressing '<' will get you to the HISTORY MODE.
89 Pressing 'r' on a red 5 get you to the UNROLL MODE.
90 Pressing 'm' on a function will get you to the POP-UP MODE
91 Pressing 'C' will run system("bash")
93 FUNCTION CODE
96 Pressing <space> on a function will show the function text as found in
97 the file which is known to include the function definition.
98 This means that, nccnav must be in the correct root directory
99 or paths should be absolute. The ncc option -ncfabs is rather useful.
101 Pressing 'v' on a function will show the function text with "vi"
102 (after extracting it from its file and saving it to a temporary
103 file), colorized with C syntax.
105 Note that external library functions, obviously have no file.
107 Also note that if a function reports to be defined in more than one
108 files, this will probably fail. This happens because ncc does
109 not distinguish different static functions with the same name.
110 They are considered the same thing and their resources are
111 mixed in nccnav. Currently, if nccnav detects more than one
112 files for a function it will issue a warning.
114 Pressing <space> or <enter> will get you to the previous screen if
115 you are using the internal source viewer. Otherwise, exit the
116 external application by it's custom way of doing so.
118 MORE CODE
121 Pressing <space> on a file in MODE 2 will display the entire file.
122 Pressing 'v' on a file in MODE 2 will *edit the original* file with vi
123 (":q\n" to exit)
125 Pressing <space> or 'v' on a structure will extract and show the
126 structure declaration text.
128 RECURSION DETECTOR
131 The recursion detector is by default enabled.
132 It can be disabled by pressing 'R' while in MODE 2. (it's supposed to be
133 expensive and may be confusing)
135 The recursion detector works in MODE 2 and if the current resource is a
136 function. In this case it will paint RED all the functions called by the
137 current function, which will eventually lead back to it by some way of
140 Pressing 'r' on one of the red ones will display one of the possible paths
141 through which recursion can happen. Currently there is no way to view
142 alternative paths.
144 In this mode, 'q' will get you back while enter will proceed ahead deeper
145 into MODE 2 for the selected resource.
147 POP-UP MODE
150 This is an alternative way to browse the call flow and is entered by
151 pressing 'm' on a function in MODE 2.
153 Pop-up menus are generated, where the top element is a function and
154 below it all the functions called by it. Movement is possible
155 with the UP/DOWN arrows.
157 <enter> or RIGHT will expand a new pop-up for the current function.
158 'q' or LEFT will close the current pop-up and activate the previous one.
159 SPACE is available to view the source code.
160 BACKSPACE will close all the popups and return to MODE 2.
162 Pressing '2' will enter MODE 2 for the current selected element.
163 In this case, HISTORY and BACKSPACE are set at this breakpoint.
165 HISTORY MODE
168 At any time you can press '<' and '>' to browse through all the previous
169 screens. <enter> on one of them will jump back to that screen. Any other
170 key will exit the HISTORY MODE.
172 WHAT TO DO IF YOU'RE STUCK
175 Nothing. Stay calm and do not panic.
176 Remember: The user is the only person responsible for any damages.
181 Except from hacking unknown projects, ncc together with valgrind are
182 an excellent debugging platform for discovering and fixing bugs in
183 zero time.
185 Happy hacking!