Wie kann ich ohne "Programm empfangenes Signal SIGILL" mit dem 3.18-Kernel debuggen (3.12 funktioniert)?


10

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


Hast du es versucht handle SIGILL pass nostop?
— Promonet

@mpromonet Da dies passstandardmäßig festgelegt ist, sollte es keinen Unterschied machen, und es hat keinen Unterschied gemacht. Gleiches Ergebnis wie mithandle SIGILL nostop
— am

Und es gibt keine sinnvolle Rückverfolgung ( 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).
— Goldlöckchen

Ich konnte keine aussagekräftige Rückverfolgung erhalten (siehe bearbeitete Frage). Ich werde versuchen, ein kleines Beispiel zu erstellen. Ich bin auch verwirrt, dass ich ohne GDB keinen illegalen Opcode bekomme.
— Irgendwann am

1
Stapel scheint zerschlagen, Valgrind könnte helfen?
— Promonet

Antworten:


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.