KDEV4 Debugger: - Launch framework - On fly launch types -- "dbus call to connect to a given app" - Advanced data visualization - Customizable by the user - Assembler display that's good - Hex display that's good - Register display that is good. - Debugger scripts? Remembering and replaying a set of commands? - Debugger as a visualizer tool? TODO: - Check gdb version at startup. - P1: - Breakpoints duplicated on editing. - Global radix - Hiding of static members. - No horizonal scrollbar in the variables widget. - Debugging optimized binaries - Debugged application somtimes not killed. - Fix moving breakpoints on editing files - Pressing tab in memory range dialog modified the edited file. - Testing stepping into code for which gdb can't find the file or fullname. Test stepping (or stepi) into undebuggable code. - Test files without debug info - Reconsider fixed font in variable widget - Investigate 'stop on shlib load breaking next" on Dario's project. - Incoming bug reports: - Check core files usage. - Fix remote target dialog, which is confusing and requires to specify tree scripts! - Big projects - Add support for other special types (STL) - Breakpoints - Add shortcuts to context menu. - Add icons - Status display column is just ugly - Handle "out of breakpoints" message. - Check that changing breakpoint when program is running works sanely. Need to either disable breakpoints widget when debugger is busy, or stop debugger when we add new breakpoint. - Implement gdb -> KDevelop breakpoint addition for all existing breakpoint types. - For function breakpoints, the 'file' property of breakpoint from gdb is not a fullname (gdb 6.4), so we don't find the file. - For function breakpoints with gdb CVS, clicking on marker corresponding to function breakpoint does not clear it, but adds a new one. - "Immediately leave function" breakpoint type. - Watchpoints redux: - Fix status display for watchpoints - Test loading of read watchpoints from session file. - Change "toogle watchpoint" into checkbox. - "Read watchpoint triggered" message disappears too soon. - Fix up the mess with relative vs. full names of files for breakpoints. UI cleanup: - The dialog box on watchpoint hit draws slowly initially. - Cntrl-Enter for "add watch". - Close all opened thread when opening other? - The dialog box shown in MI errors is ugly. Often, it contains names of internal gdb functions, or no interest to outsiders. - Should strip formatting when copying from gdb output window. Console command interaction: - Handle "Program exited" messages from CLI "continue". Code cleanup: - Rename FileLine to Code. - Kill raw char* manipulation. - Fix hardcoded color in framestack widget - Kill 'trimmableItem'. Minor tweaks: - Need some "scope" for error reporting. Say, we can try to set invalid breakpoint condition from session file, on debugger startup. Need to produce message like: "Error detected when setting condition for breakpoint 1", not a pretty opaque error we get now. - Highlight type changes in variable widget - Highlight composite types changes? - Test that modifying breakpoint while application is running works. - If remembered expresion includes dereferences pointer as a child, that child is still updated as we step. - Error in 'finish' command (e.g. on the outer frame) hides the current line indicator. - Should disable the 'finish' command on the outer frame. Optimizations: - If we're in some function and looked at frame 0 and frame 1, and then run "finish", we need to reuse VarFrameRoot for previous frame 1, which now became frame 0, no need to recreate it. Generally, need to preserve open/closed state of all variables for all scopes. BUGS/ISSUES found: - "set edit off" breaks MI - no stop reason for stop on shared library load - using "interpreter mi -whatever" when already in MI mode causes gdb to output two "^done" messages and it confuses us. - No support for "character" format in -data-evaluate-expression or -var-set-format - Some of the -stack* command operate on current frame unless one is specified, but -stack-list-arguments will print all frames. - Output of -thread-list-ids uses the following syntax {thread-id="1",thread-id="2"} which is neither tuple nor list. - Pending breakpoits broken in MI. - Varobj broken: - When entering new scope, we need to issue -stack-list-locals to get names of new varaibles in that scope. - When stopping inside undebuggable code (say, on watchpoint hit), -file-list-exec-source-file reports the last valid source file. - It's not possible to find if intefiour is running or not. Advantages of MI - The information is easier to extract. - For watchpoint, getting the old and new value of watched expression for display is trivial. For CLI, this is tricky and not done in current code.