Como depurar sem “Sinal de programa recebido SIGILL” usando o kernel 3.18 (o 3.12 funciona)?


10

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 SIGILLidentificador 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?


Você tentou handle SIGILL pass nostop?
Mpromonet

@mpromonet Como passestá definido por padrão, não deve fazer diferença e não faz nenhuma. Mesmo resultado que comhandle SIGILL nostop
someonr 25/03/2015

E não há backtrace significativo ( 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).
goldilocks

Não consegui nenhum retorno significativo (consulte a pergunta editada). Vou tentar criar um pequeno exemplo. Além disso, estou confuso por não receber um código de operação ilegal sem o gdb.
someonr

11
pilha parece esmagada, valgrind poderia ajudar?
Mpromonet

Respostas:


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.