TODO/Wishlist Items
===================

Support for KCachegrind in Cachegrind
-------------------------------------

BUGS:
- (PUSH/RET) trapping is broken by concept. Trap all jumps!
- Calls from inlined functions are wrong!
 
WISHS:
- store more details of calltree
  - for every function call: executed from shared lib
    (Not needed, if function names are unique in whole app)
  - adaptive call chain context (Really needed ? MUCH Data!)
- dump at
  - breakpoints
  - watchpoints (with data tracing!)
  - every xxx BBs (DONE)
- dump around
  - function invocation (DONE)
  - KAction event
  - DCOP event

- data accesses from (instr address/count)
  stack:   -> (function, stackframe-offset)
  dynamic: -> (mem region start, [type], offset)
              type can be get when a constructor is called for region
  static:  -> (mem region start, type, offset)

* Generate full instr/data access trace for offline analysis.


KCachegrind
-----------

BUGS:
 - Faster invalidation for Part activate changes...
 - TreeMap LevelSkipping!, Costs
 - Doku!


Layout:
* 1/2/3/4 vertical/horizontal FunctionInfos
  with Shift/Wraparound selection mode
* Inside each FunctionInfo different Layouts
 - tabbed layout
 - top: info, bottom left: calls/coverage, bottom right: graph/source
* Long/short info tab

General:
* Selected Item can be a object/file/class/function/line
* Color Rect for object                                               DONE
* Function Caller/Calling Coverage Lists !!!                          DONE?
* Configuration Dlg
 - Global                                                             DONE
 - Local
 - Try to reload source after config. (DONE)
* Selection of active Profiling Part  (DONE)
* Visualisation for Parts (with Selection):
 - % of runtime in selected function group (e.g. object/file/class)   DONE
 - % of runtime sum for a selected function (with calleds inside)     DONE
* Session Management

Selection List:
* 2 Modes: Flat and Hierarchy                                         DONE
* Name filter                                                         DONE

Stack List:
* Show Percentage / Calls                                             DONE

Source:
* Additional directories to search for source code                    DONE
  * Dir + recursive dirs


WISHS:
* Support for Data tracing
  Which variables are touched how often from which function?
  - Some graphical visualisation...

* GCC -pg (gmon.out) as Profiling Backend


=====================

Misc things before 1.0:

- part costs in trace overview differ from call list costs!

- Manual function color configuration (+ function in group)
  With list view?

- Configuration of Symbol count/length in tooltip/popups

- "Function Selection" => "Flat profile" (DONE)

- "Trace Selection" => "Trace Part Overview" (DONE)
  Modes "Group partitioning"/"Cumulative ..." (DONE)

- Tip for debug info on assembler level (DONE)

- Rename Sum/Pure into Cumulative/Self (DONE)

- Show Trace Selection only with >1 traces. (DONE)

- Explain recursive call (DONE)

- Hide call stack on default (DONE)
  do 2 actions up/down most probable call stack
  with delayed popdown instead

- Separate Colors for functions in function mode     (DONE)
  (Still some shades for function in same group...)

- TreeMap: 
  - Option Border Width (can be 0!)
  - Skip/Reduce border drawing if border space > self cost
  - Additial list widget
    Show rectangle path under mouse cursor + Value
    (in CallGraph with ">>" button)
      OR
    Change "current" on mouse hovering (with value!)
  - keyboard focus border (dashed) (DONE)
  - redrawing on showEvent (DONE)
  - option to limit depth drawing
    - max depth value
    - to a given function (together with Coverage selection)
  - no ordering on cost value ?

- Docu !

- Coverage tab: Graphical pixmap in list: partitioning among depths

- Info tab:
  - Trace part list (with calls in this part) (DONE)
  - Group type list (DONE, BUT DISCARDED: NOT GOOD!!)  

- Dockables. Title bar squashed. Add "Close" Button (DONE)

- Rename "Is Calling" into "Calls to" (or "Callee") (DONE)

- Function selection: Add calls and cost per call ?

- Beautify treemap tooltips (?)


Wishlist:
=========

- Unknown Function Renaming using Rules:
  - Rename to "xxx" when called from / calling function "yyy"
    E.g. Rename to "main" when calling Q/KApplication
  - Rename to "Child/X of Y" ....
  - Rename to Function X when only called from X...
  - Rename to Function X when is called "Stub for X"

- Run Cachegrind from whitin GUI ?
