Vincent Caron a écrit :
> On 10/04/2013 20:22, Patrick Dupre wrote:
>> [...] Je soupconne des ecriture en memoire non alloue.
>> Est-ce qu'il y aurait des options qui me permette de confirmer
>> ou d'infirmer mes soupcons ?
>
> La meilleure arme est Valgrind.
>
> Mais la plus cheap se fait via les variables d'environnement qui
> peuvent modifier le comportement de malloc() dans la glibc, cf. man
> mallopt(3). [...]
Autrement, un truc que je trouve facile à utiliser : Electric Fence.
C'est un remplaçant de malloc qui utilise le MMU pour rendre
inaccessibles les zones libérées par free() et l'espace juste derrière
ce que retourne malloc(). Du coup, au premier accès illégal, même en
lecture, tu as direct un core dump :
sudo apt-get install electric-fence
gcc -ggdb le_programme.c -lefence -o le_programme
ulimit -c unlimited
rm -f core
./le_programme # <= Segmentation fault (core dumped)
gdb le_programme core
Et gdb te t'indique direct la ligne de code qui a fait l'accès illégal.
Edgar.