Saya mencoba men-debug program dengan gdb di Raspbian, tetapi yang saya dapatkan adalah:
Program received signal SIGILL, Illegal instruction.
0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
Tidak membantu mengatur SIGILL
pegangan ke nostop
( handle SIGILL nostop
):
Program received signal SIGILL, Illegal instruction.
Program terminated with signal SIGILL, Illegal instruction.
The program no longer exists.
Semua backtrace yang saya dapatkan adalah:
#0 0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
#1 0x00000000 in ?? ()
Jika saya memulai program di luar gdb, saya mendapatkan pengecualian C ++ normal (yang ingin saya debug).
Semua perangkat lunak diperbarui ke versi terbaru dari repositori raspbian. Selanjutnya saya mencoba raspberry pi foundation kernel "3.18.9+" dan juga raspbain kernel "3.18.0-trunk-rpi" (Saya perlu beberapa modul kernel khusus). Saya dapat men-debug program yang sama pada mesin utama saya tanpa masalah.
Pembaruan: Debugging berfungsi seperti yang diharapkan dengan kernel "3.12-1-rpi".
Apa yang menyebabkan kesalahan ini?
handle SIGILL pass nostop
?pass
secara default diatur, seharusnya tidak membuat perbedaan, dan itu tidak membuat apa pun. Hasil yang sama denganhandle SIGILL nostop
bt
)? Saya pikir Anda perlu berpikir untuk memberikan lebih banyak konteks di sini jika Anda secara serius mengharapkan seseorang untuk menjelaskan "Apa yang menyebabkan kesalahan ini?" hanya berdasarkan instruksi ilegal di tautan / pemuat (ld-linux-armhf
).Jawaban:
Ini terlihat persis sama dengan masalah ini: https://github.com/raspberrypi/linux/issues/766
Diperbaiki empat hari yang lalu.
sumber
sudo apt-get update; sudo apt-get upgrade; sudo rpi-update
memperbaiki masalah ini untuk saya, memungkinkan saya untuk menggunakancontinue
danhandle SIGILL nostop