Code Medic: Changes from previous versions
Please submit all suggestions and bugs via github.
7.1.4
- Fixed regression for Ctrl/Meta shortcuts on line numbers.
7.1.3
- Fixed regression so Preferences menu in source windows works again.
- Added Windows key shortcuts to most menu items.
7.0.1
- Fixed rare crash when using lldb.
- Fixed regression so long menus scroll smoothly again.
7.0
- Fixed bugs so it works again with gdb.
- Added styling for D & Go.
- Upgraded to universal ctags.
- Version increased to match Code Cruader.
5.0
- Added options to enable or disable all breakpoints in the Breakpoints window.
- Correctly displays all Unicode characters.
- Window layouts adapt to translated text widths and font size differences.
- Fixed bug so breakpoints are now displayed in disassembly windows.
- Fixed bug in displaying instruction addresses in disassembly windows.
4.2.2
4.2.1
- Fixed bug so the execution point indicator updates after "set execution point."
- Various stability fixes for lldb.
4.2
- Window layouts adapt to translated text widths and font size differences.
- Inverted order of items on Command Line history menu, since the menu is normally at the bottom of the screen.
- Finally saves Search Text Dialog configuration, so it preserves \"Stay open\" and \"Retain focus\" settings.
4.1
- Enabled core file debugging for lldb.
- File List window is now populated when using lldb.
- Fixed display of variables to exclude class names displayed in the hierarchy.
- Added "Display as C string" option because lldb does not automatically display contents of strings.
- Enabled display of negative integers in different bases.
4.0
- Added support for lldb.
- Fixed Assembly windows so breakpoints are correctly displayed and all the available actions work correctly.
3.3.4
- Fixed bug on OS X that caused all requests for source files to open the file with
main()
.
3.3.3
- Fixed bug causing About dialog to hang on Linux.
3.3.2
- Fixed parser to understand wrapped container classes.
- Updated to work with standard gdb on Mavericks, since OS X now includes lldb instead.
- Changed keyboard shortcuts for switching windows in a dock from Page up/down to Ctrl-page up/down.
3.3.1
- Updated variable parser to accept completely blank value.
3.3
- Enabled "Examine memory" and "Disassemble memory" items on Debug menu. Both now display a modeless window for examining memory at an arbitrary expression in several ways: hex dump, character dump, or assembly code.
- Added "Disassemble function" item to Debug menu. This displays the assembly code for the selected function name.
- Double-clicking on the function name or address in the Breakpoints window displays the assembly code for the function.
3.2
- Breakpoints window displays breakpoint, watchpoints, and catchpoints.
- Fixed parser to understand updated output for std::list.
3.1.1
- Work around for strange X11 behavior that could cause Code Crusader to hang when run for the first time.
3.1
Debugging
- Updated breakpoint parsing to work with gdb 7.1.
- Added menu items for backward execution.
- Fixed bug so setting breakpoints works reliably on OS X.
- Fixed bug so run after quitting attached process works correctly.
Miscellaneous
- Anti-alised text.
- Fixed window placement issues on OS X.
3.0.1
- Fixed bug to avoid losing program output.
- Updated to display contents of reference variables in Local Variables window when running gdb 7.
- Fixed bug so Kill works on OS X.
- Choosing a program and running it is now much faster.
3.0
Major changes
- Refactored engine to allow different back ends. Added support for Xdebug 2.0, a remote debugger for PHP. When you choose a program to debug, Code Medic will automatically switch to the appropriate back end. To force a particular back end, use the command line options
--gdb
and --xdebug
.
- Rewrote gdb engine to use the GDB/MI interface. Code Medic now requires gdb 6.0 or newer.
- Added "Plot as 1D array" menu item in Source and Variables windows. This plots the selected variable as a 1D array. In the Plot window, you can define additional curves, even plotting a function of one array vs. a function of another array.
- Window docking finally works with all window managers.
Debugging
- Updated to work with gdb 7.
- Now recognizes when the program being debugged has changed and reloads the file list and all open source windows.
- "Run program" automatically asks you to choose a program if you haven't already done so. You no longer have to perform two separate steps.
- Fixed crash when opening certain types of nodes in any Variables window.
- Fixed issues to allow Code Medic to work with gdb when debugging Java compiled with gcj. It's still useless, however, because gdb doesn't understand how to display the values of Java variables.
- Cleaned up Files window to eliminate duplicates.
Source window
- Fixes to work with files where lines are so long that text is forced to wrap.
Variables and Array windows
- Fixed variable parser to recognize template information within enum values, e.g., MyTemplate::blue.
- Enabled "Display as 1D array" and "Display as 2D array" in 2D Array windows.
Miscellaneous
- Added awareness of Xinerama, so it works better with 2 monitors.
- Added
--quit
option which acts just like the "Quit" item on the File menu.
- Added support for vi and emacs embedded configuration options: tab-width for emacs and tabstop for vi.
- Ctrl-Page-Up/Down cycles through docked windows in a pane.
- Added "Desktop" button in all Choose File and Save File dialogs.
- Automatically quits if you close all windows. (Finally!)
- Re-ordered menus in all windows so Edit always follows File.
- Mouse wheel now scrolls smaller increments on OS X.
- Added support for horizontal scrolling. This is especially useful on Macintosh trackpads that support gestures.
2.1.2
- Updated to work with idiosyncrasies of the OS X version of gdb: recognizes when a core file has been loaded.
2.1.1
Debugging
- Added "Load configuration..." and "Save configuration..." items to File menu in Current Source window.
- Updated to work with idiosyncrasies of the OS X version of gdb: recognizes when a binary has been loaded.
Miscellaneous
- Fixed bug so window docks cannot be shrunk below a safe, minimum size. Some windows may still pop out of the dock because they no longer fit, but the program will not crash.
2.1.0
Debugging
- Added "Load configuration..." and "Save configuration..." items to File menu in Command Line window. This saves the breakpoints and displayed variables so the debugging session can be quickly restored later.
- On Debug menu, changed shortcut for "Step into" to Meta-J, added shortcut Meta-K for "Finish subroutine," Meta-Shift-N for "Continue execution," and Ctrl-X for "Remove all breakpoints."
- Updated to work with gdb 6.x.
- Fixed gdb crash recovery mechanism to restore breakpoint conditions.
- Fixed Stack Trace parser to ignore modifiers such as "const" in function prototypes.
- Fixed bug in Stack Trace parser that caused occasional crashes when parsing string data.
- Fixed Variables parser to ignore warnings printed by gdb.
- Fixed Files window to handle paths relative to the location of the binary.
- Fixed bug in Files window that would miss one source file from "info sources."
- Current Source window is raised when breakpoint is hit.
- Regular expression search and replace now uses Perl syntax, thanks to the PCRE package.
Miscellaneous
- "Dock all windows in default configuration" is now active on docktab menu.
- Docking configuration is now saved.
- Added File menu to all windows.
- If menus do not fit on the menu bar, they are available in an overflow menu.
- A menu will never again cover the menu bar when it is opened. This prevents menu items from being accidentally selected with a click on the menu bar.
2.0.2
Debugging
- Updated Stack Trace window to handle new gdb format that includes function prototypes.
- Fixed Command Line window to not lose current command if user uses arrow keys to scroll up the history and then back down.
Miscellaneous
- Now installs correctly into the Start Menu in Gnome 2.
- Fixed bug that occasionally caused a window to remain blank after switching to its desktop in Gnome 2.
- Fixed scrolltab shortcuts to be Meta-1..9 when Windows-style menu shortcuts are used.
2.0.1
Debugging
- Custom commands can now include ##. This is replaced by the currently selected text, if any.
- Custom commands are now available all the time, not only when a program is being debugged.
Miscellaneous
- If gdb crashes, you can now choose not to restart it automatically.
- Fixed bug to avoid crash when restarting gdb after it crashes.
- Fixed bug in Choose File and Save File dialogs so they remember the "Show hidden files" setting.
- Fixed bug so menu shortcuts which require the Shift key work even if Caps Lock is on.
2.0.0
Major changes
- Added support for threads.
- Improved support for breakpoints, including conditional breakpoints, commands to execute when a breakpoint is hit, number of times to ignore a breakpoint, temporary breakpoints, and multiple breakpoints on a single line.
- Expressions and values in the Variables window are editable.
- Array window allows an arbitrary expression to be entered with $i as a placeholder for the array index.
- Two dimensional arrays can now be displayed.
- Code Medic can now debug Fortran programs compiled with g77 and Java programs compiled with gcj.
- Local Variables window now works like the Variables window.
Debugging
- Core file can be opened without first selecting a program. This feature is available on the command line via the -c option.
- Updates breakpoints when "clear" is used on the command line.
- Automatically restarts the debugger if it crashes.
- Fixed bug so Code Medic reliably beeps when program finishes or crashes.
- When a core dump that was caused by an assert is opened, Code Medic selects the frame in which the assert fired.
- It is no longer necessary to choose the program binary before attaching to a running process.
- As a stop-gap until somebody can find a better solution, Code Medic will ask you to select the PID of the process being debugged if it cannot be obtained automatically. This is mainly for those using threads, because gdb prints the thread information instead of the process information.
- Fixed bug so breakpoints can now be set in files that were compiled via a symbolic link.
Source window
- Added right-click context menu to line number display.
- Ctrl-click on a line number resets the point of execution to that line number.
- If text is selected, "Open this file in editor" opens the file to the selection, not to the current point of execution.
- Added Drag-and-Drop source to the left of the file name. Double clicking on the icon displays the file in the file manager of your choice.
- Removed Line button since it was only wasting space. Use the item on the Edit menu instead.
- "Current line" marker is now consistently removed when the program is running.
- Automatically displays new contents of file when program is reloaded.
Files window
- Updates when core file is loaded or gdb attaches to a process.
- Fixed bug so it now can find header files that do not contain inline code.
Variables and Array windows
- Updates displayed value when "set" is used on command line to change values.
- Edit menu works with selected items.
- Unsigned integers can be displayed in base 2, 8, 10, or 16.
- Improved robustness of the parser so it is much less likely to get confused and have to resort to displaying the raw output from gdb.
- When debugging C++ code, this is displayed in the Local Variables window.
- Added "Display as 1D array" menu item to Actions menu in Array windows.
- Updating of displayed values is much faster.
Miscellaneous
- Added "Mac/Win/X emulation..." item to Preferences menu to provide option to choose between Macintosh and Windows style menu shortcuts. (This assumes that you have not changed Meta to Ctrl in the menu_strings file.)
- Renamed "Restart gdb" item to "Restart debugger" and moved it to Debug menu.
- Merged "Change gdb binary..." item on File menu into "Preferences..." item on Preferences menu. You can now specify an entire command instead of merely choosing a binary.
- Added Windows menu to all menu bars. The list of open source files is alphabetized to make it useful.
- Tab completion works in all path and file name input fields.
- You can change the menu font by creating ~/.jx/menu_font. The first line in the file must be the font name. The second line in the file must be the font size.
- Optimized all windows so they only update if they are visible and not iconified.
- Fixed bug in Stack window so Help menu works.
- Fixed bug in connection to gdb to avoid locking up in obscure cases.
- Removed "Close" button from menu bars since all reasonable window managers provide their own Close button in the title bar.
1.1.3
- Fixed bug so Meta key works correctly on Mandrake Linux.
1.1.2
- Fixed bug so Ctrl-K in command line input area won't cause crash if text is selected.
1.1.1
- Fixed bug so closing source windows no longer causes a crash later on.
1.1.0
Major changes
- You can now define your own debug commands. They are displayed on the bottom of the Debug menu. These commands can be placed in the toolbar.
- Added Functions menu that lists all of the functions defined in the current source file. This requires Exuberant
ctags
version 5.0.
- Added a configurable button toolbar.
- Added -b command line option to allow setting breakpoints without having to open the source file in a window. Check the Code Crusader on-line help for information on how to use this feature effectively.
- All of the Code Crusader editor preferences are now honored, so once you set up Code Crusader the way you want it, Code Medic will look the same. This is especially important for syntax highlighting.
Debugging commands
- Added \"Reload binary\" to Debug menu.
- Ctrl-C and Meta-period are both shortcuts for \"Pause execution.\" This keeps both Windows and Macintosh users happy.
Source window
- Added \"Balance closest grouping symbols\" and \"Go to line...\" to Search menu.
- Moved \"Find current line\" from File menu to Search menu. For consistency with \"Go to line...\", renamed it to \"Go to current line\" and changed the shortcut to Meta-<.
- Middle-double-click is now a shortcut to display a variable in the Variables window. This is faster than \"double click, Meta-D\".
Miscellaneous
- Dramatically reduced startup time by eliminating need to verify the existence of all source files.
- Fixed hierarchical menus. It now stays open as long as you are moving the mouse towards it, regardless of what the mouse passes over on the way.
- Added icons for all singleton windows.
- Removed \"Save window size\" item from all singleton windows. They now simply remember their last position without having to be told.
- Fixed Array window so \"Save window size\" saves preference for itself, not for Variables window.
- Variables, Stack Trace, etc. no longer close when you close the Command Line window.
1.0.5
- Fixed a bug in the Local Variables window.
1.0.4
1.0.3
- Fixed a bug that caused a crash in the raw memory viewer.
1.0.2
- Added an Array window for displaying arrays.
- Rewrote the variable parser to improve reliability.
- The Variables window now displays invalid variables in light gray.
- The Variables window now displays in blue variables whose values have changed.
- You can now attach to a running process for debugging.
- The command line input field now supports completion.
0.6.1
- Primarily a fix to allow Solaris users to compile the source.
- There is preliminary array support from the Variables window.
0.6.0
- Added a Stack Trace window.
- Meta-clicking on a source line executes the program until it reaches that line.
- Fixed a bug in the Local Variables window (which needs to be completely redone anyway).
- The Variables window now supports arbitrary expressions.
0.5.0