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.