Frage

Ich schreibe ein Python-Programm, um das Fuse-Dateisystem über einen Mount-Systemaufruf mit ctypes bereitzustellen.Jetzt wird beim Mount-Systemaufruf der Fehler „Ungültiges Argument“ ausgegeben.Ich habe alle Argumente überprüft und sie scheinen richtig zu sein.Ich habe von einem Freund gehört, dass Strace zum Debuggen dieser Art von Fehlern verwendet werden kann.Kann mir jemand zeigen, wie ich Strace zum Debuggen des Problems verwende?Jede Hilfe wäre dankbar.Dank im Voraus.

Lassen Sie mich die Frage allgemeiner formulieren: Wie kann ich Strace verwenden, um dasselbe Problem in C-Sprache zu debuggen?

War es hilfreich?

Lösung

Benutzen strace ist ziemlich einfach, liefert Ihnen aber möglicherweise nicht die gewünschten Informationen.

Da Sie wissen, nach welchem ​​Systemaufruf Sie suchen, wäre es am einfachsten, Folgendes zu tun:

strace -fv -e trace=mount mount /dev/sda1 /tmp

(ersetzen mount /dev/... mit Ihrem Python-Skript).Der -f ist es, Kindern zu folgen (hier wahrscheinlich unnötig), -v für ausführlich und -e trace=mount befiehlt strace um nur die zu verfolgen mount Systemaufruf.

Beispielausgabe hier:

$ sudo strace -fv -e trace=mount mount /dev/sda1 /tmp
mount("/dev/sda1", "/tmp", "ext2", MS_MGC_VAL, NULL) = 0

Sie sehen also die übergebenen Argumente im Wesentlichen in der Form, in der sie den Kernel erreichen, und im Rückkehrcode.

Sie erhalten keine „Erklärung“ dazu EINVAL allerdings, aber das sollte nur passieren, wenn der Quellparameter einen ungültigen Superblock hat, daher ist die Meldung ziemlich explizit (es sei denn, Sie machen etwas Exotischeres, in diesem Fall gibt es andere Möglichkeiten wie aufgelistet). Hier).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top