J'ai essayé de déboguer un programme avec gdb dans Raspbian, mais tout ce que j'obtiens est:
Program received signal SIGILL, Illegal instruction.
0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
Il n'est pas utile de définir le SIGILL
handle sur nostop
( handle SIGILL nostop
):
Program received signal SIGILL, Illegal instruction.
Program terminated with signal SIGILL, Illegal instruction.
The program no longer exists.
Toute trace que je reçois est:
#0 0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
#1 0x00000000 in ?? ()
Si je démarre le programme en dehors de gdb, j'obtiens une exception C ++ normale (que je voudrais déboguer).
Tous les logiciels ont été mis à jour vers la dernière version à partir des référentiels raspbian. De plus, j'ai essayé le noyau de fondation raspberry pi "3.18.9+" et aussi le noyau raspbain "3.18.0-trunk-rpi" (j'ai besoin de modules de noyau personnalisés). Je peux déboguer le même programme sur ma machine principale sans aucun problème.
Mise à jour: le débogage fonctionne comme prévu avec le noyau "3.12-1-rpi".
Qu'est ce qui cause cette erreur?
handle SIGILL pass nostop
?pass
est par défaut défini, cela ne devrait pas faire de différence, et il n'en a fait aucune. Même résultat qu'avechandle SIGILL nostop
bt
)? Je pense que vous devez penser à fournir plus de contexte ici si vous vous attendez sérieusement à ce que quelqu'un explique "Qu'est-ce qui cause cette erreur?" basé uniquement sur une instruction illégale dans l'éditeur de liens / chargeur (ld-linux-armhf
).Réponses:
Cela ressemble exactement à ce problème: https://github.com/raspberrypi/linux/issues/766
Corrigé il y a quatre jours.
la source
sudo apt-get update; sudo apt-get upgrade; sudo rpi-update
résolu le problème pour moi, me permettant d'utilisercontinue
ethandle SIGILL nostop