Re: Debugging shareable images weirdness - VMS
This is a discussion on Re: Debugging shareable images weirdness - VMS ; VAXman- @SendSpamHere.ORG wrote:
> In article , John Reagan writes:
>>
>> VAXman- @SendSpamHere.ORG wrote:
>>
>>> * The Alpha uses a PALcode to implement the BPT. I don't have the IA64
>>> instruction manual before me but it too ...
-
Re: Debugging shareable images weirdness
VAXman- @SendSpamHere.ORG wrote:
> In article , John Reagan writes:
>>
>> VAXman- @SendSpamHere.ORG wrote:
>>
>>> * The Alpha uses a PALcode to implement the BPT. I don't have the IA64
>>> instruction manual before me but it too has a similar mechanism.
>>>
>> The Itanium has an instruction called "break" that takes a literal
>> argument. One of those literal values has been reserved for breakpoint.
>> To set a breakpoint, the debugger rewrites the appropriate bundle with
>> a break instruction in one of the slots.
>
> I knew there was an instruction but I did not recall the specifics as
> to whether it was a whole bundle supplanted or just an instruction in
> the bundle.
>
> Generally, it needs to modify the instruction stream as with the Alpha
> and the VAX.
It's been a long time since I looked (VMS V5 time-frame?), but IIRC, if
it is necessary to set a breakpoint in a global page, DEBUG makes a
private, process local copy of the page and sets the breakpoint there.
I don't remember if DEBUG does this explicitly or if the creation of the
local copy is a side effect of changing the protection on the page.
I also don't remember what happens if the page is a global, writable
page. (The thought of such a page containing code is not comforting.)
Note that this was for the VAX. I have not checked the mechanism for
Alpha or Itanium.
--
-----------------------------------------------------------------------
Chris Scheers, Applied Synergy, Inc.
Voice: 817-237-3360 Internet: chris@applied-synergy.com
Fax: 817-237-3074
-
Re: Debugging shareable images weirdness
Chris Scheers wrote:
> It's been a long time since I looked (VMS V5 time-frame?), but IIRC, if
> it is necessary to set a breakpoint in a global page, DEBUG makes a
> private, process local copy of the page and sets the breakpoint there.
Right. It still does.
> I don't remember if DEBUG does this explicitly or if the creation of the
> local copy is a side effect of changing the protection on the page.
It's an explicit action by DEBUG.
> I also don't remember what happens if the page is a global, writable
> page. (The thought of such a page containing code is not comforting.)
If the page is writable, then DEBUG can write a breakpoint. Others
executing the same code would see the break, too.
> Note that this was for the VAX. I have not checked the mechanism for
> Alpha or Itanium.
The same, though for Itanium there is one more trick we can use if all
the others fail: hardware breakpoint registers.
-Jeff