Follow on to Raymond’s post on Dr. Watson

Raymond’s post on the history of Dr. Watson is right on the money. Some additional info, since I have some somewhat close personal connection.

When Dr. Watson first became available, I loved what it did. I was working at Borland at the time, and had just made the jump from Tech Support to development.

Unfortunately, the original Dr. Watson had a couple of serious issues:

1) It couldn’t deal with symbol names over 32 characters, which was a problem when using Borland’s C++ compiler and mangled names

2) It displayed the logical segment portion of addresses (e.g. 12:0042) in decimal rather than hex. This drove me nuts, as every other tool used hex numbering for segment values.

As luck would have it, I knew the original author of Dr. Watson (Don Corbitt) prior to his coming to Microsoft. He was an old TeamB member. I contacted Don and he conceded that my issues were valid, but that he couldn’t do much about them.

(In a sad post-script, Don died several years later in a private plane crash. RIP.)

Back to the story… Knowing the Dr. Watson was so cool, but not quite usable enough for me, I set out to write my own version, originally called “Dr. Frank”. Dr. Frank had a whole set of additional tools that did cool things above and beyond what Dr. Watson did at the time. These days the concepts I worked with are known as crash dumps, and we analyze them with debuggers. Back then it was all command line tools and text files. (Multiscope’s debugger was still very new on the scene.)

Inside Borland, the powers that be liked the idea of Dr. Frank, and asked to ship it as part of the Borland C++ 3.1. I got a paltry some of money (in retrospect), but at the time I was thrilled to have actual shipping code in a cool new product. The bigger indignity is that they insisted on renaming it to the much lamer sounding “WinSpector“.


Comments (5)

  1. Was WinSpector also shipped with TurboPascal for Windows ??? The icons in the screenshot at seem familiar…

  2. Matt Pietrek says:

    Yep, it did ship with Turbo Pascal, as I recall

  3. Dan says:

    Dr. Watson in Windows 2000 had a serious bug. If an administrator hadn’t run the application, the next time a regular user was logged on and an AV occurred, Dr. Watson wouldn’t work. The most that would happen is a log would be created in the root of the system drive. No user mode dump was created.

    Dr. Watson would attempt to read configuration data from the HKLMSoftwareMicrosoft registry key. It would request KEY_CREATE_SUB_KEY access which would fail. It would do this because if the data wasn’t there, it would attempt to write it. After the failure, Dr. Watson would continue to run but without any configuration data. It was later fixed to use a set of default values if none existed or the key couldn’t be written to. The fix first went into Service Pack 1.

  4. R Samuel Klatchko says:

    I am primarily a Unix developer and would like to understand how core files compare to Dr Watson/Dr Frank dumps. Effectively a core file is a snapshot of the address space when the program crashes. Debuggers can load up the core and you can examine anything in the address space (stack, heap, whatever).

    Are Dr Watson/Dr Frank dumps the same thing or are they preselected pieces of data from the crash?