Я попытался отладить программу с помощью GDB на Raspbian, но все, что я получаю, это:
Program received signal SIGILL, Illegal instruction.
0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
Это не помогает установить SIGILL
дескриптор nostop
( handle SIGILL nostop
):
Program received signal SIGILL, Illegal instruction.
Program terminated with signal SIGILL, Illegal instruction.
The program no longer exists.
Все, что я получаю, это:
#0 0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
#1 0x00000000 in ?? ()
Если я запускаю программу вне gdb, я получаю обычное исключение C ++ (которое я хотел бы отладить).
Все программное обеспечение было обновлено до последней версии из репозиториев Rasbian. Далее я попробовал базовое ядро raspberry pi "3.18.9+", а также ядро raspbain "3.18.0-trunk-rpi" (мне нужно несколько пользовательских модулей ядра). Я могу без проблем отлаживать ту же программу на моей основной машине.
Обновление: отладка работает, как и ожидалось, с ядром "3.12-1-rpi".
Что вызывает эту ошибку?
handle SIGILL pass nostop
?pass
как по умолчанию установлено, это не должно иметь никакого значения, и это не имеет никакого значения. Тот же результат, что и сhandle SIGILL nostop
bt
)? Я думаю, вам нужно подумать о том, чтобы предоставить больше контекста здесь, если вы серьезно ожидаете, что кто-то объяснит «Что является причиной этой ошибки?» основано только на недопустимой инструкции в компоновщике / загрузчике (ld-linux-armhf
).Ответы:
Это выглядит точно так же, как эта проблема: https://github.com/raspberrypi/linux/issues/766
Исправлено четыре дня назад.
источник
sudo apt-get update; sudo apt-get upgrade; sudo rpi-update
исправил проблему, позволив мне использоватьcontinue
иhandle SIGILL nostop