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.
|