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