Calltree ========= * rec separation for ELF objects, files, C++ classes ? * user supplied cost (corrections) with arbitrary cost types - as user request - as config option * trace followed conditionals DONE Should trace normal jumps, too! * Dump info for skipped functions * Add to header: - current Calltree options ("desc: Option:" ) DONE - ELF mapping info ("desc: Mapping:") - thread number if separate ("thread:") DONE - part number DONE - PID number DONE - trigger line moved ("desc: Trigger:") DONE * Symbol length arbitrary HALF DONE: extended to 4096 * Cache simulation optional DONE. optimizations ? * Config options per function DONE using prefix tree. * Bugs - For signal handlers, there's no "event counters at last dump". - Multithreaded progs with --dump-threads=no: Function active counter is NOT per thread! DONE - Rec.level independent from caller DONE - Multithreading (dump-threads) DONE - Skipped functions! DONE - Redirect JCC for skipped functions to get the calls in the annotated source DONE - cachegrind.out in cwd at program start WORKAROUND with --base option (no cwd() available) DONE in Valgrind CVS HEAD KCachegrind =========== Bugs: * Search breaks at start (see below: 1) * File/Open... always gives empty window (see below: 3) * Reload prints "Recursion detected", virtual cost types lost * Remove class name from Cycles (see below: 2) * Make "Parameter Removal" optional: Wrong for overloaded methods, but only one called (which one??!?) Wish * Context menu for ListView items: "Back" * "Copy" for ListViews: Plain Text into Clipboard * DnD for functions * DnD for TreeMap * Panel Focus * Config for cost corrections * Add/Diff Mode * Show real cost splitting of virtual cost in pixmap Done * Call Count Column in Flat Profile * Cycle Detection optionally Support for Cachegrind 0.3 * Loader: "bb=
": Specify address of next basic block This changes semantic of first number of cost line to addr offset * Loader: "ln=": Specify source line for next cost lines This is needed when "bb=" is used * Invoke "objdump" for assembler annotations * Group recursive invocations of same function (postfix "/") * Group invocations of same functions with different caller Postfix: "/" * Dock with BBs in the context of different functions * Window with loader info: Key/Value list for loaded parts [ * Loader: "mp= " ] Footnotes: 1) Search breaks at start Wrong group type set: Patch for "bool TopLevel::setGroupType(QString s)" gt = (_data) ? _data->costType(s) : TraceData::costType(s); + // only allow Function/Object/File/Class as grouptype + switch(gt) { + case TraceCost::Object: + case TraceCost::File: + case TraceCost::Class: + break; + default: + gt = TraceCost::Function; + } return setGroupType(gt); } 2) No Class names on cycles: In TraceFunction::prettyName(): + // cycle members + if (_cycle) { + if (_cycle != this) + res = QString("%1 ").arg(res).arg(_cycle->cycleNo()); + else + res = QString("").arg(_cycle->cycleNo()); + } 3) Load only opens empty window In TopLevel::loadTrace(QString file): // In new window + TopLevel* t = new TopLevel(); t->show(); + t->loadDelayed(file);