BUG: Win32 SDK Version 3.5 Bug List - WinDbg Debugger

Last reviewed: November 29, 1994
Article ID: Q122681
The information in this article applies to:
  • Microsoft Win32 Software Development Kit (SDK), version 3.5

SUMMARY

The following is a list of bugs in the WinDbg debugger that were known at the time of the release of the Win32 SDK version 3.5.

MORE INFORMATION

  • Enter rgbGlobal, s in watch window (note: rgbGlobal is defined as a character array). The variable is displayed as a character string and an array that can be expanded. When expanding the array, the value of each element is "CAN0026: Error: bad format string."
  • REP and REPE are the same prefix codes. REPE is to be used for string comparisons and REP for all other instructions. WinDbg always uses REP.
  • Type information defined in a DLL is not available when the current context is another DLL or an EXE.
  • Breakpoint message classes do not match class list in SPY.
  • C++ expresssion evaluator doesn't handle default function arguments. This is because the compiler does not include them in the debug information.
  • Locals window updates on radix change.
  • Evaluation of a function with breakpoints returns an incomplete result.
  • The Memory Window can't be scrolled up before the starting address.
  • Locals window collapses expanded structures on change of scope, such as stepping into a block (not a new function).
  • The value of array members cannot be changed.
  • The expression evaluator does not handle casting from a class to a primitive data type.
  • Remove Last in Quickwatch only works once when multiple items are added to the watch list in a single quickwatch session.
  • The return value type is not reported for ?<FuncName>.
  • Function evaluation reports "Error: function requires implicit conversion" for a function taking a structure (not a pointer to a structure).
  • Watch window shift-key selection is not consistent: sometimes all characters from the beginning of the expression to the caret position are selected, sometimes 2 characters are selected.
  • User DLLs dialog silently discards edits after picking a DLL and changing the radio button from suppress to load.
  • Information windows don't maintain color after structure expansion.
  • WinDbg disassembles F2 66 F0 F0 AF as "repne lock lock sca" not "repne lock lock scasw".
  • Breakpoints may not work correctly in multithreaded apps in areas not protected by critical sections.
  • Choosing Stop Debugging and Restart causes memory leak (100K per iteration).
  • Combo box in dialog for browsing symbol files is too narrow to show the *.dbg.
  • Debug.Watch does not set default watch expression to the selection made in the source window.
  • If you set a conditional breakpoint, you step over it with an F10, and the condition is not currently satisfied, the program will run to completion, rather than stepping.
  • Long expression (?arg00+arg01+...+arg31) causes debuggee to run to termination.
  • ?<function returning near pointer> displays segment.
  • Windbg hangs if exited during aedebug start.
  • A vararg function evaluation fails on Mips and Alpha.
  • Private members may not be evaluatable.
  • First Command Window prompt after connecting to target machine for kernel debugging is ">", not "KDx86>", "KDMIPS>", or "KDALPHA>".
  • Context expression evaluation of item up the callstack cannot be evaluated and causes CXX0036: Error: bad context {...} specification.
  • Alpha: Disassembly of RS, RC, RPCC, FETCH, and FETCH_M instructions displays no operand.
  • Help file says "u" command is for unfreezing a thread. The "u" command is for unassemble; it is the "z" command that is used for unfreezing a thread.
  • Automatic forward searching not done by breakpoint dialog. Otherwise, when setting a breakpoint on a line that does not contain executable code, the breakpoint is set on the next executable line.
  • Automatic forward searching not done when modules are loaded. Otherwise, when setting a breakpoint on a line that does not contain executable code, the breakpoint is set on the next executable line.
  • OK button not always active on Set Process dialog.
  • Alpha: Large enumerated value not displayed correctly (16-bits instead of 32-bits).
  • The Delete button in User DLLs dialog is always active.
  • ?Spinlock::Spinlock should display the prototype for the function, but it causes CXX0046: Error: argument list required for member function.
  • Flat callstack displayed debugging 16-bit Windows-based application.
  • File menu Save_All is not enabled consistently on all platforms.
  • Page up/down goes farther than scroll thumb in the Memory Window.
  • Page up/down doesn't move scroll thumb in Memory Window.
  • Disassembler option "Display Symbols" ignored on Alpha.
  • Ppcodes always displayed in lower case in MIPS disasembly, even if "Uppercase symbols and opcodes" is checked.
  • Create several workspaces for a single program, choose Delete from the Program menu, and select several of the workspaces. WinDbg locks up when you select OK.
  • Deleting the last debugger DLL causes an access violation.
  • Bad caret movement when editing Memory Window with ASCII format.
  • Calls window not updated if the current thread is changed with the Set Thread dialog. The Calls window is updated if the Command window is used to set the current thread.
  • Thread-specific translations of segment registers is not done. The segment register is translated using thread 0's descriptor table.
  • When stepping over a function which contains a breakpoint, execution halts, but there is no message indicating that a breakpoint was hit.
  • Value of "this" pointer is incorrect in a virtual function in a derived class.
  • Based pointers in flat segments are displayed as a 16-bit value, not a 32-bit value. In addition, nothing happens when you click the expansion button.
  • WINDBG won't set a breakpoint on code placed in memory and then executed.
  • Windbg does not know about all exceptions that can occur while debugging 16-bit code.
  • Alpha: CVTxx instructions disassembled with 3 operands, instead of only 2 operands. The first operand is wrong, the second operand would be the correct first operand, and the third operand would be the correct second operand.
  • !help <str> reports that there is no help available.
  • Set a breakpoint on a function call which spans multiple source lines, but don't set the breakpoint on the last line. Save the information and leave the debugger. When you restart WinDbg with the saved information, WinDbg cannot resolve the breakpoint.
  • Alpha: Cannot step through call through a function pointer.
  • Commands sxeld and sxdld cause the debugger to stop when a DLL is loaded.
  • If there are no symbols loaded, double-clicking a symbol in the call stack produces a disassembly window with a starting address of 0.
  • The following context operators cause "CXX0036: Error: bad context {...} specification":

          ?{,functest.c,functest.exe}count
          ?{,functest.c,}count
    

    The following context operators cause "CXX0017: Error: symbol not found":

          ?{,,functest.exe}count
          ?{,,}count
    
  • When the current instruction is "cmp dword ptr [esp+18],01", the register window shows a calculation based on [esp], rather than [esp+18].
  • WinDbg displays only the first letter of a 'const WCHAR *const' variable. Casting the variable to a WCHAR * in the Watch window works around the problem.
  • Run windbg -g cmd.exe and invoke a batch file that repeatedly invokes another command; WinDbg will leak memory.
  • x86: f2a6 is disassembled as "repnee cmpsb", not "repne cmpsb", f2a7 is disassembled as "repnee cmpsb", not "repne cmpsd", f2ae is disassembled as "repnee scasb", not "repne scasb", f2af is disassembled as "repnee scasd", not "repne scasd", f0a6 is disassembled as "locke cmpsb", not "lock cmpsb", f0af is disassembled as "locke scasd", not "lock scasd", f32ea6 is disassembled as "rep cmpsb", not "repe cmpsb", f326a7 is disassembled as "rep cmpsd", not "repe cmpsd", f32ea7 is disassembled as "rep cmpsd", not "repe cmpsd", f366a7 is disassembled as "rep cmpsw", not "repe cmpsw", f36665a7 is disassembled as "rep cmpsw", not "repe cmpsw", f326ae is disassembled as "rep scasb", not "repe scasb", f365af is disassembled as "rep scasd", not "repe scasd", f33eaf is disassembled as "rep scasd", not "repe scasd", f3f0af is disassembled as "rep locke scasw", not "repe lock scasw", f366af is disassembled as "rep scasw", not "repe scasw", f36636af is disassembled as "rep scasw", not "repe scasw".
  • dc doesn't accept the '&' prefix for an address specifier.
  • CXX0004: Error: syntax error on reference to float array. For example, the error is produced by "g .115;?Pf[8], where Pf is declared float Pf[11].
  • If you have a DLL built with multiple files with the same name (that live in different source directories), you cannot set a break point in 2nd file with same name.
  • Error "CXX0034: Error: types incompatable with operator" accessing members, member functions, and overloaded operators of base classes and virtual base classes or a derived class.
  • Alpha: WinDbg doesn't display floating part of a float constant.
  • Crash dumps fail because of bad symbol lookup. This breaks !process when kernel debugging as well.


Additional reference words: 3.50
KBCategory: kbtool kbbuglist
KBSubcategory: TlsWindbg


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: November 29, 1994
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.