Jeff Duntemann's Contrapositive Diary Rotating Header Image

May 19th, 2009:

Cranky Insight

I haven’t posted for eight days, and people are starting to send me notes asking if I’m all right. I am, though I’m not sleeping well and don’t have my usual energy. Whatever time and oomph I haven’t had to devote to family issues here I’ve been pouring into the book. I’m now 161,000 words in, of about 180,000 total, so the end really is in sight–but seeing the end isn’t enough. I still have to grind through the material.

I will take an opportunity to gripe a little, this time about the Insight GUI shipped for and with the gdb debugger. Insight isn’t perfect, and parts of it are excellent–especially compared to the molasses marathon of using naked gdb in a console, God help us–but a good deal of it is simply awful. I chose Insight as the example debugging tool for my third edition, in part because it’s technically a component of gdb and not an add-on. However, it comes closer to the truth to say that after I interviewed Linux debuggers for use with C-free assembly code, Insight was the last man standing. Most debuggers assume that they’ll be dealing with clib and C source code, and don’t know how to load a C-free executable, even if contains valid STABS or DWARF debug info. At least Insight allows assembly language source debugging in a window.

As grateful as I am for it, certain things about Insight make me nuts. Good example: The Memory view. This is an ordinary hexdump-style memory display, with only two means of navigation. You can scroll the dump up or down for 16 bytes by clicking the arrows, or you can type in a new address in an entry field. And I mean type–the GUI does not recognize paste from the clipboard. If you want to fill the field with a new address, the keyboard is all you get. Worse, moving up- or down-memory by clicking the arrow buttons takes one to three seconds to refresh the window. (This is not an exaggeration. I timed it.) An operation like that, on a 2.8 GHz machine, should be instantaneous. How about buttons to take us to the address currently in ESP or EIP? Or sheesh, maybe implement paste from the clipboard to the address entry field!

I’m tempted to blame it on the fact that Insight is written in Tcl/Tk, but I’ve actually used Tcl/Tk and I don’t think it’s inherently that slow. The only guess I would hazard is that because working in naked gdb is horrendously ponderous but still nearly universal in the Linux world, the guys who wrote Insight didn’t know any better, and thought that their results were transcendently wonderful. Not true. One click is often (if not always) worth twenty or more frantic keystrokes. To me, that’s a win. You command-line people should get out more.