Trace

Still requires a few fixes, but the main part is done.
you don't need pc for func_exit, it's always return from the top-most function
remove the pc parameter from this function, obtaining pc is expensive and unnecessary