Finding if running under the debugger:
Searching this forum finds previous posts describing how I solved the "Debugger is Connected" problem on a Freescale MPC860. These may give hints on how to do something similar on your CPU. The second one is very similar to what you want - finding an equivalent to "assert".
https://community.freescale.com/message/97310#97310
https://community.freescale.com/message/84292#84292
Getting the program Counter:
I'd forgotten about this. Weird CPU, isn't it? From Assembly (or in-line assembly) you can perform a "bl" or "bla" to somewhere (even the next instruction), which will put the PC into the Link Register and then use "mflr" to get that value into a general purpose register. Then you have to store it somewhere. If you want to write in C and not use inline assembly, then call a simple assembly function. The call will put the PC into the Link Register and the assembly function can simply store the LR into a global. The other approach is to declare a label in your macro and then just load the address of that label. Remember you also have "__FILE__" and "__LINE__" available to give a "higher level" indication of where the Assert was.
Tom