Trace GNAT FSF avec numéro de lignes ...
Stéphane Rivière via Ada-france <[email protected]> Tue, 28 Jun 2022 16:34:52 +0200
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Organization | La Maison |
| Message-ID | <[email protected]> |
Bonjour à toutes et tous, Dans nos devs, on a une fonction une trace post-mortem, avec affichage et écriture sur disque. Dans les version Pro et CE, AdaCore a intégré l'utilitaire GNU/GCC addr2line dans le runtime GNAT. Il est appelé pour afficher les noms de sous-programmes et numéros de ligne de la pile d'appel. Cette fonctionnalité est absente de la version FSF. C'est une plainte récurrente sur le net, certains proposent des contournements, mais aucun ne fonctionnent ici (Linux, GNAT FSF 11). Les versions CE étant enterrées, il y avait deux solutions pour rétablir cette fonctionnalité bien utile ; la propre (faire pareil qu'AdaCore, possible mais manque de temps) et la sale (plus rapide). Donc en résumé... *CE21 (ou Pro)* Exception time : 20220627 175714 Program uptime : 0h00m00s Program build DT stamp : build 2022-06-27 17:57:11 Program name & version : gnx v3.2 Library name & version : v20 v0.11 Start directory : /home/sr/Seafile/Sowebio/informatique/github/genesix/gnx/bin Home directory : /home/sr Ada mem. alloc. (bytes): Ada Cur: [ 22828 ] Max: [ 40356 ] All mem. alloc. (bytes): All Cur: [ 4788224 ] Max: [ 4788224 ] raised CONSTRAINT_ERROR : bad input for 'Value: "sr" [./gnx] 0x732ae2 system__val_util__bad_value at ??? 0x731c2c system__val_int__impl__scan_integer at ??? 0x731cb5 system__val_int__impl__value_integer at ??? *0x577e6a V20.Vst.To_Integer at v20-vst.adb:84* *0x41b05a Gnx at gnx.adb:1174** **0x53521d Main at b__gnx.adb:455* 0x74ca98 __libc_start_call_main at ??? 0x74e2f5 __libc_start_main at ??? 0x406d43 _start at ??? *GNAT 11.2 (avant) * Exception time : 20220627 170132 Program uptime : 0h00m00s Program build DT stamp : build 2022-06-27 18:00:48 Program name & version : gnx v3.2 Library name & version : v20 v0.11 Start directory : /home/sr/Seafile/Sowebio/informatique/github/genesix/gnx/bin Home directory : /home/sr Ada mem. alloc. (bytes): Ada Cur: [ 22828 ] Max: [ 40356 ] All mem. alloc. (bytes): All Cur: [ 4861952 ] Max: [ 4861952 ] raised CONSTRAINT_ERROR : bad input for 'Value: "sr" [./gnx] 0x70c399 system__val_util__bad_value at ??? 0x70b7ad system__val_int__impl__scan_integer at ??? 0x70b7ee system__val_int__impl__value_integer at ??? *0x574bca v20__vst__to_integer__2 at ???** **0x41c801 _ada_gnx at ???** **0x5311f5 main at ???* 0x721f48 __libc_start_call_main at ??? 0x7237a5 __libc_start_main at ??? 0x406db3 _start at ??? *GNAT 11.2 (après)* Exception time : 20220628 121655 Program uptime : 0h00m00s Program build DT stamp : build 2022-06-28 12:16:49 Program name & version : gnx v3.2 Library name & version : v20 v0.11 Start directory : /home/sr/Seafile/Sowebio/informatique/github/genesix/gnx/bin Home directory : /home/sr Ada mem. alloc. (bytes): Ada Cur: [ 24204 ] Max: [ 40356 ] All mem. alloc. (bytes): All Cur: [ 5189632 ] Max: [ 5189632 ] raised CONSTRAINT_ERROR : bad input for 'Value: "sr" [./gnx] 0x71e4d9 system__val_util__bad_value at ??? 0x71d8ed system__val_int__impl__scan_integer at ??? 0x71d92e system__val_int__impl__value_integer at ??? *0x5784ac v20__vst__to_integer__2 at v20-vst.adb:84 (discriminator 1)** **0x41c801 _ada_gnx at gnx-utl_sv.adb:1174** **0x5311f5 main at b__gnx.adb:448* 0x734088 __libc_start_call_main at ??? 0x7358e5 __libc_start_main at ??? 0x406db3 _start at ??? Au traitement d'une exception létale, la fonction de v20 (notre lib généraliste) en charge de la trace regarde si l'utilitaire addr2line existe sur le système puis, pour chaque ligne indiquant un "???" lance, sur son propre exécutable, un addr2line -e <nom de l'exécutable> <adresse> et analyse le retour. Si ce dernier contient une réponse valide (exemple : /home/sr/.../debug/gnx-utl_sv.adb:1174, par opposition à "addr2line: DWARF error: can't find .debug_ranges section." et/ou "??:?", ??:0"), la fonction remplace "???" par "gnx-utl_sv.adb:1174". Si le programme a été compilé par une version Pro ou CE, c'est transparent et si add2line n'a pas été trouvé, les "???" sont laissés tels quels. C'était le seul obstacle pour abandonner CE 21 (GNAT 10 & GnatStudio 22) pour le GNAT 11 FSF de Alire et le GnatStudio 23 de la rolling release AdaCore, ce nouvel environnement est plus à jour et encore mieux fini. GnatStudio 23 est plein de bonnes petites surprises et l'amélioration de la fiabilité et de la finition sont notables sur les dernières versions. Pas encore poussé ce patch (de 10 lignes) dans le github Sowebio mais ça va venir. Dans un second temps, addr2line pourrait être embarqué dans le binaire grâce à l'utilitaire de Stéphane Carrez et auto-décompressé à la volée si nécessaire. Dans un troisième temps, on pourrait tenter de faire comme AdaCore. addr2line est "juste" (sic) un analyseur d'info de debug DWARF. Il pourrait même être recodé en Ada... Stef -- 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