Flow charts,
control flow, and
function pointers

Low Level Program Detail

Imagix Corp

  

As you move into the detailed analysis of your software's control logic, you may find that you need a more granular understanding than is provided through a basic call graph. With Imagix 4D, you can continue to work within the tool, gaining the benefits of automation and visualization, as you pursue your analysis to a deeper level.

Imagix 4D's support of this low-level, highly granular analysis starts with data collection. Its source code analyzer collects such detailed data as the internal program logic of functions. A series of views and displays then make this information available to you, so that you can achieve rapid, accurate comprehension of your code.


Home
About Imagix
Products
Overview
Visualization
UML Diagrams
Control Flow
Metrics
Quality Checks
HTML Docs
View Sample
Support
Downloads
Related Sites

control flow analysis graph Control Flow Analysis -- In Imagix 4D's Graph windows, Control Flow mode provides the next level of detail beyond a call graph. It becomes very useful when you need to understand the sequence and conditionality of the function calls and variable usage in your code.

Control Flow mode shows you the order in which function calls are made, and in which variables are set and read. You can easily see whether a call is always made, or whether it just occurs under certain conditions. As a result, you're able to accurately understand the dependencies in the complex, sequence critical areas of your code. This understanding makes you more productive and less error-prone as you work with your code.

reverse engineered flow chart Flow Charts -- Imagix 4D's Flow Charts provide an even finer level of detail. The Flow Chart diagrams the complete control flow, or program logic, occurring inside individual functions in your software. For complex functions, which may consist of hundreds of lines of source code, a Flow Chart can help you more quickly grasp the internal logic of the routine, sorting through elaborate, nested contructs of if conditions, switch statements, and do loops.

The Flow Charts is tightly linked to the File Editors. You're able to see where a specific line of code fits in the overall logic flow of a function, or see what a particular loop is actually doing. By being able to see the source code in combination with the logic of the function, you're able to understand and modify the function much more quickly and accurately.

graph of function pointer use Function Pointer Support -- One example of how the Imagix 4D source code analyzer extends beyond normal parsing involves its handling of function pointers. As your code is analyzed, any variable that gets set with data containing function names is marked as a function pointer. All the functions in its static initializer are recorded as being (potentially) called from this function pointer. If a function makes a call through the function pointer, then the function is shown as calling the function pointer variable. So you can see the potential call tree by following the call relationship from the function to the function pointer variable and then to all the functions potentially being assigned to this variable. The result is that you end up with a more complete, accurate understanding of what is occuring in your software.