Produce a Stack Trace (Efficiently)?

Is there a way to view/save the current call stack without raising an exception?

Raising an exception is quite slow.

I have many Observer patterns and would like, during debug testing, to be able to see who called the Observer to trigger a change without slowing down my code to a crawl. The Observer patterns wait and fire on the main thread so they otherwise lose the call stack history.