Write BP Triggers Every Frame

Started by live2play, June 21, 2010, 01:20:58 AM

Previous topic - Next topic

live2play

I have a memory address on which I placed a write BP.  The BP triggers on every frame.  This, in itself, is not a problem as I can usually set a condition (e.g. r0=00000031) so that the BP only triggers when I am interested in the data.  However, in this case, I have set ANY=00000031 and the BP is triggering even though none of the registers are 00000031.  Has anyone seen this kind of issue or know how I can get around it?

live2play

I found a "solution".  I restricted the BP to an "Exact match" and used a conditional.  This allowed the condition to be met and the BP properly trigger.

dcx2

A "standard" data breakpoint for the PowerPC is dword-aligned to 64 bits.  So if you set a write breakpoint on, say, 80000000, then it will break if the address of a store is 80000000 through 80000007.  If you set a write breakpoint on 8000000C, then it will break on any write from 80000008 through 8000000F.

This is useful if you don't know the size of the variable you're working on.  Let's say the value at some address is 00000003.  And you want to set a write breakpoint on it.  But you don't know if you're dealing with a word, or hword, or even a byte!  Set a standard breakpoint and it will hit regardless of alignment.

Gecko OS supports an "exact" breakpoint as well.  It is essentially a byte-aligned breakpoint.  However, if you set a breakpoint on the 00000003 that's exact, and it's actually an hword, you'll never hit it.  You'd need to set the breakpoint on 0003 instead.

Finally, exact breakpoints only work for data breakpoints.  An execute breakpoint does not care about exact or not.