Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ocamldebug et printers #3058

Closed
vicuna opened this issue Nov 29, 2001 · 3 comments
Closed

ocamldebug et printers #3058

vicuna opened this issue Nov 29, 2001 · 3 comments
Labels

Comments

@vicuna
Copy link

vicuna commented Nov 29, 2001

Original bug ID: 663
Reporter: administrator
Status: closed
Resolution: not a bug
Priority: normal
Severity: minor
Category: ~DO NOT USE (was: OCaml general)

Bug description

Full_Name: erwan jahier
Version: 3.02
OS: solaris (SunOS cougourde 5.7 Generic_106541-04 sun4u sparc SUNW,Ultra-5_10)
Submission from: arpont.imag.fr (129.88.43.46)

Bonjour,

J'essaye d'utiliser un <> dans ocamldebug, et ca ne marche
pas.

Soit le fichier print.ml contenant la ligne suivante :

let toto _ = print_string "toto\n"
Dans ocamldebug je fais (apres avoir fait <>) :

(ocd) load_printer toto.cmo
File ./toto.cmo loaded
(ocd) install_printer Toto.toto
(ocd)

Donc, tout semble marcher. Et pourtant :

(ocd) Toto.toto
Unknown command.
(ocd) toto
Unknown command.
Ai-je raté quelque chose ?

@vicuna
Copy link
Author

vicuna commented Nov 30, 2001

Comment author: administrator

Bonjour Erwan,

J'essaye d'utiliser un <> dans ocamldebug, et
ca ne marche pas.

Soit le fichier print.ml contenant la ligne suivante :

let toto _ = print_string "toto\n"
Dans ocamldebug je fais (apres avoir fait <>) :

(ocd) load_printer toto.cmo
File ./toto.cmo loaded
(ocd) install_printer Toto.toto
(ocd)

Donc, tout semble marcher. Et pourtant :

(ocd) Toto.toto
Unknown command.
(ocd) toto
Unknown command.
Ai-je raté quelque chose ?

La doc n'est sans doute pas très claire là-dessus, mais les
"user-defined printer" d'ocamldebug sont similaires à ceux du toplevel
Caml: ce sont des fonctions qui sont appelées lorsqu'on affiche des
valeurs de type correspondant au type d'argument de la fonction.

Par exemple, supposons que dans le programme débuggé il y ait un type t:

    type t = A

Si on change toto.ml en:

    let toto (x : t) = Format.print_string "toto"

et qu'on fait

(ocd) load_printer toto.cmo
(ocd) install_printer Toto.toto

puis qu'on imprime une variable "x" du programme qui a le type "toto list":

(ocd) print x

on devrait voir apparaître

    [toto; toto; toto]

au lieu de

    [A; A; A]

comme avec l'afficheur par défaut.

  • Xavier Leroy

@vicuna
Copy link
Author

vicuna commented Nov 30, 2001

Comment author: administrator

On Fri, 30 Nov 2001, Xavier Leroy wrote:

Ai-je raté quelque chose ?

La doc n'est sans doute pas très claire là-dessus, mais les
"user-defined printer" d'ocamldebug sont similaires à ceux du toplevel
Caml: ce sont des fonctions qui sont appelées lorsqu'on affiche des
valeurs de type correspondant au type d'argument de la fonction.

Arf !
ok, merci.

Un tout petit exemple dans la doc leverait cette ambiguité.
Au pire, pourrait-etre ajouter quelque chose comme :

<<Once a user-defined printer for a type t has been loaded and installed,
ocamldebug will use it to print terms of type t. Note that such printers
can not be called directly by users at the ocaml prompt.>>

Même si personnellement, je prefererais un exemple.

Par ailleurs me fait penser à une question qui me démange à chaque fois
que j'utilise ocamldebug : pourquoi ocamldebug n'est-il pas carrément un
toplevel ocaml ? Ca permettrait de faire tout un tas de choses (cf par ex.
http://www-verimag.imag.fr/~jahier/tutorial.html ;-) pour pas un rond.

La seule contrainte dans l'architecture décrite (rapidement) par cette
url, c'est que le debogueur et le débogué soient dans 2 processus
différents et qu'ils communiquent, par exemple, à l'aide de sockets. Or
c'est déjà exactement comme ca que ocamldebug fonctionne !

--
R1.

@vicuna
Copy link
Author

vicuna commented Nov 30, 2001

Comment author: administrator

User's misunderstanding.

@vicuna vicuna closed this as completed Nov 30, 2001
@vicuna vicuna added the bug label Mar 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant