Wie werden Betriebssysteme debuggt?

8

Wie werden Betriebssysteme normalerweise debuggt? Sie können nicht mit einem Debugger wie einfache Konsolenprogramme durchlaufen werden, und die Build-Zeiten sind zu groß, um wiederholt kleine Änderungen vorzunehmen und das Ganze neu zu kompilieren.

    
Maxpm 06.03.2011, 01:50
quelle

3 Antworten

6

Sie werden nicht als Multi-Gigabyte-Programme debugged! :)

Wenn Sie die einzelnen Benutzermoduskomponenten meinen, können sie hauptsächlich wie normale Programme und Bibliotheken (da sie normale Programme / Bibliotheken sind!) debuggt werden.

Für Komponenten im Kernelmodus hat jedes Betriebssystem jedoch einen eigenen Mechanismus; hier gibt einige Informationen darüber, wie wir Kernel-Debugging in Windows durchführen. Es kann mit Hilfe eines anderen Computers, der mit dem zu debuggenden Gerät verbunden ist, über einen seriellen Port oder etwas geschehen. Ich kenne mich mit dem Prozess selbst nicht aus, aber das ist der Kern dessen, wie sie funktionieren. (Sie müssen einige Bootloader-Optionen festlegen, damit das System so bald wie möglich mit dem Debugger verbunden ist.)

    
Mehrdad 06.03.2011, 01:53
quelle
5

Es kommt darauf an, von welchem ​​Teil des Betriebssystems du sprichst. Als ich bei MSFT arbeitete, arbeitete ich im IE-Team. Wir haben IE und die Shell (Windows Explorer) in Visual Studio getestet und den ganzen Tag Zeile für Zeile durchlaufen. Manchmal ist es jedoch einfacher, mit einem Befehlszeilenprogramm wie NTSD zu debuggen.

>

Wenn Sie jedoch irgendetwas im Kernel-Land wie den Betriebssystemkernel oder die Gerätetreiber debuggen wollen, was ich wirklich befürworte, dann müssen Sie den Kernel-Debugger verwenden. Für Windows ist das ein Befehlszeilentool, das kd genannt wird, und im Allgemeinen führen Sie den Debugger auf einem Rechner aus und remote debuggen Sie das Ziel.

    
i_am_jorf 06.03.2011 01:55
quelle
1

Im Laufe der Geschichte gibt es eine ganze Reihe von Techniken, von blinkenden Lichtern auf der Konsole über die Verwendung von Hardware-Geräten wie einem ICE bis hin zu moderneren Techniken, die ziemlich standardmäßige Debugger verwenden. Eine Technik, die unter OS-Entwicklern dann Anwendungsentwicklern häufiger ist, ist die Analyse eines Core-Dumps. Betrachten Sie etwas wie mdb on Solaris für Ideen, wie Solaris-Kernel-Entwickler einen Teil ihres Debuggens machen. Auch Tracing-Technologien werden verwendet. Von einfachen Logging-Paketen bis hin zu moderneren Techniken wie dtrace.

Beachten Sie auch, dass die verwendeten Techniken von der Softwareebene abhängen. Initial Boot ist ein ziemlich schwieriger Ort, um Ihre Finger hinein zu bekommen. Aber danach sieht die Umgebung moderner Betriebssysteme mehr und mehr nach der Anwendungseinstellung aus, die Sie gewohnt sind. Am Ende ist alles Code:)

    
Michael Hunter 06.03.2011 01:56
quelle

Tags und Links