Kdb : cannot set breakpoint
En testant le débogueur Kdb pour le noyau Linux, chaque tentative de poser un breakpoint sur une fonction se soldait par le message d’erreur suivant :
kdb> bp sys_open Invalid address for breakpoint, ignoring bp command diag: -21: Invalid address kdb>
Pourtant id sys_open permet bien de désassembler cette fonction, ce qui prouve que le symbole sys_open est résolu/connu de Kdb.
A l’aide d’une piste sur KernelNewbies, j’ai trouvé que le problème venait de l’option CONFIG_DEBUG_RODATA, qui protège en écriture certaines structures du noyau, empêchant de poser un breakpoint.
L’aide de cette option est explicite :
Mark the kernel read-only data as write-protected in the pagetables, in order to catch accidental (and incorrect) writes to such const data. This is recommended so that we can catch kernel bugs sooner. If in doubt, say "Y".
Mais le lien de cause à effet l’est moins