Как выполнить отладку без «Программного приема сигнала SIGILL» с использованием ядра 3.18 (работает 3.12)?


10

Я попытался отладить программу с помощью 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?
mpromonet

@mpromonet Так passкак по умолчанию установлено, это не должно иметь никакого значения, и это не имеет никакого значения. Тот же результат, что и сhandle SIGILL nostop
someonr

И нет никакого значимого обратного следа ( bt)? Я думаю, вам нужно подумать о том, чтобы предоставить больше контекста здесь, если вы серьезно ожидаете, что кто-то объяснит «Что является причиной этой ошибки?» основано только на недопустимой инструкции в компоновщике / загрузчике ( ld-linux-armhf).
Златовласка

Я не смог получить какой-либо значимый след (см. Отредактированный вопрос). Я постараюсь создать небольшой пример. Кроме того, я запутался, что не могу получить нелегальный код операции без GDB.
Someonr

1
стек кажется разбитым, может валгринд помогает?
mpromonet

Ответы:


4

Это выглядит точно так же, как эта проблема: https://github.com/raspberrypi/linux/issues/766

Исправлено четыре дня назад.


Звучит многообещающе. Позже опробую. Спасибо за информацию.
Someonr

@someonr ты проверял?
Чепанг

sudo apt-get update; sudo apt-get upgrade; sudo rpi-updateисправил проблему, позволив мне использовать continueиhandle SIGILL nostop
morloch
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.