Thursday, July 27, 2006

How to get the stack when 'k' tells you 'Stack unwind information not available. Following frames may be wrong.'

Sometimes Windbg is not able to recreate the stack when using the k command.
This problem might come up with frame pointer optimization for example.
In such cases you can easily construct the call stack manually with some usage of your brain:

First execute:
0:000> dps @ebp

This will list the raw contents of the stack along with a matching symbol if available (top down)

then execute 'd' (which repeats the last d* command) as long as you reach the bottom of the stack. Know you need to distinguish between calls on the stack and variables and so forth. With few knowledge of the code executed it is pretty obvious to devide the calls from the rest. I personally copy the calls to the scratch pad not to get lost.

2 comments:

Kyle Harrison said...

Brilliant! Just made a great save at work because of this page. Even if the cores are pretty trashed, having 20 or so allowed me to piece the story together. Thanks for the excellent tip.

Kyle Harrison said...

Brilliant! Just made a great save at work because of this. I had 20 cores or more to work with so I could piece the story together. Thanks for the tip.