#2946: tracing should be controled by a global flag (it should not be resume
context specific)
-----------------------------+----------------------------------------------
Reporter: phercek | Owner:
Type: feature request | Status: new
Priority: normal | Component: GHCi
Version: 6.10.1 | Severity: minor
Keywords: debugger | Testcase:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
-----------------------------+----------------------------------------------
Instead of ":trace" and ":trace <expr>" command there should be one
command ":set trace on/off" and a new command ":debug <expr>".
":set trace" would control a global flag indicating whether tracing should
be active or not. If tracing is active then:[[BR]]
* ":continue" would behave like current ":trace",[[BR]]
* forcing a value using ":force <expr>" woudl work like current ":trace
<expr>" but ignoring breakpoitns,[[BR]]
* ":debug <expr>" would work like current ":trace <expr>",[[BR]]
* and ":main ..." would start Main.main with tracing on from the very
beginning.[[BR]]
If tracing is not active then ":continue", ":force", ":main" would behave
like they do now and ":debug <expr>" would be the same as current
"<expr>".
Reasoning:
I believe people use tracing to get access to variables which are not
free in the selected scope but which contributed to values in the selected
scope. So if they want variable availability they want tracing on all the
time if they care about speed they want tracing off all the time. With
this change request accepted they do not need to remember which command to
use to continue or to print a forced value. When an <expr> is an argument
to a ghci command and tracing is on then trace hisotry is extended, if
tracing is off then trace history is not extended, if <expr> is typed on
the ghci command line directly then tracing is never extended.
This change is not that important for manual ussage but it helps to
simplify custom defined ghci comamnds/scripts (which e.g. will not need to
take care whether to use ":continue" or ":trace" based on a global flag).
This would also allow to start tracing from the very beggining of ":main"
instead of setting a break at Main.main with a script set to ":trace" and
then running ":main ...".
Related discussion is here: http://www.haskell.org/pipermail/glasgow-
haskell-users/2009-January/016436.html
I do not know about other usage patterns for which the current state of
tracing UI is better. If you do know then vote against this.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2946>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs