From: Xavier Leroy <xavier@Theory.Stanford.EDU>
Message-Id: <9310111937.AA10144@Tamuz.Stanford.EDU>
Subject: Re: option -g ??
To: Emmanuel.Thouvenin@loria.fr (Emmanuel Thouvenin)
Date: Mon, 11 Oct 1993 12:37:46 -0700 (PDT)
In-Reply-To: <9310111027.AA13421@hutch.loria.fr> from "Emmanuel Thouvenin" at Oct 11, 93 11:27:30 am
> Quelqu'un peut il me dire pourquoi lorsque je compile
> un programme Caml light avec l'option -g et que je passe
> l'executable genere dans un debugger (xgdb par exmeple)
> celui-ci me donne :
>
> ridiculous string table size (XXXXXX bytes).
>
> (xxgdb) No symbol table is loaded. Use the "file" command.
Moi, je peux. Les programmes produits par Caml Light ne sont pas du
code machine, mais du bytecode. Un debugger comme xgdb ne sait traiter
que les fichiers de code machine executables au format a.out,
c'est-a-dire les executables produits par ld ou cc ou autres
compilateurs produisant du vrai code machine.
Option -g ou pas, aucun debugger Unix ne comprendra quoi que ce soit
aux fichiers executables produits par Caml Light. (Seule exception: si
vous employez l'option -custom, le debugger vous permettra
de debugger la partie de votre programme ecrite en C; ca marchera
encore mieux avec l'option -ccopt -g en plus. Mais ca ne changera rien
pour la partie de votre programme ecrite en Caml.)
Votre debugger aurait du vous fournir un message d'erreur plus
informatif. Ceux que j'utilise disent (camlcomp est un executable
produit par Caml Light):
$ dbx camlcomp
dbx version 2.10.1
Type 'help' for help.
reading symbolic information ...ldinitheaders: magic number incorrect (0xa06)
dbx: fatal error: can't open camlcomp
$ gdb camlcomp
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.9, Copyright 1993 Free Software Foundation, Inc...
"/u3/users/xavier/lib/caml-light/camlcomp": not in executable format: File format not recognized.
Voila qui est clair et net. (adb ne dit rien, bien sur, mais c'est une
des principales features d'adb: de pouvoir operer sur n'importe quel
fichier.)
> Que puis je faire ??
... pour debugger du code Caml Light? Utiliser la trace, instrumenter
le code (avec des affichages de messages), et autres recettes
classiques. Nous n'avons pas de debugger dans le style de gdb pour
Caml Light. L'option -g est un (tout petit) premier pas dans cette
direction, mais un travail considerable reste a faire.
- Xavier Leroy