Gros watchpoint dans GDB 16.3
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
Reply to: