sigsegv

___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur dann, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren ___ tag123debugging ___ Debugging ist ein methodischer Prozess zum Suchen und Beheben von Fehlern in einem Computerprogramm. ** WICHTIGER HINWEIS: ** Dieses Tag ist NUR für Fragen über Debugging-Techniken oder den Debugging-Prozess gedacht, NICHT um Hilfe beim Debuggen Ihres Codes anzufordern. ___ tag123trace ___ Eine Ablaufverfolgung ist ein Protokoll der Ausführung eines Prozesses oder einer Methode. ___ qstnhdr ___ Linux: Wie debugge ich einen SIGSEGV? Wie kann ich die Fehlerquelle verfolgen? ___ tag123dump ___ Aufzeichnen des Inhaltes des Speichers nach einem Anwendungs- oder Betriebssystemfehler oder auf Anforderung eines Bedieners in einem Core-Dump zur Verwendung bei der nachfolgenden Problemanalyse. Außerdem können Sie eine Datei oder ein Medium als Backup aufzeichnen. ___ qstntxt ___

Mein Firefox ist seit heute abgestürzt. Ich habe nichts auf dem System oder auf Firefox-Konfiguration geändert.

Ich benutze
%code%
um das Problem zu verfolgen. Es ist keine große Hilfe.

Ich sehe den segfault, in zwei der generierten Prozess-Dumps, aber wie kann ich sie zu ihrer Ursache verfolgen?

Nachdem ich 10 Sekunden lang gerannt bin und 22MB Daten werden von strace generiert.

Dies ist ein Ausschnitt der Ausgabe, in dem Sie den tatsächlichen SIGSEGV in der Mitte sehen können.:

%Vor%     
___ answer1024611 ___

Ivan, deine wahre Frage ist "Wie debugge ich einen SIGSEGV?"

strace ist hier selten eine gute Hilfe. SIGSEGV bedeutet, dass die Anwendung versucht hat, einen Speicherort im Speicher zu dereferenzieren (auf ihn zuzugreifen), der nicht zugeordnet wurde (oder aus verschiedenen anderen Gründen nicht dereferenziert werden darf). Die Chancen stehen hoch, dass es nicht mit der Systemaufrufaktivität zusammenhängt, die strace erfasst. Um die Ursache Ihres Absturzes herauszufinden, müssen Sie zunächst verstehen, welche Adresse dereferenziert wird und welche Funktion dies versucht. Debugger ist das richtige Werkzeug für diese Aufgabe.

Folgendes müssen Sie tun:

%Vor%

dort, die zuletzt ausgeführte Anweisung analysierend und "Info Register" verwendend, sehen Sie die Adresse in Frage. Mit dem Befehl "bt" sehen Sie den Callstack. Wenn Sie den Callstack durchlaufen, werden Sie feststellen, wie die falsche Adresse berechnet wird. Einer der Schritte in dieser Adressberechnung ist die Ursache Ihres Problems.

Das Debuggen macht Spaß und das ist eine gute Gelegenheit, sich darauf einzulassen. Ein gutes Buch oder einige Online-Artikel können Ihnen dabei helfen. Google weg und viel Glück!

    
___ tag123sigsegg ___ Auf POSIX-konformen Plattformen ist SIGSEGV das Signal, das an einen Prozess gesendet wird, wenn ein ungültiger Speicherreferenz- oder Segmentierungsfehler auftritt. ___ answer1025279 ___

Sie können Firefox im Debug-Modus starten mit: firefox -d gdb

Dies wird Firefox in gdb starten.

Sie können den gdb-Befehl 'run' ausführen und eine Rückverfolgung erhalten, wenn Firefox abstürzt. Dies kann schwierig sein, da firefox mit abgespeckten Bibliotheken ausgeliefert wird, die nur welche anzeigen Bibliothek und Offset der Code ist in, nicht die Funktion Namen.

Eine andere Alternative ist Firefox im Safemode zu starten: firefox -safe-mode und deaktiviere alle Plugins, die du installiert hast, bis es nicht mehr abstürzt.

Die letzte Alternative besteht darin, den Entwicklermodus von Firefox zu aktivieren und es zu senden Die Firefox-Crash-Session zum Mozilla-Server. Dann können Sie die Mozilla-Seite besuchen und sehen Sie die detaillierte Rückverfolgung Ihrer fehlgeschlagenen Firefox-Sitzung.

    
___
6
Antworten

Wie kann malloc () einen SIGSEGV verursachen?

Ich habe einen seltsamen Fehler in meinem Programm, es scheint mir, dass malloc () einen SIGSEGV verursacht, was nach meinem Verständnis keinen Sinn ergibt. Ich verwende eine Bibliothek namens Simclist für dynamische Listen. Hier ist eine Str...
17.09.2009, 19:59
1
Antwort

Warum wird das Signal segfault on * nix als 'SIGSEGV' und nicht 'SIGSEGF' abgekürzt?

Gibt es einen historischen Grund? Gibt es überhaupt irgendeinen Grund oder war es reiner Zufall? Wikipedia ist mir diesmal nicht gelungen, daher hoffe ich, dass Sie mir einige Informationen / eine Antwort geben können. :)     
27.04.2011, 19:11
0
Antworten

Seltsamer Native Crash - pid: 0, tid: 0 Signal 11 (SIGSEGV), Code 1 (SEGV_MAPERR)

Ich bekomme diesen seltsamen Absturz auf Android %Vor% und ein anderer ähnlicher Absturz %Vor% beide sind - signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) Der erste Absturz findet in meinem nativen Code statt, der zweite findet irgendwo...
20.01.2018, 12:13
4
Antworten

Stack-Traces automatisch auf Unix-Systemen abrufen

Welche Methoden gibt es, um automatisch einen Stack-Trace auf Unix-Systemen zu bekommen? Ich meine damit nicht nur eine Kerndatei oder eine Verknüpfung mit GDB, sondern einen SIGSEGV-Handler, der ein Backtrace in eine Textdatei schreibt. Bonu...
20.08.2008, 15:50
2
Antworten

Linux: Wie debugge ich einen SIGSEGV? Wie kann ich die Fehlerquelle verfolgen?

Mein Firefox ist seit heute abgestürzt. Ich habe nichts auf dem System oder auf Firefox-Konfiguration geändert. Ich benutze strace -ff -o dumpfile.txt firefox um das Problem zu verfolgen. Es ist keine große Hilfe. Ich sehe den segfa...
21.06.2009, 13:23