Ich habe versucht, ein Programm mit gdb in Raspbian zu debuggen, aber alles, was ich bekomme, ist:
Program received signal SIGILL, Illegal instruction.
0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
Es hilft nicht, das SIGILL
Handle auf nostop
( handle SIGILL nostop
) zu setzen:
Program received signal SIGILL, Illegal instruction.
Program terminated with signal SIGILL, Illegal instruction.
The program no longer exists.
Alle Rückverfolgung, die ich bekomme, ist:
#0 0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
#1 0x00000000 in ?? ()
Wenn ich das Programm außerhalb von gdb starte, erhalte ich eine normale C ++ - Ausnahme (die ich debuggen möchte).
Die gesamte Software wurde aus den Raspbian-Repositories auf die neueste Version aktualisiert. Außerdem habe ich den Himbeer-Pi-Foundation-Kernel "3.18.9+" und auch den Himbeer-Kernel "3.18.0-trunk-rpi" ausprobiert (ich benötige einige benutzerdefinierte Kernel-Module). Ich kann das gleiche Programm problemlos auf meinem Hauptcomputer debuggen.
Update: Das Debuggen funktioniert wie erwartet mit dem Kernel "3.12-1-rpi".
Was verursacht diesen Fehler?
handle SIGILL pass nostop
?pass
standardmäßig festgelegt ist, sollte es keinen Unterschied machen, und es hat keinen Unterschied gemacht. Gleiches Ergebnis wie mithandle SIGILL nostop
bt
)? Ich denke, Sie müssen darüber nachdenken, hier mehr Kontext bereitzustellen, wenn Sie ernsthaft erwarten, dass jemand erklärt: "Was verursacht diesen Fehler?" basiert nur auf einer illegalen Anweisung im Linker / Loader (ld-linux-armhf
).Antworten:
Dies sieht genauso aus wie dieses Problem: https://github.com/raspberrypi/linux/issues/766
Vor vier Tagen behoben.
quelle
sudo apt-get update; sudo apt-get upgrade; sudo rpi-update
Das Problem wurde für mich behoben, sodass ichcontinue
undhandle SIGILL nostop