On Tuesday 21 October 2008 20:07:10 `VL wrote: > Hello, ALL. > > I recently started to actively program using C and found that tools like > ctags or cscope do not work properly for big projects. Quite ofthen they > can't find function or symbol definition. The problem here is that they > don't use full code parsing, but just some sort of regular expressions. > > I need a tool for automatic code exploration that can at least find > definition for every symbol without problems. If you know any - please > tell. > > Now, to gcc. It seems to me that existing and working compiler is an ideal > place to embedd such tool - since it already knows all the things required. > > I have one idea: i'm almost sure that inside gcc somewhere there is a place > (function i beleive) that is called each time during compilation when > definition of something (type, variable,function...) found and in this > place gcc has context information - source file and line where this > definition came from. So if i add something like printf("DEFINITION: > %s,%s,%d\n", info->object_type,info->src_file,info->line) into that place, > i will get information about every thing that compiler found. > > What i like more about this way of getting information about symbol > definition is that i get the only reference to that part of source that was > actually compiled. I.e. if there are a lot of #ifdef's, it's is hard to > know what part of code will be used. > > So, my questions is: > > 1) Is it possible ? Is there a single place where all information is easily > accessible ? 2) If yes - where is it and where can i find details about > internals of gcc? 3) Any good alternatives for cscope/ctags? It seemed to > me that > eclipse has some good framework, but it looks to be too much integrated > with it... > > Thank you!
Hi, wouldn't it be easier to just compile with debug symbols (-g) and then look into the symbol table or into the DWARF debug information? Both can be done with the tool objdump contained in the binutils (normally installed on each linux), and there are libraries for both tasks to read and use the information in own applications. You'll get symbol (functions/methods, arguments, variables) names, addresses, types, etc. Tim