Einrichten von Windows NT-Debug-Symboldateien

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 138258 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D138258
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
138258 Windows NT Debug Symbol Setup Information
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt im Detail, wie Sie Microsoft Windows NT-Symbolstrukturen einrichten, und bietet weiterführende Hinweise zur Installation.

Weitere Informationen

Inhalt

  • Allgemeine Informationen
  • Einrichten benutzerdefinierter Symbolstrukturen
  • Einprozessorsystem vs. Multiprozessorsystem
  • Benutzerdefinierte HAL.DLL
  • Verwendung von Symbolen im Debugger
  • Verifizieren der Symbole
  • Weiterführende Informationen zur Verifizierung von Symbolen
  • Getestete Versionen

Allgemeine Informationen

Debug-Symboldateien (-Symbole) werden für das Kernel- und Benutzermodus-Debugging in Windows NT benötigt. Symbole bieten eine Möglichkeit der Referenzierung globaler Variablen und Funktionsnamen in der geladenen ausführbaren Datei.

Symbole werden vom Linker erzeugt. Sie werden dem Verkaufsprodukt entnommen und in einer separaten Datei (.DBG) gespeichert. Dadurch wird die Dateigröße erheblich reduziert. Dies verringert die zum Laden der Dateien benötigte Zeit und verbessert so die Systemleistung. Auch wird die Anzahl der Installationsdisketten reduziert. Symbole stehen für Funktionsnamen/API-Namen und globale Variablen.

Die .DBG-Datei enthält Symbolinformationen pro Datei. Sie sind auf der Installations-CD-ROM in "\Support\Debug\[i386 | mips]\Symbols" enthalten. Sie sind auch auf dem NT-Build-Server zu finden. Der Pfad lautet " \\Ntbuilds\Release\Usa\Build###\[x86 | mips |alpha]\Fre.srv\symbols".

Das Verzeichnis "Symbols" besteht aus sieben Unterverzeichnissen, die als Erweiterungsunterverzeichnisse bezeichnet werden (beachten Sie, dass viele der Symboldateien in diesen Verzeichnissen den Benutzermodus haben):

COM - Symbole für alle Dateien, die mit .COM enden
CPL - Symbole für alle Dateien, die mit .CPL enden
DLL - Symbole für alle Dateien, die mit .DLL enden
DRV - Symbole für alle Dateien, die mit .DRV enden
EXE - Symbole für alle Dateien, die mit .EXE enden
SCR - Symbole für alle Dateien, die mit .SCR enden
SYS - Symbole für alle Dateien, die mit .SYS enden

Symbole müssen zu den Dateiversionen passen:

Symbole aus einem anderen Build liefern falsche Informationen und führen dazu, dass Entwickler falschen Hinweisen folgen und viel Zeit verschwenden. Fragen Sie beim Kunden nach, mit welchem Build er arbeitet und ob er Patches installiert hat. Das Kernel-Stop-Bild zeigt die Build-Nummer des Kernels an.

Patch-Builds:

Patch-Builds wie z.B. Service Packs erfordern einen speziellen Satz von Symbolen, d.h. eine Kombination aus den Symbolen des Basis-Build und den Patch-Symbolen.

Einrichten benutzerdefinierter Symbolstrukturen

Denken Sie daran, dass die Symbole den Dateien entsprechen müssen, die auf dem Computer eines Kunden installiert sind. Häufig muss ein spezieller Satz von Symbolen für einen bestimmten Kunden erstellt werden.

Hinweis: Komplette Symbolstrukturen können bis zu 30 MB Speicherplatz belegen.
  1. Erstellen Sie ein Unterverzeichnis, um Ihren benutzerdefinierten Symbolsatz zu speichern. Beispiel:

    C:\MYSYMBOLS
  2. Beginnen Sie immer mit der Windows NT-Basisversionsnummer. Kopieren Sie folgende Dateien von der Installations-CD-ROM der jeweiligen Version:

    XCOPY [CD-Laufwerk] \SUPPORT\DEBUG\I386 C:\MYSYMBOLS /S.
  3. Kopieren Sie die Symbole für die jeweiligen Service Pack-Binärdateien in Ihre benutzerdefinierte Struktur. Service Pack-Symbole sind auf den Servern zu finden, die im Abschnitt "Symbolpfade" aufgeführt sind.
  4. Kopieren Sie Patches von Drittanbietern wie z.B. Compaq-SSD-Symbole in Ihre benutzerdefinierte Symbolstruktur. Gegebenenfalls müssen Sie diese Symbole beim Hersteller anfordern. Hinweis: Die Schritte 3 und 4 müssen je nach Reihenfolge der Installation beim Kunden eventuell in umgekehrter Reihenfolge stattfinden. Orientieren Sie sich an der Reihenfolge des Kunden.
  5. Wenn auf dem Server Hotfixes installiert sind, müssen Sie sich das entsprechende Symbol für den Hotfix besorgen. Wenn mit dem Hotfix keine Symboldatei mitgeliefert wird, wenden Sie sich an den Microsoft-Softwareservice, um sich nach der Verfügbarkeit dieser Symbole zu erkundigen. Kopieren Sie das aktualisierte Symbol in Ihre benutzerdefinierte Symbolstruktur. Achten Sie darauf, dass Sie es in den richtigen Unterordner stellen (z.B. Sys, exe, dll usw.).

