Was ist das Gegenstück zu "debug" unter DOS in Linux?

Hallo an alle,

es würde mich interessieren, ob es unter Linux ein Gegenstück zu “debug” unter DOS/Windows gibt. Bitte um Antwort, danke.

LG, Reinardo

Eine kleine Schwierigkeit: viele von uns benützen kein DOS oder Windows…

Aber, Programme kann man starten in einem Terminal. Im Terminalwindow mach:

firefox

. Firefox startet, wechseln nach Terminalfenster zeigt alles was Firefox zu melden hat.

Ich weiß schon, dass Linux-User eher selten DOS/Windows nutzen, aber es wird doch unter Linux einen ähnlichen Befehl geben, mit dem man eine Ausgabe des Speichers erreichen kann, oder?

Gemeint war wohl, das du erst erklären solltest was “debug” in DOS eigentlich tut, weil die meisten hier (Knurpht und ich gehören dazu) das überhaupt nicht wissen. Und de Name “debug” ist keine klare Aussage über die Eigenschaften die es innehalt. Wir wissen also nicht: ähnlichen Befehl zu was.

Soll das Program die Inhalt des Speichers von-bis eine bestimmte Adresse ausdrücken?

ja, das Programm soll den Inhalt des Speichers ausgeben, entweder am Bildschirm oder in einer Datei speichern. (das kann man unter DOS mit “debug” machen.)

Weil in Unix/Linux “everything is a file” (alles ist ein Datei) gilt, gibt es einen “character special fiile” /dev/mem:

boven:/dev # ls -l /dev/mem
crw-r----- 1 root kmem 1, 1 Sep 17 09:18 /dev/mem
boven:/dev #

die es möglich macht dem Speicher als Datei mit Zeichen zu behandeln. Natürlich nur von root zu lesen/schreiben.
Du kannst zum Beispiel mit

cat /dev/mem

das Ganze auf dem Terminal listen, das ist aber unschön weil jedes Zeigen x00 - xFF sein kann.
Besser ist dan vielleicht um octal oder hexadecimal zu listen

cat /dev/mem | od

Am besten erst mal probieren mit etwas weniger als den ganzen Speicher

head /dev/mem | od

Hallo Reinardo,

<erbsenzaehler>Da sich DOS und Linux (bzw. “real mode” im Gegensatz zu Modi mit virtuellem Speicher) hinsichtlich der Definition von “der Speicher” unterscheiden, sollte vielleicht noch geklärt werden, welcher Speicher gemeint ist.</erbsenzaehler>

Ich vermute mal, dass es um “den Speicher” aus Sicht eines laufenden Prozesses geht - und hierfür ließe sich recht einfach der GNU debugger nutzen.

Mit “gdb --pid=xxx” (“xxx” ist dann die PID des laufenden Prozesses, dessen Speicher man sehen will) kann man sich “an den Prozess dranhängen”

Der Prozess ist dann allerdings erst einmal angehalten - wenn es ihm um zeitkritische Dinge geht, sollte man dies beachten :wink:

Im Debugger kann man dann mittels der verschiedenen Varianten den “dump”-Befehls Speicherinhalte in eine Datei schreiben lassen (siehe “help dump” (innerhalb von gdb aufgerufen) etc für Details). Natürlich kann man sich auch den Speicher lediglich anzeigen lassen, “help x” im gdb listet die entsprechenden Variationen auf.

Mittels “quit” kann dann der debugger wieder verlassen werden, auch ohne den beobachteten Prozess zu beenden - dazu dann einfach die Frage nach dem “detach”/“quit anyway” bejahen.

Viele Grüße
Jens

http://de.wikipedia.org/wiki/DEBUG
Hmm mit dem konnte man doch auch Programme veränder und Schreiben in Assembler. ^^
PC Dos 3.1-2000 war bei mir drauf.