Re: Trace GNAT FSF avec numéro de lignes ...

Stéphane Rivière via Ada-france <[email protected]> Wed, 29 Jun 2022 11:37:10 +0200
Newsgroups gmane.comp.lang.ada.france
Organization La Maison
Message-ID <[email protected]>
Bonjour Stef - number one ;),

> Bonjour Stef,
> GCC a déjà le paquetage suivant
> package System.Dwarf_Lines

Mais c'est merveilleux ça !


> L'implémentation me parait 100% Ada :-)
> Si je compile GCC 12.1 (sources GNU, pas Debian), alors le support des 
> traces symboliques est correct.

J'avoue que c'était la prochaine étape, le dépôt Alire étant en 11.2...


> J'ai souvenir qu'autrefois il y avait un patch soit dans Debian soit 
> dans FreeBSD pour lancer 'addr2line' et obtenir les traces symboliques.

Donc j'ai réinventé la roue et l'eau chaude.


> Le problème est que c'est catastrophiquement lent du fait qu'on doit 
> lancer `addr2line` pour chaque frame/line.

À l'époque mais aujourd'hui c'est instantané. Toutefois, c'est une 
approche sale.

Et puis il faut cet utilitaire addr2line dans le PATH.


> L'implémentation basée sur System.Traceback.Symbolic

Ça j'avais vu (et testé, sans résultat). Du coup, j'en étais arrivé à 
mon hack de goret.


> et System.Dwarf_Lines est assez efficace.

Effectivement, dans les sources du runtime de la 11.2, l'implémentation 
fait 1700 lignes, effective c'est du full-ada

Par contre, souci...

1) j'avais déjà testé System.Traceback.Symbolic hier (sans succès)

with Ada.Text_IO;
with Ada.Exceptions;
with GNAT.Traceback.Symbolic;

procedure Test3 is

   package TIO renames Ada.Text_IO;

   procedure Boum is
   begin
     raise Constraint_Error with "Boum";
   end Boum;

begin

   Boum;

exception
   when Err : others =>
   TIO.New_Line;
   TIO.Put_Line ("Sortie 'Ada.Exceptions.Exception_Information(Err)'");
   TIO.Put_Line (Ada.Exceptions.Exception_Information(Err));

   TIO.Put_Line ("Sortie 
'GNAT.Traceback.Symbolic.Symbolic_Traceback(Err)'");
   TIO.Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback(Err));

end Test3;

gnatmake -g test3.adb -bargs -E

Sortie 'Ada.Exceptions.Exception_Information(Err)'
raised CONSTRAINT_ERROR : Boum
[./test3]
0x403802 test3__boum.0 at ???
0x40382a _ada_test3 at ???
0x403791 main at ???
[/lib/x86_64-linux-gnu/libc.so.6]
0x7f798544ad8e
0x7f798544ae3e
[./test3]
0x403243 _start at ???
0xfffffffffffffffe

Sortie 'GNAT.Traceback.Symbolic.Symbolic_Traceback(Err)'
[./test3]
0x403802 test3__boum.0 at ???
0x40382a _ada_test3 at ???
0x403791 main at ???
[/lib/x86_64-linux-gnu/libc.so.6]
0x7f798544ad8e
0x7f798544ae3e
[./test3]
0x403243 _start at ???
0xfffffffffffffffe

2) testé via 
https://gcc.gnu.org/onlinedocs/gnat_ugn/Symbolic-Traceback.html (les 
deux exemples, même motif, même punition).

Effectivement, dans l'adb de Symbolic_Traceback, on trouve un with 
System.Dwarf_Lines (je n'avais vu cette subtilité hier), donc ça devrait 
tourner tout seul... mais non :()

La page ci-dessus précise "Note that this feature is not supported on 
all platforms. See GNAT.Traceback.Symbolic spec in g-trasym.ads for a 
complete list of currently supported platforms.  Qui renvoie vers 
s-trasym.ads

--  Run-time symbolic traceback support

--  The full capability is currently supported on the following targets:

-- *GNU/Linux x86, x86_64*
--     Windows x86, x86_64

On est bon de ce coté.

Aurais-tu une idée :) ?

Je vais compiler GCC 12 entre temps...


-- 
Stéphane Rivière
Ile d'Oléron - France

_______________________________________________
Ada-france mailing list
[email protected]
https://mail.ada-france.org/cgi-bin/mailman/listinfo/ada-france
OpenPGP_0x68A4C5C1D498F92F.asc (application/pgp-keys, 3.1 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=smkS
-----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature (application/pgp-signature, 840 B) - not displayed