Tentei depurar um programa com gdb no Raspbian, mas tudo o que recebo é:
Program received signal SIGILL, Illegal instruction.
0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
Não ajuda definir o SIGILL
identificador para nostop
( handle SIGILL nostop
):
Program received signal SIGILL, Illegal instruction.
Program terminated with signal SIGILL, Illegal instruction.
The program no longer exists.
Todo o backtrace que recebo é:
#0 0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
#1 0x00000000 in ?? ()
Se eu iniciar o programa fora do gdb, recebo uma exceção C ++ normal (que gostaria de depurar).
Todos os softwares foram atualizados para a versão mais recente dos repositórios raspbian. Além disso, tentei o kernel raspberry pi foundation "3.18.9+" e também o kernel raspbain "3.18.0-trunk-rpi" (preciso de alguns módulos personalizados do kernel). Posso depurar o mesmo programa na minha máquina principal sem problemas.
Atualização: a depuração funciona conforme o esperado com o kernel "3.12-1-rpi".
O que está causando esse erro?
handle SIGILL pass nostop
?pass
está definido por padrão, não deve fazer diferença e não faz nenhuma. Mesmo resultado que comhandle SIGILL nostop
bt
)? Eu acho que você precisa pensar em fornecer mais contexto aqui se espera seriamente que alguém explique "O que está causando esse erro?" baseado apenas em uma instrução ilegal no vinculador / carregador (ld-linux-armhf
).Respostas:
Parece exatamente o mesmo que este problema: https://github.com/raspberrypi/linux/issues/766
Corrigido há quatro dias.
fonte
sudo apt-get update; sudo apt-get upgrade; sudo rpi-update
corrigiu o problema para mim, permitindo-me usarcontinue
ehandle SIGILL nostop