Einprozessorsystem vs. Multiprozessorsystem

Windows NT verwendet einen speziellen Kernel für SMP-Systeme. Bei der Installation wird dieser Kernel umbenannt. Es ist wichtig, dass Sie für das Debugging auch die Datei SYMBOL.DBG umbenennen.
NTOSKRNL.EXE NTOSKRNL.DBG = Einprozessor NTKRNLMP.EXE. NTKRNLMP.DBG = Multiprozessoren

  1. Wenn Sie ein Multiprozessorsystem haben, gehen Sie folgendermaßen vor: Unter Ihrer benutzerdefinierten Symbolstruktur in \SYMBOLS\EXE gibt es zwei Kernel-Dateien. Benennen Sie NTOSKRNL.DBG um in NTOSKRNL.UNI.
  2. Kopieren Sie NTKRNLMP.DBG nach NTOSKRNL.DBG.

Benutzerdefinierte HAL.DLL

Manche Hardwareplattformen erfordern einen speziellen HAL-Treiber (HAL = Hardware Abstraction Layer; Hardware-Abstraktionsschicht). Wie die Kernel-Datei, so wird auch die benutzerdefinierte HAl während der Installation umbenannt. Hier eine Liste der üblichen HALs:

HAL-Dateien für I386-Computer:
              Unkomprimiert
Dateiname     Größe/Bytes  Beschreibung
-------------------------------------------------------------------------
HAL.DLL       48.416       Standard-HAL für Intel-Systeme
HAL486C.DLL   47.376       HAL für 486c-Step-Prozessor
HALAPIC.DLL   63.616       Einprozessorversion von HALMPS.DLL
HALAST.DLL    46.416       HAL for AST SMP systems
HALCBUS.DLL   79.776       HAL für Cbus-Systeme
HALMCA.DLL    45.488       HAL für MCA-basierte Systeme (PS/2 u.a.)
HALMPS.DLL    65.696       HAL für die meisten Intel-Multiprozessorsysteme
HALNCR.DLL    79.392       HAL für NCR-SMP-Computer
HALOLI.DLL    40.048       HAL für Olivetti-SMP-Computer
HALSP.DLL     52.320       HAL für Compaq Systempro
HALWYSE7.DLL  40.848       HAL für Wyse7-Systeme

HAL-Dateien für DEC-Alpha-Computer:

              Unkomprimiert
Dateiname     Größe/Bytes  Beschreibung
--------------------------------------------------------------------------
HAL0JENS.DLL  56.800       Digital DECpc AXP 150 HAL
HALALCOR.DLL  69.120       Digital AlphaStation 600 Family
HALAVANT.DLL  66.752       Digital AlphaStation 200/400 Family HAL
HALEB64P.DLL  70.528       Digital AlphaPC64 HAL
HALGAMMP.DLL  72.896       Digital AlphaServer 2x00 5/xxx Family HAL
HALMIKAS.DLL  67.040       Digital AlphaServer 1000 Family Uniprocessor
HAL
HALNONME.DLL  65.376       Digital AXPpci 33 HAL
HALQS.DLL     65.088       Digital Multia MultiClient Desktop HAL
HALSABMP.DLL  72.736       Digital AlphaServer 2x00 4/xxx Family HAL

HAL-Dateien für MIPS-Computer:

              Unkomprimiert
Dateiname     Größe/Bytes  Beschreibung
--------------------------------------------------------------------------
HALACR.DLL    43.648       ACER HAL
HALDTI.DLL    68.288       DESKStation Evolution
HALDUOMP.DLL  41.728       Microsoft-Designed Dual MP HAL
HALFXS.DLL    42.016       MTI mit r4000 oder r4400
HALFXSPC.DLL  42.176       MTI mit r4600
HALNECMP.DLL  44.736       NEC Dual MP
HALNTP.DLL    116.000      NeTpower FASTseries
HALR98MP.DLL  127.232      NEC 4 Prozessor MP
HALSNI4X.DLL  95.520       Siemens Nixdorf UP und MP
HALTYNE.DLL   68.032       DESKstation Tyne

HAL-Dateien für PPC-Computer:

              Unkomprimiert
