Bonjour la liste,
Sur un Debian/Linux/x86-64 (Trixie) j'ai
gdb --version
GNU gdb (Debian 16.3-1) 16.3
que j'utilise sur RefPerSys (un moteur d'inférences libres, sur github, en C++)
compilé par GCC 15
J'utilise souvent la commande watch de GDB, en sachant empiriquement:
1. watch marche bien pour 4 watchpoints sur des mots de 64 bits (alignés sur 8 octets), et cette limite de 4 watchpoints est dûe au matériel: les "debug registers" DR0 à DR3 de
https://wiki.osdev.org/CPU_Registers_x86-64#Debug_Registers
(c'est d'ailleurs un peu dommage qu'avec un milliard de transistors sur un processeur récent, Intel ou AMD n'en aient pas rajouté d'autres)
2. probablement un unique watch sur une structure de 4 mots de 64 bits serait traduit (par GDB) en les 4 watchpoints élémentaires.
Dans de rares cas j'ai besoin de faire un watch sur une structure un peu plus grosse (disons 16 mots de 64 bits).
Dans ces cas, le débogueur est considérablement ralenti. L'intuition est un facteur x100 à x1000 plus lent. C'est désagréable et surprenant.
Avez vous des conseils pratiques à me donner pour accélérer ce déboguage?
Merci
NB. Peut-être qu'une solution pourrait être d'adopter une machine virtuelle octet (bytecode, comme Ocaml ou JVM savent faire) et de compiler mon RefPerSys vers cette machine virtuelle. Existe-t-il des machines virtuelles libres et compatibles avec un compilateur croisé GCC 15? En théorie une telle approche verrait un ralentissement d'un facteur x20 et pas x100 ou x1000.
https://fr.wikipedia.org/wiki/Emscripten peut-être?
--
Basile STARYNKEVITCH <
basile@starynkevitch.net>
8 rue de la Faïencerie
http://starynkevitch.net/Basile/
92340 Bourg-la-Reine
https://github.com/bstarynk
France
https://github.com/RefPerSys/RefPerSys
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)