BugSeeker: A Fine Piece of Work from Karmira
- By Richard Wiener, Dave Neuendorf, Bob Neuendorf
"What this industry needs," to paraphrase former U.S. Vice President Thomas Marshall, "is a good Java debugger."1
Debuggers that we've used in the past work fine on relatively small and simple projects. When we tried to use them on our two current projects for different clients, we found some key deficiencies: either configuration became so complex that we gave up, or performance of the application being debugged (hereinafter referred to as the debugee
) slowed beyond the point of usefulness. Enter Karmira's BugSeeker for Java 2 (version 1.0.1), the subject of this brief review.
BugSeeker is a Java application, independent of any IDE, that specializes in debugging Java code. To use it, one creates and configures a project, then runs the debugee in the debugging environment. A GUI is provided for the various control functions that one expects to find in a debugger.
Creating and setting the properties of a BugSeeker project was the first place where we expected to have trouble, but was the first source of our delight with this product. As soon as we entered the paths to our source and class files, it figured out all the details of the multitudinous jar files we needed. There was simply no sign of the configuration nightmares we had experienced with competing debuggers. BugSeeker can be customized extensively through an intuitive GUI (with too many options to cover here) but is quite usable with its default settings.
Contributing to our positive experience with configuration was the fact that we were using JDK 1.3, which has Sun Microsystems Inc.'s JPDA debugging facilities built in. Earlier JDKs do not, so users of those versions will have to download and install this software before using BugSeeker. If you are using JDK 1.2, then you can also download Sun's JPDA software to work with BugSeeker, which was tested in this review and showed no difference.
Performance of the debugee was the other problem that we were hoping to solve by using BugSeeker. On both of our complex projects (one of which involves over 2,000 classes stored in over 100 directories), other debuggers took several minutes to execute one line of code rendering those products completely unusable. When we first fired up BugSeeker, we found that debugee performance was slow but marginally usable. Once we got to a breakpoint, single stepping was quite fast but it took a pretty long time to get there. Then we took Karmira's advice and set up BugSeeker to use the -classic command line argument: now our code was running in the debugger at almost the same speed as outside the debugging environment. The default VM for Java 2 (Sun's Java HotSpot VM) is apparently inappropriate for debugging. The -classic switch substitutes a more debugger-friendly VM.
Other wins for BugSeeker include its numerous ways of examining and changing the state of the debugee: Variables, watch expressions, the call stack, threads, etc., can all be monitored easily. Breakpoints can be triggered by specific lines of code, by an execution path entering code in a given class, or by the throwing of a given exception. It is easy to specify an editor to be invoked from the program, set to edit the line of code at which the debugger is currently looking. BugSeeker's GUI is a work of art—one of the finest examples of Java programming that we've seen.
Shortcomings include the lack of a search facility or reporting features. The program seems to slow down after several hours of use, but shutting it down and restarting it restores its performance. It was possible to crash BugSeeker occasionally while watching thread creation in the debugee of one of the projects. In the other project, there is an intermittent problem with the debugee hanging on an attempt to create an icon from a file when running under the debugger. Console pane's scrollbars do not show up unless you drag the pane slightly to refresh it.
BugSeeker is a beautiful product that does its creator, Karmira Inc., great credit. It is the only debugger we have found that is usable with our large Java projects. Developers would do well to consider trying an evaluation copy available at Karmira's Web site (http://www.karmira.com).
- See http:gi.grolier.com/presidents/ea/vp/vpmarsh.html.