Dateiname     Größe/Bytes  Beschreibung
--------------------------------------------------------------------------
HALCARO.DLL   169.504      HAL für IBM-6070
HALEAGLE.DLL  206.208      HAL für Motorola PowerStack und Big Bend
HALFIRE.DLL   136.576      Hal für Powerized_ES,
                                   Powerized_MX und
                                   Powerized_MX MP
HALPOLO.DLL   169.152      HAL für IBM-6030
HALPPC.DLL    169.184      HAL für IBM-6015
HALWOOD.DLL   95.616       HAL für IBM-6020


So finden Sie heraus, welche HAL Sie verwenden müssen:

Während der Installation wird eine Textdatei erstellt. In dieser Datei finden Sie Informationen über den ursprünglichen Namen der HAL.
  1. Gehen Sie zum Unterverzeichnis "%systemroot%\REPAIR".
  2. Führen Sie ATTRIB -R -H -S SETUP.LOG aus, um die Datei sichtbar zu machen.
  3. Öffnen Sie die Datei in Microsoft Notepad und suchen Sie nach HAL.
Hinweis: Mit dieser Technik können Sie auch überprüfen, ob auch ein spezieller Kernel verwendet wird.

Richten Sie das HAL-Symbol ein:
  1. Gehen Sie zu Ihrer benutzerdefinierten Symbolstruktur unter \SYMBOLS\DLL.
  2. Benennen Sie HAL.DBG um in HAL.X86.
  3. Kopieren Sie die benutzerdefinierte "Custom HLL.DBG" nach HAL.DBG.

Verwendung von Symbolen im Debugger

Ein Windows NT-Debugger, z.B. I386KD.EXE, sucht in folgenden Pfaden nach Symbolen:
_NT_ALT_SYMBOL_PATH Systemumgebungsvariable
_NT_SYMBOL_PATH Systemumgebungsvariable

Diese Pfade werden über Systemumgebungsvariablen gesetzt. Sie werden in der Regel durch eine Debug-Batch-Datei mit dem SET-Befehl konfiguriert. Die Angabe _NT_ALT_SYMBOL_PATH ist optional. Beispiel:
set _NT_SYMBOL_PATH=K:\NT35-SP3\SYMBOLS
set _NT_ALT_SYMBOL_PATH=c:\WINNT\SYMBOLS

