View Single Post
Old 14 June 2024, 14:30   #3
Rock'n Roll
German Translator
 
Rock'n Roll's Avatar
 
Join Date: Aug 2018
Location: Drübeck / Germany
Age: 49
Posts: 200
How does the 64Bit-Exception breakpoint mask: FFFFFFFF 00FFFFFF works? and also the i and il command, also here: https://eab.abime.net/showthread.php?t=102444
a little help and some remarks in blue

Quote:
Originally Posted by Toni Wilen View Post
Mask FFFF matches all vectors from 0 to 15 which includes all usual "something went wrong" exceptions.
Code:
>?$ffff		; for all Exceptions from 0 to 15
$0000FFFF = %00000000`00000000`11111111`11111111 = 65535 = 65535
>?$0020		; Bit 5 is set for Exception 5
$00000020 = %00000000`00000000`00000000`00100000 = 32 = 32	
>il $20
Exception breakpoint mask: 00000000 00000020

This works in my test with Exception 5, but the infomessage 'Exception 5, PC=000278A8' is missed.
The maskvalue is a little bit complicated. but this can help:
>?1<<5		; for Exception 5
$00000020 = %00000000`00000000`00000000`00100000 = 32 = 32
>?1<<27		; for Exception 27
$08000000 = %00001000`00000000`00000000`00000000 = 134217728 = 134217728
>il			; disable the exception breakpoint
Exception breakpoint mask: 00000000 00000000
>il			; enables the exception breakpoint with default mask
Exception breakpoint mask: FFFFFFFF 00FFFFFF
>
With default mask, Exception 27: Lvl 3 Int doesn't break, therefore change the maskvalue to
>il $8FFFFFF
Exception breakpoint mask: 00000000 08FFFFFF

>?1<<(47-32)		; for Exceptions from 32 to 47
>il $FFFFFFFF		; 0 bis 31
Exception breakpoint mask: 00000000 FFFFFFFF
>il $FFFFFFFFFFFF	; >32Bit masks are not possible
Exception breakpoint mask: 00000000 FFFFFFFF
>
Code:
a normal exception occurs in singlestep mode with:
>t
Exception 5, PC=000278A8
VPOS: 106 ($06a) HPOS: 009 ($009) COP: $0001ede4

and with il
>il
Exception breakpoint mask: FFFFFFFF 00FFFFFF
>g
; Exception 5, PC=000278A8						; but this info is missed here
VPOS: 009 ($009) HPOS: 127 ($07f) COP: $0000046c
...
00fc081e 616c                     bsr.b #$6c == $00fc088c
Code:
>i		; i $14 is not possible, it's always the complete list
...
$00000014 05:     DIV BY 0 $00FC081E
...

>m 14 1
00000014 00FC 081E 00FC 0820 00FC 0822 00FC 090E  ....... ..."....
>d FC081E 1
00fc081e 616c                     bsr.b #$6c == $00fc088c
>d rl($14) 1
00fc081e 616c                     bsr.b #$6c == $00fc088c
on the end, disable the exception breakpoint with
>il
Exception breakpoint mask: 00000000 00000000
otherwise the debugger reopens again and it can't be closed with >x

without il the program runs into the exception without a break.

If you only break on any next exception, then use the tx-command.
Code:
>tx
Exception 5, PC=000278A8
Cycles: 0 Chip, 0 CPU. (V=105 H=51 -> V=105 H=51)
...
00fc081e 616c                     bsr.b #$6c == $00fc088c
i [<addr>] Dump contents of interrupt and trap vectors.
The helptext i [<addr>] is wrong, it's only i, please change the helptext or make also the argument possible, like: i 6c
Rock'n Roll is offline  
 
Page generated in 0.04301 seconds with 10 queries