Debuggen von c++ : ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory
Ich bin mit gdb
Debuggen C++
Programm. In der Zeile
assert(prevId == GetTagIdFromState(maxState));
- die parameter
prevId
Wert ist0
; - die Methode
GetTagIdFromState(maxState)
return
s50
;
beim Debuggen, bekomme ich die folgenden Fehler.
Assertion `prevId == GetTagIdFromState(maxState)' failed.
Program received signal SIGABRT, Aborted.
0x00007ffff6ecbba5 in raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
in ../nptl/sysdeps/unix/sysv/linux/raise.c
- Wenn jemand stolperte über dieses, ich hatte den gleichen Fehler. Was gelöscht es meine war, da war eine Sperre, die gesperrt wurde, aber nie veröffentlicht. Ich bin mir nicht sicher, warum es ist nicht einfach deadlock. Weiß nicht, ob das wird helfen, aber dachte, würde ich pass auf meine gotcha.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Anwendung funktioniert wie vorgesehen. Die assertion fehlschlägt (da die Werte, die Sie passieren, um es nicht gleich, die
assert
makro erhält 0), und damit dein Programm wird abgebrochen. Das ist, wie behauptet arbeiten:Hervorhebung von mir.
Überprüfen diese Referenz geltend machen für weitere Informationen.
../nptl/sysdeps/unix/sysv/linux/raise.c
. Da gibt es keine solche Datei auf Ihrem Computer, müssen Sie den Fehler. Es sollte nicht dazu führen, dass jeder Probleme aber so könnten Sie auch ignorieren.Sollte dies bringen Sie auf den neuesten Stand über die Verwendung von assert-Funktion
Bewerten Behauptung
Wenn das argument Ausdruck dieses makro mit funktionalen form vergleicht gleich null ist (D. H., der Ausdruck ist false), wird eine Nachricht geschrieben, auf die standard-Fehler-Gerät und der Abbruch wird genannt, beendet die Programmausführung.
Den Besonderheiten der angezeigte Meldung hängt von der spezifischen Implementierung im compiler, aber er muss Folgendes enthalten: den Ausdruck dessen assertion fehlgeschlagen ist, wird der name der Quelldatei und die Zeilennummer, wo es passiert ist. Eine übliche Ausdruck format:
Assertion failed: Ausdruck, file filename, line Zeilennummer
Dieses makro ist deaktiviert, wenn im moment des darunter geltend zu machen.h ein makro mit dem Namen NDEBUG bereits definiert wurde. Dies ermöglicht ein Programmierer gehören viele assert-Aufrufe im Quellcode beim Debuggen Sie das Programm und deaktivieren Sie dann alle von Ihnen für die Produktion-version einfach mit einer Zeile wie:
Daher, dieses makro dient der Erfassung Fehler in der Programmierung, nicht auf die Benutzer ausgeführt oder Fehler, da Sie in der Regel deaktiviert, nachdem ein Programm beendet seine debugging-phase.
von: C++ Ref
Ich habe gerade festgestellt das Fehler beim Debuggen eines Programms auf einem Raspberry Pi. Das Programm geschieht die Verwendung der GPIO in einer Weise, die erfordert, dass das Programm als Benutzer root ausgeführt werden. Zum Beispiel, ich starte das Programm, das ich schrieb wie diese:
Ich vergaß dies jedoch, beim starten des debugger und versuchte
Und ich bekam die Fehlermeldung, die Sie zu haben scheinen, begegnet:
Bei mir lief es mit Hilfe von sudo, es hat gut funktioniert.
Hoffe, es ist hilfreich, jemanden im gleichen Boot.