GHCi debugger status
Peter Hercek
phercek at gmail.com
Mon Nov 24 10:09:09 EST 2008
Pepe Iborra wrote:
> On Mon, Nov 24, 2008 at 2:03 PM, Peter Hercek <phercek at gmail.com> wrote:
>> Maybe what Claus means is that he would like to see the dynamic
>> stack and be able to traverse it and at each location in the
>> dynamic stack he could investigate the free variables in the
>> expression (corresponding to the dynamic stack slot). I actually
>> considered this as a feature request but I decided that I would
>> like to have this implemented sooner:
>> http://hackage.haskell.org/trac/ghc/ticket/2737
>>
>
> As long as you start with :trace, you can see the dynamic stack with
> :history, and traverse it with :back.
> At any point in the stack the free variables are available, or so I believe.
> What is the missing feature you would like to request in this case?
Hmmm, I believe that dynamic stack is not the same as :trace history.
The point is that the trace history shows all the evalueated expressions
as they occure in time. But dynamic stack shows only the expressions
which evaluation did not finish yet.
Example:
1 let fn a =
2 let f x = x + 1 in
3 case f a of
4 1 -> "one"
5 _ -> ""
When selected expression is "one" then the trace will contain
something like this (just doing it from the top of my head):
line 1-5 fn a = ...
line 3-5 case f a of ...
line 3 f a
line 2 let f x = x + 1 in
line 2 x + 1
possibly something from outside which forces x and consequently a
line 4 "one"
But the dynamic stack would contain:
line 1-5 fn a = ...
line 3-5 case f a of ...
line 4 "one"
The difference is that the dynamic stack contains only the items which
computation is not finished yet. The stuff which was already reduced to
a final value is not there any more. This way you could trace the
dynamic stack back to see what arguments was your function called with
since the arguments must be free variables in the expression which
called your function of interest.
Of course the same information is in the trace too ... that is if your
trace history is long enough and you are willing to search it manually.
That is the rason for ticket 2737. I do not want to search it manually!
Maybe trace is the dynamic stack and I did not realize what trace
contains till now. That would be kind of a shame :-D
Peter.
More information about the Glasgow-haskell-users
mailing list