Hinweis: Das Symbolverzeichnis ist das Verzeichnis unmittelbar über den Erweiterungsverzeichnissen (d.h., wenn die Kernel-Symboldatei, NTOSKRNL.DBG, in C:\DEBUG\511\I386\SYMBOLS\EXE\NTOSKRNL.DBG liegt, sollte _NT_SYMBOL_PATH auf C:\DEBUG\511\I386\SYMBOLS verweisen.

Verwendung von Pfaden:

Die verschiedenen Pfade können dazu genutzt werden, statische Symbolstrukturen für die einzelnen Windows NT-Versionen zu verwalten. Sie stellen Ihre Symbolpfade einfach so ein, dass sie auf die jeweilige Version oder das jeweilige Service Pack zeigen. Bei einem 1057-System mit installiertem SP2 könnte das z.B. so aussehen:
set _NT_ALT_SYMBOL_PATH=c:\NT351-SP2\SYMBOLS
set _NT_SYMBOL_PATH=K:\NT351-1057\SYMBOLS

Der Debugger versucht, zuerst die Service Pack-Symbole zu verwenden. (Die Service Pack-Symbole enthalten in diesem Fall nicht die Symbole des Basis-Build, nur die SP-Symbole). Wenn der Debugger ein bestimmtes Symbol in der SP-Struktur nicht findet, sucht er es in der 1057-Symbolstruktur.

Suchreihenfolge:

Die verschiedenen Symbolpfade werden in der oben beschriebenen Reihenfolge durchsucht. Die zuerst gefundene Symboldatei mit dem richtigen Namen wird verwendet. Im obigen Beispiel wird _NT_ALT_SYMBOL_PATH=c:\NT351-SP2\SYMBOLS zuerst durchsucht.

Überschreiben von Umgebungsvariablen:

I386KD unterstützt eine Befehlszeilenoption "-y", bei der Sie einen Symbolpfad angeben können. Die Verwendung dieser Option überschreibt jedoch die vorhandenen Umgebungsvariablen.

Pfad bei Bedarf ändern:

Sie können den Symbolsuchpfad im Debugger jederzeit mit dem Befehl "!Sympath" ändern. Beispiel:
!SYMPATH C:\SYMBOLS.

Verifizieren der Symbole

!RELOAD:

Sobald Sie erstmalig die Eingabeaufforderung "kd>" erhalten, müssen Sie "!RELOAD" eingeben. Dadurch werden die Symbolinformationen neu geladen und synchronisiert. Wenn Sie die Fehlermeldung "PsLoadedModuleList is NULL!" erhalten, haben Sie wahrscheinlich die falschen Symbole geladen. Stellen Sie sicher, dass Sie die richtige HAL.DBG- und NTOSKRNL.DBG-Datei für den Computer installiert haben, den Sie debuggen.

!PROCESS:

Symbole können auch durch Eingabe von "!PROCESS" verifiziert werden. Wenn Sie die Fehlermeldung "Can't find process list head" erhalten, haben Sie wahrscheinlich die falschen Symbole geladen.

KB:

Wenn der Stack-Trace Lücken in der Funktionsnamenliste hat, so deutet dies darauf hin, dass Symbole fehlen. Fehlende Funktionen könnten auch auf einen beschädigten Stack hinweisen, aber das kommt nur selten vor. Überprüfen Sie Ihre Symbole nochmals, bevor Sie einen beschädigten Stack annehmen. Sehen Sie sich auch die Rückgabeadressen im Stack an. Sie sollten alle größer als 8000000 sein.

!SYMPATH:

Sie können falsche Symbole korrigieren, indem Sie ein anderes Befehlsfenster öffnen, die richtigen Symbole kopieren und einen Debugger-!reload durchführen oder den richtigen Pfad mit !SYMPATH symbol_path angeben.

Weiterführende Informationen zur Verifizierung von Symbolen

Kunden wissen manchmal nicht, welche Treiberversionen sie auf ihren Computern installiert haben. Sie haben vielleicht einen Hotfix für NTFS installiert, kennen die Bug-Nummer jedoch nicht. Sie müssen eventuell manuell ermitteln, welche .DBG-Dateien benötigt werden.

Die beste Möglichkeit, sich zu vergewissern, dass Zieldateien und DBGs sich entsprechen, ist das Anzeigen ihres Prüfsummenwertes. Dieser Wert ist im Vorspann der Datei gespeichert.

Hinweis: Suchen Sie im MSDN nach "Portable Execution File Format", um mehr über Betriebssystem-Dateiformate zu erfahren. Der PE-Vorspann enthält Versionsnummern, Link-Datum/-Zeit usw.

Hier geht es darum, zunächst die Prüfsumme der Kundendateien zu suchen und dann eine dbg-Datei, die eine entsprechende Prüfsumme hat.

Es gibt viele Möglichkeiten, die Prüfsumme aus Ziel- und dbg-Dateien zu extrahieren. Wenn Sie Zugriff auf die Dateien haben, können Sie folgende Vorgehensweise wählen. In diesem Beispiel wird die Datei NTOSKRNL verwendet.

LINK32:

Dieses Dienstprogramm ist im NT-Build-Unterverzeichnis \MSTOOLS zu finden:
LINK32.EXE -DUMP -HEADERS NTOSKRNL.EXE LINK32.EXE -DUMP -HEADERS NTOSKRNL.DBG

DUMPBIN:

Dieses Dienstprogramm ist im Visual C-Bin-Verzeichnis zu finden:
DUMPBIN.EXE /HEADERS NTOSKRNL.EXE DUMPBIN.EXE /HEADERS NTOSKRNL.DBG

Wenn Sie einen Debugger für ein System- oder Absturzspeicherabbild verwenden, finden Sie die Prüfsumme der Zieldatei, indem Sie den Vorspann der Datei im Speicher anzeigen.
  1. !DRIVERS - Liefert Ihnen die Basisadresse des Treibers.
  2. dd baseaddr+d8 L1

Getestete Versionen

Wenn Sie Debug-getestete Versionen von Windows NT-Dateien installieren, müssen Sie spezielle Vorkehrungen für ihre DGB-Symboldateien treffen. Bei manchen Hotfix-getesteten Builds sind die Symbolinformationen in die Zieldatei integriert. In solchen Fällen kopieren Sie die Datei und nennen Sie sie *.DBG. Stellen Sie die Datei in das normale Symbolunterverzeichnis, also \SYMBOLS\EXE.

Alle freigegebenen Test-Builds haben genau wie freigegebene Versionen separate dbg-Dateien. Die DBGs von Testversionen und freigegebenen Versionen sind jedoch unterschiedlich. Beispielsweise enthält das MS NT DDK einen kompletten Test-Build von NT. Es enthält ebenfalls einen kompletten Symbolsatz.

Hinweis: Testversionen des NT-Kernels sind identisch für Multiprozessor- und Einprozessorsysteme.

Symbolpfade

Verkaufsprodukt:
CD-ROM \SUPPORT\DEBUG\I386\SYMBOLS
\\NTX86X\FREEBINS.XXX



Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Eigenschaften

Artikel-ID: 138258 - Geändert am: Dienstag, 19. August 2003 - Version: 2.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows NT Server 3.5
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 3.1
  • Microsoft Windows NT Workstation 3.5
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Advanced Server 3.1
Keywords: 
kbusage KB138258
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com