English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[Caml-list] debugger questions/feature requests
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2002-07-02 (08:43)
From: Michael Vanier <mvanier@c...>
Subject: Re: [Caml-list] debugger questions/feature requests
> From: "Mattias Waldau" <mattias.waldau@abc.se>
> Date: Sun, 30 Jun 2002 19:41:24 +0200
> > I'm just starting to use the ocaml debugger.  I notice that 
> > when doing a backtrace, the different stack frames are 
> > identified as character positions in the source code file, 
> > but no line numbers are given.  This is a pretty major 
> > annoyance.  However, when you go up and down the call stack, 
> > you get the line numbers.  Is there any way to put the line 
> > numbers in the backtrace as well?
> no line numbers, this is a recurrent complaint :-)

Actually, it turns out to be trivial to add this feature to the debugger.
In the file debugger/show_information.ml, apply this patch:

> open Source
<   fprintf ppf "#%i  Pc : %i  %s char %i@."
<          framenum event.ev_pos event.ev_module event.ev_char
>   let first_char_of_line, line = 
>     line_of_pos (get_buffer event.ev_module) event.ev_char in
>   let char_on_line = event.ev_char - first_char_of_line in
>   fprintf ppf "#%i  Pc : %i  %s line: %i char: %i@."
>     framenum event.ev_pos event.ev_module 
>       line char_on_line

Don't forget the "open Source" line, or you won't be able to access the
"line_of_pos" function.  Nothing like open source software ;-)

> > 
> > I also would like a way to stop execution at the point at 
> > which an exception was raised.  There was a bug in my code 
> > that raised an exception, and the debugger was not helpful in 
> > tracking it down.  The last location I could step through 
> > before the exception was raised bore no relation to where the 
> > bug was occurring.  I'm not really sure why this was the case.
> > 
> it does stop at the point.
> I normally do 'b' to backstep one step and then 'u' one or several times
> to go up the stack trace.

Hmm.  It doesn't work for me.  When I do this the last location I can see
before hitting the exception is about two lines before the location of the
bug.  I'm having a hard time wrapping my mind around the way the debugger

To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners