|[3 earlier articles]|
|Re: Debuggers decvax!decwrl!mips!himel (1987-03-23)|
|Debuggers email@example.com (1991-08-08)|
|Re: How long does it take to build a compiler? firstname.lastname@example.org (1993-11-10)|
|Re: debuggers email@example.com (1993-11-11)|
|Re: debuggers firstname.lastname@example.org (1993-11-11)|
|Re: debuggers email@example.com (1993-11-11)|
|debuggers firstname.lastname@example.org (1993-11-11)|
|Re: debuggers email@example.com (1993-11-11)|
|Re: debuggers sean@PICARD.TAMU.EDU (1993-11-12)|
|Re: debuggers firstname.lastname@example.org (1993-11-14)|
|Re: debuggers email@example.com (1993-11-15)|
|From:||firstname.lastname@example.org (Steve Simmons)|
|Organization:||Engineering, CONVEX Computer Corp., Richardson, Tx., USA|
|Date:||Thu, 11 Nov 1993 14:02:34 GMT|
email@example.com (Bill Maniatty) writes:
>One beef that I have with most debuggers I use (gdb, sdb, dbx, ...) is
>that on most workstations under unix, the debuggers do NOT use hardware
>defined break points, so that I cannot set watch on a data location.
The problem lies not in the hardware but in the OS's. When you write-lock
a page in VM, any system call that tries to update this page will fault.
In VMS, this would cause a system panic. Therefore, the VMS debugger
would copy the system service vector (the common point of entry into the
kernel) and replace it with one that jumped into the debugger code. The
debugger would then unlock all write locked pages and flip a bit on the
PSW. The debugger would then invoke the respective system service. The
debugger would come back in on an exception when the system service was
complete because of that PSW bit. This bit would cause a fault on return
from the service call because the PSW would be illegal, ROPERAND fault.
The debugger would then come back and check to see if any of the watched
locations had changed. If so, it would break then. If not, the debugger
would write lock the respective pages again. (PHEW!!!).
Other debuggers use a signal stepping technique if there is no OS support.
One benefit of this approach is that it better supports optimized code
paradigms. For example, if I is replaced with an induction variable and
the user wishes to watch I, then there is a need to single step until
either I or the respective induction variable changes.
Return to the
Search the comp.compilers archives again.