Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

!clrstack -p not giving the values of the parameters for the methods in the call stack

Tags:

windbg

sos

We are trying to analyze a w3wp memory dump using windbg and we found that w3wp process is crashing due to stack overflow. I loaded the psscor4.dll and got the call stack by issuing !clrstack. But I also want to know the paramaters being passed to the methods. If I issue "!clrstack -p" or "!clrstack -a", we are getting <no data> for all the Parameters and local variables. Any idea, why we are getting <no data> instead of actual values for the Parameters and local variables ?

like image 279
arul Avatar asked May 09 '12 14:05

arul


2 Answers

Such are the joys of debugging optimized code. If you use !sosex.mdv, you'll at least get the datatypes of your locals/args. Then you can run !sos.dso or !sosex.mdso to see the objects on the stack with their types. It's usually not terribly difficult to track down the arguments this way, though it does not always work.

like image 150
Steve Johnson Avatar answered Sep 21 '22 19:09

Steve Johnson


If you're running a release build you will usually not be able to track locals and parameters as they are optimized and store in registers. If you really need it, you can look at the JIT compiled code and locate the values in the registers but that may require a lot of book keeping.

like image 44
Brian Rasmussen Avatar answered Sep 17 '22 19:09

Brian Rasmussen