Releases: Baron-von-Riedesel/DOS-debug
Releases · Baron-von-Riedesel/DOS-debug
v2.50
- DebugR fix: debugger assumed a 32-bit ring0 SS register on init;
if this wasn't true, a crash may have occured. - fix r cmd: the disassembler tried to show memory contents for the LEA
instruction - this may have caused a GPF. - DebugX fix e cmd, prompt mode: segment part changed to scratch sel
after first line in protected-mode if it was a r/o selector. - fix e cmd, prompt mode: '-' after byte input did skip that input.
- fix u cmd: address size prefix 67h for string instructions.
- fix n cmd: names > 128 chars may have modified debug's code seg.
- fix l & q cmd: failure of debuggee termination was ignored and the
command continued, leaving an orphaned debuggee in memory. - fix a cmd: regression since v1.18: "call/jmp [mem_ref]" without a size
given did default to a far call/jmp. - fix u cmd: operand size prefix 66h for 8/16/32-bit relative jmps.
- fix a cmd: NEar qualifier was accepted/ignored for immediate far
jmp/call. - u cmd, call far [mem]: qualifiers "FAR"/"DWORD FAR" changed to
"FAR16"/"FAR32". - DebugR(L): Q cmd may be activated for this variant.
- cmds bp/bc accept up to 4 permanent breakpoints.
- cmds bp/bc implemented, but inactive for Debug & DebugX; activated in
DebugXg & DebugXv variants. - G/T/P cmds: if possible, 386 debug registers will be used to set
temporary breakpoints. Active for DebugX, DebugR(L). - new cmdline options /s and /v for debugger variants that may use
hardware breakpoints ( option /v not for DebugR(L) variant ). - g cmd: if a breakpoint cannot be written, the cmd is aborted.
- Debug & DebugX may now be created in .exe file format.
- mktables.c: creates ASMTBL.INC/DISTBL.INC instead of DEBUGTBL.INC.
- cmds a, u: instruction RDTSC added.
- another variant of DebugR - DebugRV, with support for V86 mode.
- DebugR(V) dt cmd: optionally displays trapped ports.
- DebugRV di cmd: displays IDT & IVT vectors.
- DebugR rn cmd: won't run cmd if CR0.EM is set.
v2.02
- fixed S cmd: position display was corrupted in v2.00-v2.01.
v2.01
- fixed: addr/opsize prefixes "toggle", but just once.
- fixed: debug exceptions occuring inside debug are now ignored.
- fixed dm cmd: invalid last mcb no longer displayed.
- added a ring0 (PL0) variant for long mode - DebugRL.bin.
- DEBUGR(L): added bp & bc cmds.
v2.0
- fixed: routine int21ah9 did use DOS, even if InDos flag was set.
- fixed: reading stdin from file wasn't fully MS Debug compatible.
- fixed: correctly handle tabs if output is via BIOS.
- fixed L/W cmds: error msg for read/write drive was crumbled since v1.18.
- ensured the correct video page is used when debugger has to display something if the InDOS flag is set AND page swapping is active.
- mktables.c fix: didn't generate a valid debugtbl.inc.
- added a "boot" variant of the debugger - DebugB.bin.
- added a ring0 (PL0) variant of the debugger - DebugR.bin.
- DI cmd may be activated for standard DEBUG.COM.
- DEBUGX fix: restore hooked protected-mode interrupts when client terminates.
- DEBUGX fix: c & s cmds finally work with 32-bit offsets.
- DEBUGX fix, e cmd: generate a GPF if no data alias can be found for a code segment ( instead of silently skip the write ).
- DEBUGX fix: disassembly of [CS:IP] in register dump may have caused a GPF in debugger if the memory address was beyond seg limit - 3.
- DEBUGX fix, g cmd: if multiple breakpoints with different segment parts were set in protected-mode, hazardous writes may have happened.
- DEBUGX fix, m cmd: '$' qualifier for the source address segment was rejected.
- DEBUGX fix, c & m cmds: if both source and destination segment parts were readonly, the scratch selector was used twice.
- DEBUGX: added cmdline option /2.
- DEBUGX: hook into protected-mode debug interface Int 41h and make debugger visible there.
- DEBUGX, a & e cmd: usage of scratch descriptor for readonly segments now hidden, so the displayed address' segment part isn't changed.
- DEBUGX, a & d cmd: default segments are no longer automatically converted to selectors during initial switch to protected-mode.
- DEBUGX: exceptions 0dh/0eh are set/reset on debugger entry/exit.
- DEBUGXV: stop in debugger if SYSREQ is pressed.
v1.29
- DEBUGX bugfix c/d/e/m/s-cmd: an offset beyond 0ffffh was rejected if the segment descriptor's 'default-size' flag wasn't set.
- DEBUGX bugfix e-cmd interactive mode: offset increment and decrement was always 16-bit only.
- DEBUGX bugfix e-cmd non-interactive mode: skip test for 16-bit wrap if segment is larger than 64 kB.
- regression in debugxg. v1.28: the driver version crashed when it became active because the new mode detection code always returned status "in protected-mode".
- regression in DEBUGX, v1.28: on rare conditions, the debugger used a wrong pointer (debuggee's SS:ESP instead of SS:SP) to clear TF on the debuggee's stack.
- clear TF if child process is to be canceled ( else a "memory corrupt" error may appear in DOS ).
- DEBUGX, e-cmd: don't use int 21h, ah=8 directly in interactive mode.
- volume unlock: removed setting registers dx/bh, since useless.
- DEBUGX: behavior of q-cmd changed if debuggee is in protected-mode.Entering 'q' at the '#' prompt will (hopefully) make the debuggee
exit protected-mode and debugx's real-mode prompt '-' should appear. - DEBUGX: new command variant 'qq' to terminate a DPMI client that has intercepted protected-mode int 21h and refuses to quit.
- another variant - DEBUGXV - may be created. It allows to flip video screen between debugger and debuggee.
v1.28
- DEBUGX bugfix e-cmd: used wrong offset when reading from 32-bit
segments.
- DEBUGX bugfix d-cmd: hiword(ecx) wasn't cleared, resulting in a
"default" length for 32-bit segment dump > 128.
- DEBUGX bugfix g/t/p-cmd: if debuggee is stopped in protected-mode,
saved stack at debugger's PSP:[2Eh] must not be "adjusted".
- added debug displays (created if _DEBUG is defined)
- DEBUGX: int 2Fh, ax=1686h to detect mode no longer used - this makes
interrupt 2Fh traceable.
- 'e' cmd: don't stop input after byte '0d' has been entered
.
v1.27
- added new variant DEBUGXU.COM. This version does not use int 15h,
ah=87h inside the DX command, thus avoiding to disable a possibly
active unreal mode. The catch is that this version's DX command won't
work in V86 mode.
- disassembler handles operand size prefix for one-byte "push <imm>"
opcodes correctly. OTOH, for 2/4 byte "push <imm>" opcodes, the
disassembler no longer displays the operand size, since the size
is obvious.
- if InDOS flag is set, a '!' is preceding the debugger prompt.
- BIOS used when waiting for a key in help msg display.
- 'e' cmd uses BIOS if InDOS flag set.