diff -r 48780e181b38 -r 578be2adaf3e Symbian3/PDK/Source/GUID-1E43E258-A926-5D24-B0A5-8756491C687F.dita --- a/Symbian3/PDK/Source/GUID-1E43E258-A926-5D24-B0A5-8756491C687F.dita Tue Jul 20 12:00:49 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1E43E258-A926-5D24-B0A5-8756491C687F.dita Fri Aug 13 16:47:46 2010 +0100 @@ -173,7 +173,7 @@ while B() is active.

This scenario happens frequently when B() allocates a buffer (e.g. TBuf) on the stack which overlaps old stack frames.

- +

If you want to trace applications loaded into RAM, then stack tracing is more difficult because RAM-loaded DLLs are given addresses assigned at @@ -340,7 +340,7 @@

noting that: SP = R13, FP = R11, IP = R12, LR = R14, and PC = R15.

This code creates the following stack frame:

- +

Looking at the example session listed in when tracing through the stack heuristically. in which the crash is due to a panic, the FP value is the R11 value; this is 0x6571de70. This gives us the innermost stack frame:

6571de64: e8 de 71 65 <------------- pointer to previous stack frame @@ -378,7 +378,7 @@ sub sp, #28 add r7, sp, #12 /* R7 is THUMB frame pointer */

and this creates the following stack frame:

- +

A call stack can mix ARM and THUMB frames. Odd return addresses are used for THUMB code and even ones for ARM code.

\ No newline at end of file