Forum: PC-Programmierung Betriebssysteme auf Assembler-Ebene analysieren


von Peter (Gast)


Lesenswert?

Ich würde gerne ein bestimmtes Betriebssystem (z.B. Windows oder auch 
Linux)
schrittweise ausführen.
Leider weiß ich in diesem Zusammenhang kein Stichwort.
Debugging on VirtualBox?
Zum Debugging auf Betriebsystem Ebene habe ich fast nichts gefunden...

von Peter II (Gast)


Lesenswert?

Peter schrieb:
> Zum Debugging auf Betriebsystem Ebene habe ich fast nichts gefunden...

http://en.wikipedia.org/wiki/SoftICE


Wenn du nicht mal die Tools findest, glaube ich kaum das du auf diese 
ebene wirklich debuggen willst.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Remote GDB ist für sowas noch eine Variante, geht aber natürlich nicht
für Windows.  Kenne ich jedoch von FreeBSD, und ich bin mir recht 
sicher,
dass das auch mit Linux geht.

von Konrad (Gast)


Lesenswert?

VirtualBox hat Debug-Funktionen; jemand hat einen Gdbserver dazu 
implementiert.

http://sysprogs.com/VBoxGDB/tutorial/

So was?

Alternativ kann Bochs so etwas auch.

Besonders leicht wird es allerdings nicht, ein dickes Betriebssystem mit 
Singlestepping zu debuggen; da sind doch einige LoC zu durchqueren, bis 
man mal was gesehen hat. Was hast Du vor?

von Konrad S. (maybee)


Lesenswert?

Wenn es dir nur um den Spaß geht, dann kannst du auch eine alte 
SPARCstation von Sun nehmen und mit kadb booten. Freiwillig würde ich 
sowas heute aber nicht mehr machen. ;-)

von Maxx (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Remote GDB ist für sowas noch eine Variante, geht aber natürlich nicht
> für Windows.  Kenne ich jedoch von FreeBSD, und ich bin mir recht
> sicher,
> dass das auch mit Linux geht.

Funktioniert auch unter Windows.

GDB Server für QEMU, Bochs & Co sind auch für Windowsa zu finden / zu 
übersetzen und
Insight rennt ebenfalls unter Windows.

von MaWin (Gast)


Lesenswert?

Peter schrieb:
> Ich würde gerne ein bestimmtes Betriebssystem (z.B. Windows oder auch
> Linux) schrittweise ausführen.

Das haben die Leute früher bei Win 3.1/NT gemacht, um herauszufinden, 
was Microsoft undokumentiert gelassen hat.

Es ergab sich von selbst, in dem man aus dem Anwenderprogramm im 
Debugger weiter in das Betriebssystem gesteppt ist.

Heutige Betriebssysteme sind einfach zu gross dafür, und Multithreading 
macht es nicht gerade übersichtlicher.

Dafür hast du bei Linux und Win 3.1 und CP/M den Source und kannst 
sowieso sehen, wie sie geschrieben sind.

von Peter II (Gast)


Lesenswert?

MaWin schrieb:
> Das haben die Leute früher bei Win 3.1/NT gemacht, um herauszufinden,
> was Microsoft undokumentiert gelassen hat.
>
> Es ergab sich von selbst, in dem man aus dem Anwenderprogramm im
> Debugger weiter in das Betriebssystem gesteppt ist.

nein nicht wirklich. Damit kommt man in die Runtime. Bis in den Kernel 
kommt man damit nicht wirklich. Denn dann würde der Debugger nicht mehr 
laufen.

Man kann Windows auch über die COM-Schnittstelle debuggen.

von Uhu U. (uhu)


Lesenswert?

Peter II schrieb:
> nein nicht wirklich.

Bei DOS schon und Windows 3.1 war eigentlich nur ein DOS-Extender.

von Jay (Gast)


Lesenswert?

> Zum Debugging auf Betriebsystem Ebene habe ich fast nichts gefunden...

Für Linux: https://www.kernel.org/pub/linux/kernel/people/jwessel/kdb/

Man muss es allerdings mögen. Händchen hält einem bei so etwas niemand.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter II schrieb:
> Bis in den Kernel kommt man damit nicht wirklich.

Nicht mit dem normalen Debugger, aber mit dem Windbeutel. Im 
Zusammenhang mit der Treiberentwicklung ist das Kerneldebuggen auch für 
Windows nicht unbedeutend. Über die MSDN gibt es auch jeweils 
Debug-Builds der Betriebssysteme ...

von (prx) A. K. (prx)


Lesenswert?

Peter II schrieb:
>> Es ergab sich von selbst, in dem man aus dem Anwenderprogramm im
>> Debugger weiter in das Betriebssystem gesteppt ist.
>
> nein nicht wirklich. Damit kommt man in die Runtime. Bis in den Kernel
> kommt man damit nicht wirklich. Denn dann würde der Debugger nicht mehr
> laufen.

Bei einer virtuellen Maschine ist das möglich. Traditionell verwendet 
man dazu eine zweite Maschine, aber wenn die zu debuggende Maschine eine 
VM ist, dann geht das auch auf einer:
https://msdn.microsoft.com/en-us/library/windows/hardware/ff538143(v=vs.85).aspx

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.