problems with 6.3.17

List of pet peeves in no particular order

  1. No easy way to switch between hex and decimal views. Before you could
    right click and select hex or decimal. The closest thing I could find is
    doing “.force_radix_output 1” and “.enable_long_status”. I would like this
    to be a menu item, or a check box under options.

  2. Right click now inserts text into the command buffer instead of popping
    up a menu asking what you would like to do (ie “Set breakpoint”, “Set
    current instruction pointer to here”, etc…") EVEN when it is not the
    currently active window (I can see it if it’s the active window and you
    right click in it, but I still expected the “copy, cut, paste” menu)

  3. Using the mouse scroll button scrolls the active window, not the window
    the mouse is over. Most other applications scroll the window the mouse is
    in, not the active window. I don’t know what the spec calls for but I would
    like to scroll the locals window without changing my command typing in the
    command window (ie trying to set a memory location and then having to scroll
    and look for it)

  4. Docking window hell. though once I get it set up like I want, it is
    fine, but I fight with it EVERY time I attach to a new debuggee target.
    'nuff said

  5. When a symbol file gets corrupt, there is no way of knowing this unless
    you do ‘.sym noisy’ (which took forever to lookup in the help, this should
    be a menu item as wrong symbols is the number one problem). If the files
    are corrupt (and you know they are because you say so in noisy mode), try re
    downloading or tell it to the developer. It took me forever to figure out
    why the symbols for ntoskrnl were not loading only on one memory dump.

  6. Since you know a NTSTATUS is a NTSTATUS, how about displaying the
    symbolic name next to it? I keep having to open ntstatus.h (or error
    lookup) to get the text name which usually tells me why it failed. You only
    have to do for the common ones such as the ones in ntstatus.h and
    ntiologc.h. ie:
    Status NTSTATUS 0xc0000001 STATUS_UNSUCCESSFUL

  7. This may be a little harder, but when single stepping it would be nice if
    it didn’t clutter my command window with useless assembly (as its useless
    with out the registers at the time)

  8. For kernel debugging it would be nice if there was some way to determine
    IRQL. !irql does not always work. !pcr displays it but I have to look it
    up every time. Maybe add it to the !thread command?

  9. When displaying thread information, it would be nice to display if apc’s
    are enabled (kernel and special) and any apc’s that are waiting for it (ie
    the apc queue). If there is a way to do this even with esoteric command
    line now, I would like to know.

  10. Conditional breakpoints are really slow. I don’t know if there is
    anything you can do on this.

  11. !irpfind is really slow or doesn’t work. I don’t know why, but
    sometimes when I do !irpfind it says scanning all of paged, nonpaged memory,
    and then finishes (several hours later) and NO irps are displayed, even
    though I can see outstanding irps in the !thread command. Happens mostly
    when verifier is on.

  12. Minidumps. If I get a minidump from a customer windbg NEVER finds the
    symbols for it. I have to call the customer back and have them email me the
    ntoskrnl.exe and ntdll.dll files. Usually this is because they are running
    a hotfix and don’t have the standard files. I maintain a list of these but
    when the customer is bsod it’s a pain. If you know the guid/checksum, why
    cant the symbol server provide these files?

That’s all I can think of for now

Thanks,
Rob

Hi,

All of your points here are legit. Here are some random things that I’ve
picked up (all while reciting my serenity prayer) that might help you out in
the short term:

  1. Right click now inserts text into the command buffer instead of popping
    up a menu asking what you would like to do (ie “Set breakpoint”, “Set
    current instruction pointer to here”, etc…") EVEN when it is not the
    currently active window (I can see it if it’s the active window and you
    right click in it, but I still expected the “copy, cut, paste” menu)

You can get to some of these back (notably the “set instruction pointer”) by
right clicking the title bar of the source window or clicking the funky box
thing next to the X. It’s definitely more cumbersome than just right
clicking the source window though.

  1. Since you know a NTSTATUS is a NTSTATUS, how about displaying the
    symbolic name next to it? I keep having to open ntstatus.h (or error
    lookup) to get the text name which usually tells me why it failed. You
    only
    have to do for the common ones such as the ones in ntstatus.h and
    ntiologc.h. ie:
    Status NTSTATUS 0xc0000001 STATUS_UNSUCCESSFUL

!error will tell you this, which at least saves you from having to leave
WinDBG.

  1. When displaying thread information, it would be nice to display if apc’s
    are enabled (kernel and special) and any apc’s that are waiting for it (ie
    the apc queue). If there is a way to do this even with esoteric command
    line now, I would like to know.

On XP the KTHREAD contains a field that indicates if kernel APCs are
disabled, and on Server 2003 the KTHREAD has fields for both special kernel
and kernel APCs, so you can use the DT command to find out if any of these
are disabled. APC rules have changed in Server 2003, so read this article if
you haven’t yet http://www.osronline.com/article.cfm?id=283.

If you don’t want to manually walk the APC queue, on XP and later the !apc
command will take a process or thread parameter and dump it for you
(according to the docs at least).

-scott


Scott Noone
Software Engineer
OSR Open Systems Resources, Inc.
http://www.osronline.com