Produktionsdebugging für.net Framework-Anwendungen
|
|
|
- Hermann Berger
- vor 8 Jahren
- Abrufe
Transkript
1 Produktionsdebugging für.net Framework-Anwendungen Debuggen eines unerwarteten Prozessabbruchs November 2002 Zusammenfassung: Dieses Kapitel beschreibt das Debugverfahren, das angewendet wird, wenn der ASP.NET-Prozess unerwartet abbricht und Ursache und Fehler nicht bekannt sind. Möglicherweise wurde eine systemeigene Ausnahme ausgelöst oder der Prozess wurde angewiesen, abzubrechen. Die Schritte zur Fehlerbehebung sind in diesen Fällen ähnlich, unabhängig davon, wodurch der Fehler ausgelöst wurde. Dieses Kapitel beschäftigt sich mit dem unerwarteten Abbruch. In der Schritt-für- Schritt-Anleitung werden unerwartete Abbrüche anhand eines COM- Interop-Beispiels verdeutlicht. Dabei ist jedoch zu beachten, dass Abstürze eine Reihe von Ursachen haben können und es sich hier nicht um reine COM-Interop-Aspekte handelt. In der Beispielanwendung ruft ASP.NET eine COM-Komponente auf, durch die der Aspnet_wp.exe- Prozess abgebrochen wird. Der Abschnitt "Handhaben von COM-Threading in ASP.NET" enthält einige Hintergrundinformationen zur Verwendung von COM-Interop durch ASP.NET und zur Funktionsweise der ASPCompat- Seitendirektive. Obwohl die Wiedergabe dieses Problems auf Ihrem Computer Ihnen u.u. aufgrund der verschiedenen Betriebssysteme und Laufzeitversionen nicht dieselben Ergebnisse liefert, sollten Sie eine ähnliche Ausgabe erhalten. Die Debuggingkonzepte sind dieselben. Da alle Microsoft.NET Framework-Anwendungen dieselbe Speicherarchitektur verwenden, können Sie zudem Ihre hier gewonnenen Kenntnisse über COM-Interop und das Debuggen schwerwiegender Ausnahmen in ASP.NET auf andere.net-umgebungen wie z.b. Konsolenanwendungen, Anwendungen des Betriebssystems Microsoft Windows und Windows-Dienste anwenden. Inhalt Handhaben von COM-Threading in ASP.NET Szenario: Unerwarteter Prozessabbruch Schlussfolgerung Handhaben von COM-Threading in ASP.NET Alle neuen Technologien müssen mit vorhanden Technologien kompatibel sein, da das Neuschreiben von vorhandenem Code unter Umständen sehr
2 kostenintensiv ist und sich dabei darüber hinaus Fehler einschleichen können. Ehe Sie also ältere COM-Komponenten in einen neueren ASP.NET-Code integrieren, sollten Sie sich mit COM+-Anwendungen vertraut machen. Dabei gelten immer noch die alten COM-Regeln, die auch bei der ASP.NET-Architektur zu beachten sind. Anmerkung Detaillierte Informationen zu COM- Threadingmodellen finden Sie im Artikel "COM Threading and Application Architecture in COM+ Applications" (in Englisch) auf der MSDN-Website unter folgender Adresse: -us/dncomser/html/comthread.asp. ASP.NET und COM-Interop In der Regel rufen ASP.NET-Seiten verwaltete.net-objekte auf, so dass das Programmieren mit ASP.NET keine Detailkenntnisse über COM, COM- Threading oder COM-Regeln erfordert. Dennoch ist es bei der Migration vorhandener Webanwendungen in.net Framework manchmal erforderlich, systemeigene COM-Komponenten zur Durchführung einiger Geschäftsfunktionen aufzurufen. Es gibt zwei Möglichkeiten, systemeigene COM-Komponenten aus.net aufzurufen: frühes Binden und spätes Binden. Beim frühen Binden sind die Informationen zur systemeigenen COM-Komponente schon zur Entwurfzeit bekannt. Beim frühen Binden erhalten Sie einen schnelleren Zugriff auf COM-Objekte als beim späteren Binden. Darüber hinaus ermöglicht es das Einschließen eines Verweises auf eine importierte COM-Komponente, wenn Sie die Assembly kompilieren. Wenn Sie mit dem frühen Binden arbeiten und eine systemeigene COM-Komponente importieren, die in.net Framework verwendet werden soll, müssen Sie eine Interop-Assembly erstellen. Eine.NET-Assembly muss Metadaten enthalten. Deshalb müssen Sie eine Interop-Assembly erstellen, die dafür sorgt, dass die erforderlichen Metadaten von der COM-Typenbibliothek erstellt werden. In Microsoft Visual Studio.NET geschieht dies über die Funktion Add References (Verweis hinzufügen) oder die Datei Tlbimp.exe des.net Framework-SDK. Ist eine Interop-Assembly vorhanden, können Sie über das Schlüsselwort "new" genau wie bei einem verwalteten Objekt eine Instanz der systemeigenen COM-Komponente erstellen. Beim späten Binden sind die Informationen zur systemeigenen COM- Komponente erst zur Laufzeit bekannt. Eine spätgebundene Serverinstanz einer COM-Komponente können Sie mit der HttpServerUtility.CreateObject()-Methode erstellen, indem Sie den programmtechnischen Bezeichner (ProgID) der Komponente an Server.CreateObject() übergeben. COM-Komponenten und ASP.NET
3 Zum besseren Verständnis sollten Sie wissen, wie COM und ASP.NET die von Ihnen benötigten Komponenten instanziieren. Wo die COM- Komponente in Windows 2000 und XP instanziiert wird, hängt im Wesentlichen davon ab, wie das Threadingmodell der systemeigenen COM-Komponente in der Registrierung gekennzeichnet ist. Möglich wären Free, Apartment, Neutral oder Both. In diesem Kapitel konzentrieren wir uns auf die Kennzeichnungen Free und Apartment. Als "Free" gekennzeichnete Komponenten Wenn der ASP.NET-Code eine als Free gekennzeichnete COM- Komponente aufruft, wird diese in dem Threadpool instanziiert, in dem die ASP.NET-Seite gestartet wurde. Die Treadpoolthreads, die ASP.NET-Seiten verarbeiten, wie Komplettierungsportthreads für die Ein-/Ausgabe (E/A) und Workerthreads, werden als Multithread-Apartmentthreads (MTA) initialisiert. Da die Komponente als Free gekennzeichnet ist und der ASP.NET-Thread als MTA initialisiert wurde, ist ein Threadwechsel nicht erforderlich. Die Leistungseinbußen sind minimal. Als "Apartment" gekennzeichnete Komponenten In der Regel sind COM-Geschäftskomponenten, die über ASP oder MTS/COM+ aufgerufen werden, als Apartment gekennzeichnet. Das Konzept "Single-Threaded Apartment (STA)" ist nicht mit dem Standardmodell für den ASP.NET-Threadpool, also MTA, kompatibel. Deshalb kommt es beim Aufrufen einer als Apartment gekennzeichneten, systemeigenen COM-Komponente einer ASP.NET-Seite zu einem Threadwechsel und einem apartmentübergreifenden COM-Marshalling. Wurde die als Apartment gekennzeichnete COM-Komponente nicht in COM+ konfiguriert, wird diese auf dem Host-STA-Thread des Aspnet_wp.exe-Prozesses instanziiert. Wurde die als Apartment gekennzeichnete COM-Komponente in COM+ konfiguriert, findet für den COM+-STA-Workerthread durch den MTA-Thread, auf dem ASP.NET gestartet wurde, ein Threadwechsel statt. Fand keine Konfiguration statt, und die als Apartment gekennzeichnete Komponente führt einen langandauernden Blockierungsaufruf durch, dann können keine neuen, nicht konfigurierten und als Apartment gekennzeichneten Komponenten instanziiert werden oder auf demselben Thread Operationen durchführen. Dies kann u.u. zu einem ernstzunehmenden Engpass führen. Um dies zu vermeiden, wurde eine neue Direktive mit der Bezeichnung ASPCompat in das System.Web.UI.Page-Objekt eingeführt. Funktionsweise von "ASPCompat" Das ASPCompat-Attribut reduziert Threadwechsel aufgrund inkompatibler COM-Threadingmodelle. D.h., ist eine COM-Komponente als Apartment gekennzeichnet, führt die ASPCompat = "true"-direktive
4 einer ASP.NET-Seite die mit Apartment gekennzeichnete Komponente auf einem der COM+-STA-Workerthreads aus. Angenommen, Sie fordern eine Seite mit der Bezeichnung UnexpectedCompat.aspx an, die die ASPCompat ="true"-direktive enthält. Beim Kompilieren prüft der Seitencompiler, ob die Seite den ASPCompat-Modus erfordert. Da dieser Wert vorhanden ist, modifiziert der Compiler die erzeugte Seitenklasse so, dass die IHttpAsyncHandler- Schnittstelle implementiert wird, fügt Methoden zum Implementieren eben dieser Schnittstelle hinzu und ändert den Seitenklassenkonstruktor, um die Verwendung von ASPCompatMode zu verdeutlichen. Zum Implementieren der IHttpAsyncHandler-Schnittstelle sind die Methoden BeginProcessRequest und EndProcessRequest erforderlich. Die Implementierung dieser Methoden enthält Aufrufe von this.aspcompatbeginprocessrequest und this.aspcompatendprocessrequest. Wenn Sie den vom Seitencompiler erstellten Code einsehen möchten, nehmen Sie im <compilation>-abschnitt der Dateien web.config oder machine.config die Einstellung Debug="true" vor. In unserem Beispiel finden Sie die Datei für den Code unter C:\Windows\Microsoft.NET\Framework\v \Temporary ASP.NET Files\debugging\34374a37\79f52287\0n9-hgqi.cs. Nachfolgend der Quellcode für die Klassendefinition, den Klassenkonstruktor und die implementierten Methoden: Die Page.ASPCompatBeginProcessRequest()-Methode stellt fest, ob die Seite bereits auf einem COM+-STA-Workerthread ausgeführt wird. Ist dies der Fall, kann der Aufruf weiterhin synchron ausgeführt werden. Üblicher ist die Ausführung einer Seite auf einem.net-mta- Theadpoolthread. ASPCompatBeginProcessRequest() führt einen asynchronen Aufruf der systemeigenen Funktion ASPCompatProcessRequest() innerhalb von Aspnet_isapi.dll durch. Im Folgenden wird beschrieben, was passiert, wenn COM+ im zuletzt genannten Szenario aufgerufen wird: 1. Die systemeigene Funktion ASPCompatProcessRequest() konstruiert eine ASPCompatAsyncCall-Klasse, die einen Rückruf der ASP.NET-Seite sowie ein durch ASP.NET erstelltes Kontextobjekt enthält. Die systemeigene ASPCompatProcessRequest()- Funktion ruft dann eine Methode auf, die eine COM+-Aktivität generiert, und übergibt diese an COM+. 2. COM+ empfängt diese Anforderung und bindet die Aktivität an einen STA-Workerthread. 3. Ist der Thread an die Aktivität gebunden, ruft er die ASPCompatAsyncCall::OnCall()-Methode auf, welche die Interna
5 initialisiert, so dass diese von ASP.NET aufgerufen werden können (wie beim klassischen ASP-Code auch). Die Funktion führt einen Rückruf in den verwalteten Code aus, so dass die ProcessRequest()-Methode der Seite mit der Ausführung fortfahren kann. 4. Der Seitenrückruf wird aufgerufen, und die ProcessRequest()- Funktion wird weiterhin auf dem STA-Thread ausgeführt. Dieser Vorgang reduziert die Anzahl der Threadwechsel, die notwendig sind, um als Apartment gekennzeichnete systemeigene COM- Komponenten auszuführen. 5. Hat die ASP.NET-Seite die Ausführung abgeschlossen, erfolgt der Aufruf von Page.ASPCompat EndProcessRequest(), um die Anforderung abzuschließen. Szenario: Unerwarteter Prozessabbruch Sie kennen nun den Zusammenhang zwischen COM-Threadingmodellen und ASP.NET. Beschäftigen wir uns nun mit den Problemen, die auftreten können, wenn systemeigener und verwalteter Code miteinander vermischt werden, und wie diese gelöst werden können. In diesem Szenario wird eine Fehlermeldung vom Typ "Server Application Unavailable" (Serveranwendung nicht verfügbar) im Browser angezeigt, und das Ereignisprotokoll der Anwendung enthält den Eintrag "aspnet_wp.exe stopped unexpectedly" (aspnet_wp.exe wurde unerwartet beendet). Während andere Prozesse weiterhin ausgeführt werden, recycelt der Aspnet_wp.exe-Prozess, so dass damit verbundene Status oder Caches gelöscht werden. Hierbei handelt es sich um keine diagnostischen Fehler sie geben nicht die Ursache des Problems an. Wir wissen jedoch dadurch, dass der Prozess abgebrochen wurde, dass etwas den Aufruf von kernel32!exitprocess() bewirkt hat. Ein Snapshot des Prozesses vor dem Recycling gibt möglicherweise einige Hinweise. Das Szenario kann sich in unterschiedlicher Form abspielen, z.b.: Szenario 1: Eine Produktions-Website stürzt ab, und die Verbindung zum Browserclient geht verloren. Szenario 2: Ein Client greift auf eine Börsen-Website zu und versucht Aktienkurse einzusehen. Er macht einen Eintrag auf der Seite, drückt die Eingabetaste und im Browser erscheint die Meldung, dass die Serveranwendung nicht verfügbar ist. Das Anwendungsprotokoll enthält folgenden Eintrag: "aspnet_wp.exe (PID:1234) stopped unexpectedly" (aspnet_wp.exe (PID:1234) wurde unerwartet beendet). Diese Meldung ist jedoch sehr ungenau; eine genaue Ursache wird nicht genannt. Die Gedankengänge im Einzelnen
6 Das folgende Flussdiagramm enthält Schritt-für-Schritt-Anleitungen, mittels derer Sie mehr Informationen zum Problem erhalten, so dass Sie den Fehler beheben können. Ziel ist es, Ihnen einige grundlegende Techniken zu erläutern, die auf ähnliche Produktionsszenarios und - architekturen angewandt werden können. Abbildung 4.1. Der Gedankengang Flussdiagramm Auch wenn die einzelnen Gedankengänge in der folgenden Schritt-für- Schritt-Anleitung beschrieben werden, sollten wir vorab schon einmal einen detaillierteren Blick auf das Flussdiagramm werfen. Befindet sich der Server in Produktion? Ist dies der Fall und kann der Fehler reproduziert werden, können Sie ein Speicherabbild erstellen, um die Threadaktivität zu untersuchen, die durchgeführt wurde, als das Problem auftrat. Die Zeit, die verstreicht, ehe das Problem reproduziert wird, gibt an, wie lange Sie auf die Erstellung des Abbildes warten müssen, nachdem der Debugger angehängt wurde. Arbeitet der Server derzeit nicht, können Sie mit dem Tool Ihrer Wahl debuggen. Ausführen von ADPlus, um das Auftreten von Ausnahmen im Prozess zu überwachen Führen Sie ADPlus im -crash-modus für den Aspnet_wp.exe-Prozess aus, und reproduzieren Sie anschließend das Problem, um eine Speicherabbilddatei zu erzeugen.
7 ADPlus behandelt im -crash-modus sowohl Ausnahmen der ersten als auch der zweiten Chance. Die beiden Ausnahmen unterscheiden sich hinsichtlich des Zeitpunkts, zu dem sie behandelt werden. Eine Ausnahme der ersten Chance bedeutet, dass etwas schiefgelaufen ist, die Anwendung das Problem aber behoben hat. Bei Ausnahmen der ersten Chance im -crash-modus protokolliert ADPlus die Stapelüberwachung, erstellt ein Minispeicherabbild und fährt mit der Ausführung fort. Eine Ausnahme der zweiten Chance ist eine nicht behandelte Ausnahme der ersten Chance. Bei Ausnahmen der zweiten Chance protokolliert ADPlus eine Stapelüberwachung, erstellt ein vollwertiges Speicherabbild des Prozesses und hält sowohl den Debugger als auch den Prozess an. Greift ADPlus erst ein, wenn der Abbrechvorgang des Prozesses nahezu abgeschlossen ist, zeigt das Speicherabbild nur einen Thread (warum, wird später noch erklärt). Sie wollen jedoch die Threadaktivität abfangen, ehe sie abbricht. Dies erreichen Sie mit einem ADPlus.vbs-Skript. Weitere Informationen zu ADPlus finden Sie im Artikel Q286350, "SO WIRD'S GEMACHT: Verwenden von Autodump+ zur Problembehandlung bei "Hängen" und "Abstürzen"" in der Microsoft Knowledge Base unter Informationen zum Ausführen von ADPlus durch Terminal Server finden Sie im Artikel Q323478, "You Cannot Debug Through a Terminal Server Session" (in Englisch) in der Microsoft Knowledge Base unter Untersuchen der Speicherabbilddatei Enthält der Name der Speicherabbilddatei nicht den Text "Process_was_shutdown" untersuchen Sie die Speicherabbilddatei mit WinDbg und SOS.dll. Ist der Text enthalten, überprüfen Sie, wie viele Threads in der Speicherabbilddatei sind. Ist nur ein Thread enthalten, führen Sie zum Unterbrechen eine geänderte Version von ADPlus aus (wie weiter unten beschrieben), und erstellen Sie ein Speicherabbild, ehe der Prozess beendet wird. Untersuchen Sie die Speicherabbilddatei mit WinDbg und SOS.dll. Beachten Sie den Inhalt der systemeigenen und der verwalteten Stapelüberwachung. Stellen Sie fest, warum eine Ausnahme oder ein Abbruch auftrat und ob das Problem mit einem Workaround oder einem Fix behoben werden kann. Unerwarteter Prozessabbruch Schritt-für-Schritt- Anleitung Sie wissen mittlerweile, wodurch Fehler vom Typ "Server Application Unavailable " (Serveranwendung nicht verfügbar) verursacht werden und wie Sie diese beheben können. Nachfolgend nun eine Schritt-für-Schritt-
8 Anleitung, in der ein vereinfachtes aber realistisches Problem beschrieben wird. Ziel des Ganzen ist es, Ihnen die Fehlerbehebungstechniken zu erläutern. Nachfolgend nun das Szenario: Der Aspnet_wp.exe-Prozess wurde aus nicht bekannten Gründen abgebrochen. Es werden Fehlermeldungen angezeigt, die jedoch zu ungenau sind, um anhand dieser das Problem zu lösen. Sie müssen den Ausführungsaufruf verfolgen, auch wenn dieser threadübergreifend stattfindet. Letztendlich stellen Sie fest, dass der Prozess aufgrund des Codes abbricht. Der verwaltete Code führt einen systemeigenen Aufruf durch, durch den der Prozess abbricht. Der Code enthält darüber hinaus das COM-Interop-Konzept sowie mehrere ATL-Klassen, die unterschiedliche Threadingmodelle verwenden. Durch das erste Schaltflächen-Klickereignis wird eine als Apartment gekennzeichnete, nicht konfigurierte COM-Komponente aufgerufen; durch das zweite Schaltflächen-Klickereignis wird eine als Free gekennzeichnete, nicht konfigurierte COM-Komponente aufgerufen. Die Schritt-für-Schritt- Anleitung befasst sich mit dem ersten Fall und zeigt, wie.net Framework die Aufrufe behandelt. In diesem Szenario führen Sie die folgenden Schritte durch: 1. Wechseln Sie zur ASP.NET-Seite, und sehen Sie sich die in der Tabelle processmodel angezeigten Werte an. 2. Folgen Sie den Gedankengängen aus dem oben abgebildeten Flussdiagramm, und spüren Sie die Fehler auf, die im Browser und im Ereignisprotokoll angezeigt werden. 3. Führen Sie ADPlus aus, um den Prozess zu überwachen. Lokalisieren Sie den Fehler, und erstellen Sie eine Speicherabbilddatei. 4. Sehen Sie sich den Namen der Speicherabbilddatei an, und stellen Sie fest, ob der Prozess abgebrochen wurde oder ob er eine Ausnahme der zweiten Chance ausgelöst hat. 5. Verwenden Sie WinDbg und SOS.dll, um die Daten in der Speicherabbilddatei zu überprüfen. Dies gilt insbesondere für die systemeigenen und die verwalteten Threads. Beim Zusammenführen der verwalteten und der systemeigenen Aufruflisten sehen Sie, dass der verwaltete Code fälschlicherweise den systemeigenen Code aufruft und auf den Teil des systemeigenen Codes zeigt. Basisansicht Sammeln Sie zuerst einmal einige Basisdaten, um diese mit nachfolgenden Ausgaben zu vergleichen. So zeigen Sie "Unexpected.aspx" an 1. Öffnen Sie ein Eingabeaufforderungsfenster, und geben Sie iisreset ein, um IIS neu zu starten.
9 2. Öffnen Sie ein Browserfenster, und wechseln Sie zu Abbildung 4.2 enthält Basiswerte, die mit nachfolgenden Ausgaben zu vergleichen sind. Beachten Sie die angezeigten Informationen, insbesondere die Tabellendaten. Einige Beschriftungen bedürfen keiner weiteren Erklärung. (Weitere Informationen zu diesen Indikatoren finden Sie im Kapitel 2, "Debuggen von Speicherproblemen".) Die Felder ProcessID, RequestCount, Status und ShutdownReason ändern sich im Laufe der Übung. Das Feld RequestCount ist gleich Null, da der Wert abgefragt wurde, während die erste Anforderung ausgeführt wurde. Die Anforderung ist also noch nicht abgeschlossen. In diesem Feld steht die Anzahl abgeschlossener Anforderungen. Der Status ist Alive d.h., der Prozess wird ausgeführt. Abbildung 4.2. Basisdaten für "Unexpected.aspx" Durch Öffnen einer weiteren Instanz von Unexpected.aspx.cs in Visual Studio.NET oder im Editor können Sie den Code anzeigen und die Kommentare lesen. Beim STA-Schaltflächenklickereignis-Handler handelt es sich um verwalteten Code, der systemeigenen Code aufruft und Parameter übergibt, durch die die Anwendung letztendlich abbricht oder abstürzt.
10 Klicken Sie zum Starten der Übung auf Call STA COM Object. Der Browser gibt folgende Fehlermeldung aus: The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request. (Die Webanwendung auf diesem Webserver ist derzeit nicht verfügbar. Klicken Sie im Webbrowser auf 'Aktualisieren', um den Vorgang zu wiederholen.) Administrator Anmerkung: Im Systemereignisprotokoll des Webservers finden Sie eine Fehlermeldung, in der die Ursache dieses Anforderungsfehlers näher erläutert wird. Überprüfen Sie diesen Protokolleintrag, um zu ermitteln, wodurch dieser Fehler ausgelöst wurde. Das Anwendungsereignisprotokoll enthält folgenden Fehler: Schließen Sie das Browserfenster, und öffnen Sie es anschließend erneut. Wechseln Sie zu Abbildung 4.3 enthält die Tabellen, die im Browser angezeigt werden sollten.
11 Abbildung 4.3. Daten aus "Unexpected.aspx" nach dem Absturz Der RequestCount erhöht sich um 2 einmal, um die Seite zum Anzeigen zu durchsuchen, und einmal für den ersten Schaltflächenklick. Der Browser gibt für Status den Wert "Terminated" an und als ShutdownReason den Wert "Unexpected". Wie in Kapitel 1 unter "IIS 5.x-Prozessmodell" beschrieben, startet die ProcessModel- Integritätsüberwachung einen neuen Aspnet_wp.exe-Prozess, nachdem der erste abgebrochen wurde. Einem neuen Prozess wird eine neue Prozess-ID zugewiesen. Debuggen von Speicherabbilddateien mit WinDbg
12 Ohne auf den Code zu achten, können Sie bereits über die Ursache des Absturzes spekulieren ein Stapelüberlauf, Code, der ProcessExit() oder TerminateProcess() aufgerufen hat, oder ein externer Überwachungsprozess, wodurch der Aspnet_wp.exe-Prozess beendet wurde. Um einen Snapshot der Aktivitäten der Threads zu erhalten, können Sie mit folgender Befehlszeile ADPlus im -crash-modus unter Aspnet_wp.exe ausführen. Anmerkung Der -quiet-schalter gewährleistet, dass Sie auch dann eine Speicherabbilddatei erstellen können, wenn kein Symbolpfad für ADPlus angegeben ist. Klicken Sie zum Erzeugen der Fehlers erneut auf Call STA COM Object. CDB.exe wird in einem minimierten Fenster ausgeführt. Das Tool wartet auf den Aufruf von ProcessExit() und erzeugt anschließend die Speicherabbild- und Textdateien. Nach dem Schließen des Debuggerfensters wird das vollständige Speicherabbild erstellt. Den neuesten \Crash_Mode-Ordner finden Sie im Verzeichnis C:\Debuggers. Der Dateiname lautet in etwa PID ASPNET_WP.EXE Process_was_shutdown full_ _ _069c.dmp. Weitere Schritte Versuchen Sie Folgendes: Verwenden Sie den Debugbuild. Für die Beispiele in diesem Dokument wurde ein Releasebuild eingesetzt. Servermeldungen und Speicherabbildausgabe unterscheiden sich von denen des Debugbuilds. Betrachten Sie das von ADPlus erstellte Protokoll. Sehen Sie im Verlauf nach, was das System zur Zeit des Absturzes gerade geladen hat. Untersuchen der Speicherabbilddatei Untersuchen Sie die Speicherabbilddatei, die beim Recyceln des Aspnet_wp.exe-Prozesses erstellt wurde. So untersuchen Sie die Speicherabbilddatei mit WinDbg 1. Zeigen Sie im Menü Start auf Debugging Tools for Windows, und klicken Sie anschließend auf WinDbg. 2. Klicken Sie im Menü File auf Open Crash Dump. 3. Wählen Sie die entsprechende Speicherabbilddatei aus, und klicken Sie auf Open. 4. Beantworten Sie ggf. die Eingabeaufforderung nach dem Speichern der Basisarbeitsbereichinformationen mit No.
13 5. Wenn ein Disassemblyfenster geöffnet wird, schließen Sie es und klicken im Menü Window auf Automatically Open Disassembly. Für die Dateien, mit denen der Debugger die Speicherabbilddatei analysiert, müssen Symbolpfade eingegeben werden. Die für den Debugcomputer erforderlichen Symboldateiversionen müssen den Versionen auf dem System entsprechen, auf dem die Speicherabbilddatei erstellt wurde. Nehmen Sie Symbole aus dem.net Framework-SDK und Visual Studio.NET auf sowie Symbole, die im folgenden System32- Ordner enthalten sind: \%WINDIR%\system32. Gehen Sie zum Eingeben der Symbolpfade wie folgt vor: Geben Sie in der Befehlszeile Folgendes ein: Anmerkung Wenn Sie nur das.net Framework-SDK (ohne Visual Studio.NET) installiert haben, müssen Sie C:\Programme\Microsoft Visual Studio.NET\FrameworkSDK\symbols durch C:\Programme\Microsoft.NET\FrameworkSDK\symbols ersetzen. Geben Sie den Symbolpfad für WinDbg über die _NT_SYMBOL_PATH-Umgebungsvariable ein. Klicken Sie in WinDbg im Menü File auf Symbol File Path und geben anschließend Folgendes ein: "SRV" im Pfad weist WinDbg an, Symbole vom externen Symbolserver in den lokalen Symbolcache zu kopieren. So verwenden Sie dieselben Symbolpfade für andere Speicherabbilder Klicken Sie im Menü File in WinDbg auf Save Workspace As, und geben Sie anschließend einen Namen für die gespeicherten Pfade ein, z.b..net-debuggingsymbole. Sehen Sie sich die Speicherabbilddatei an. Geben Sie z.b. ~*kb ein, um die Aufruflisten näher zu untersuchen. Stellen Sie anschließend sicher, dass alle Symbole erfolgreich geladen wurden. Falls die unten stehende Meldung angezeigt wird, müssen Sie den Symbolpfad so ändern, dass er die korrekten Symbole enthält. Sie lösen das Problem, indem Sie im Symbolpfad die Symbole für die entsprechende DLL einschließen. Sie können dazu folgenden Befehl verwenden: Geben Sie anschließend.reload ein.
14 Untersuchen der systemeigenen und der verwalteten Ausgabe Finden Sie heraus, mit wie vielen Threads Sie arbeiten. Geben Sie im Befehlsfenster eine Tilde (~) ein, um alle Threads des aktuellen Prozesses anzuzeigen. In diesem Beispiel gibt es einen Thread: Dieser befindet sich nicht eingefroren im Status "Suspend", d.h., das System führt den Thread bei Bedarf aus. Beachten Sie die systemeigene Aufrufliste für den Thread, die ausgeführt wurde, als die Speicherabbilddatei erstellt wurde. Die Aufrufliste verfolgt die Funktionsaufrufe und die an diese Funktionen übergebenen Parameter. Der Befehl k zeigt den Stapelrahmen eines vorhandenen Threads an. Bei mehr als einem Thread sollten Sie den Befehl ~*k 200 ausführen und die Aufruflisten aller geladenen Threads auflisten. Da jedoch nur ein Thread vorhanden ist, zeigen Sie mit k 200 die gesamte Aufrufliste für diesen Thread an (vorausgesetzt, der Thread ist kleiner als 200 Stapelrahmen). Anmerkung Ihre Ausgabe unterscheidet sich möglicherweise aufgrund von Zeit- und Umgebungsfaktoren von der im Beispiel gezeigten. Es wird nur ein Thread ausgeführt, da sich der Prozess im letzten Stadium des Abbruchs befindet. Alle außer dem letzten Thread wurden gelöscht; verwaltete Threads wurden bereinigt. Würden Sie den SOS-Befehl!threads ausführen, würde für die verwalteten Thread-IDs, die nicht mit systemeigenen Threads im Prozess verknüpft sind, "XXX" angezeigt werden. Aufgrund des vereinfachten Szenarios handelt es sich bei dem ausgegebenen Thread möglicherweise um den Thread, der kernel32!exitprocess aufruft. Dies wäre im Produktionsmodus nicht üblich. Ein Produktionswebserver bedient in der Regel mehrere Seiten gleichzeitig und es werden viele Threads ausgeführt, wodurch sich der Fehlerbehebungsprozess verkompliziert. Da der Prozess darüber hinaus gerade heruntergefahren wird, stimmen die im Prozessspeicher enthaltenen verwalteten Strukturen u.u. nicht mit systemeigenen Strukturen überein oder sind nicht verlässlich. Es ist schwierig festzustellen, welcher Thread den Prozess abgebrochen hat und ob dieser Aufruf direkt von einer ASP.NET-Seite erfolgte. Deshalb muss als Nächstes ein benutzerspezifisches Debuggerskript an den Prozess angehängt werden und einer der Funktionen der Aufrufliste ein Haltepunkt zugeordnet werden, der vor Prozessbeendigung aufgerufen wird. Andere Threads (verwaltet/systemeigen) enthalten möglicherweise weitere Informationen. Wo Sie den Haltepunkt setzen, hängt davon ab, ob Sie mit Symbolen arbeiten, die mit den fraglichen Modulen übereinstimmen. Haben Sie
15 Hotfixes installiert, kann sich dies möglicherweise auf die Auflösung der Symbole in den DLLs auswirken. Das Setzen eines Haltepunkts ist dann nicht möglich. Verwenden Sie zum Erstellen eines Speicherabbildes für diese Übung die benutzerdefinierte ADPlus.vbs-Version mit der Bezeichnung ADPlus_KernelExit.vbs. (Downloadanweisungen finden Sie in Kapitel 1, "Einführung in Produktionsdebugging für.net Framework- Anwendungen"). Die an ADPlus vorgenommenen Änderungen finden Sie in der CreateCDBScript()-Funktion, welche die CFG-Datei erstellt. Diese konfiguriert den CDB-Debugger, wenn er an den Prozess angehängt wird. Stellen Sie sicher, dass APlus_KernelExit.vbs im Ordner C:\Debuggers gespeichert ist. Es sind Symbole erforderlich. Deshalb müssen Sie entweder mit dem Internet verbunden sein oder die Symbole für kernel32.pdb lokal verfügbar halten. Der Internetzugriff ist problemlos, da dieses Tool den Pfad zum externen Symbolserver von Microsoft für Sie einrichtet. Folgende Zeilen wurden zum ADPlus.vbs-Skript hinzugefügt: Wie bereits erwähnt, richtet ADPlus_KernelExit.vbs den Symbolpfad so ein, dass der öffentliche Symbolserver von Microsoft verwendet wird. Das Tool stellt sicher, dass die Symbole für die kernel32!exitprocess()- Funktion geladen werden können. Da bekannt ist, dass der Prozess abgebrochen wird, legt das Tool einen Haltepunkt bei kernel32!exitprocess() fest, damit bei Erreichen des Haltepunktes eine vollständige Speicherabbilddatei erzeugt wird. Zusammen mit anderen Benutzerspeicherabbildern erzeugt das ADPlus_KernelExit.vbs-Skript ebenfalls eine Textdatei, die einen Verlauf der Ausnahmen enthält, und erstellt ein Speicherabbild der systemeigenen Stapelüberwachung für die Ausnahmen (wie auch bei der unveränderten ADPlus.vbs). Beachten Sie jedoch, dass durch das Auslösen vieler Ausnahmen über einen längeren Zeitraum hinweg möglicherweise eine sehr große Textdatei entsteht. Deshalb sollten so wenig Ausnahmen wie möglich ausgelöst werden, da das Abfangen von Ausnahmen die Ressourcen sehr belastet. Bei Bedarf empfiehlt es sich, das Erstellen der Protokolldatei zu deaktivieren. Weitere Informationen finden Sie auf der GotDotNet-Website unter "ASP.NET Performance Tips and Best Practices" (in Englisch) unter folgender Adresse: Performance Tips and Tricks.aspx. So bereiten Sie das Debuggen vor 1. Öffnen Sie ein Eingabeaufforderungsfenster, und geben Sie iisreset ein, um IIS neu zu starten.
16 2. Öffnen Sie ein neues Browserfenster, und wechseln Sie zur ASP.NET-Beispielseite unter 3. Führen Sie ADPlus_KernelExit.vbs im -crash-modus aus, und geben Sie an, welcher Aspnet_wp.exe-Prozess angehängt werden soll. 4. Wechseln Sie im Eingebeaufforderungsfenster zum Debuggerordner, und geben Sie Folgendes ein: In der Taskleiste wird ein minimiertes CDB.exe-Fenster angezeigt. 5. Klicken Sie auf der ASP.NET-Seite auf Call STA COM Object, um das CDB.exe-Fenster zu aktivieren. Der Browser sollte jetzt folgende Meldung ausgeben: Server Application Unavailable (Serveranwendung nicht verfügbar) The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request. (Die Webanwendung auf diesem Webserver ist derzeit nicht verfügbar. Klicken Sie im Webbrowser auf 'Aktualisieren', um den Vorgang zu wiederholen.) Administrator Anmerkung Im Systemereignisprotokoll des Webservers finden Sie eine Fehlermeldung, in der die Ursache für die fehlgeschlagene Anforderung genauer erläutert wird. Überprüfen Sie diesen Protokolleintrag, um zu ermitteln, wodurch dieser Fehler ausgelöst wurde. 1. Suchen Sie im Ordner C:\debuggers nach dem neuesten \Crash_Mode-Ordner. Der Name lautet in etwa Crash_Mode Date_ Time_ PM. Der Name der Speicherabbilddatei lautet in etwa PID ASPNET_WP.EXE Kernel32ExitProcess full.dmp. 2. Öffnen Sie erst WinDbg und anschließend das Absturzspeicherabbild. Setzen Sie dann den Symbolpfad wie gehabt. 3. Aktivieren Sie das Kontrollkästchen Reload, oder geben Sie im Befehlsfenster.reload ein. So untersuchen Sie systemeigene Threads Listen Sie die systemeigenen Threads mit dem Tildebefehl (~) auf. In dieser Speicherabbilddatei befinden sich erheblich mehr Threads als in der vorherigen. Listen Sie die Aufruflisten der systemeigenen Threads mit dem Befehl ~*k 200 auf. Threaddiskussion
17 In der folgenden Tabelle sind die Funktionen zusammengefasst, die die einzelnen Threads ausführten, als die Speicherabbilddatei erzeugt wurde. Diese Funktionen sind der vorherigen Threadausgabe entnommen. Tabelle 4.1: Zusammenfassung der Threadstatus ThreadID Zweck 0 aspnet_wp!wmain 1 ole32!gettosta 2 mscorwks!threadpoolmgr::gatethreadstart 3 aspnet_wp!dopingthread 4 mscorwks!debuggerrcthread::mainloop 5 mscorwks!gcheap::finalizerthreadstart 6 mscorwks!threadpoolmgr::completionportthreadstart 7 mscorwks!threadpoolmgr::workerthreadstart 8 mscorwks!threadpoolmgr::timerthreadstart 9 RPCRT4!RecvLotsaCallsWrapper 10 ole32!dllhostthreadentry (EXIT THREAD) 11 ole32!crpcthread::workerloop 12 ole32!crpcthread::workerloop 13 mscorwks!threadpoolmgr::waitthreadstart WinDbg ohne SOS.dll zeigt nicht die verwaltete Aufrufliste an, sondern systemeigene Aufruflisten. Bei einigen verwalteten Aufrufen handelt es sich jedoch um Wrapper für systemeigene Aufrufe. Anmerkung Wenn Sie im gemischten Modus (systemeigen/verwaltet) in Visual Studio.NET an einen Prozess anhängen, zeigt Visual Studio.NET in einem Fenster sowohl Informationen zum verwalteten als auch zum systemeigenen Thread an. Untersuchen wir nun einmal genauer, was Threads sind und welche Operationen sie durchführen. Wie durch den Aufruf von aspnet_wp!wmain gezeigt wird, ist Thread 0 der Hauptthread von ASP.NET. Dieser Thread hat die Laufzeit initialisiert, die Named Pipes wieder mit InetInfo.exe verbunden und den Pingthread erstellt. Nachdem er die Initialisierung abgeschlossen hat, führt er eine Schleife durch, wobei er auf die Beendigung des Prozesses wartet. Bei Thread 1 handelt es sich um einen verwalteten Thread, auf dem sowohl verwalteter als auch systemeigener Code ausgeführt wird, und der einen Aufruf der ole32!gettosta-funktion enthält. Durch das Arbeiten mit den verwalteten Erweiterungen SOS.dll und
18 SieExtPub.dll erfahren Sie mehr über diesen Thread. Dazu später mehr. Die Threads 2, 6, 7, 8 und 13 sind ThreadpoolMgr-Threads. Beachten Sie dazu jeweils die Aufrufe für mscorwks!threadpoolmgr::gatethreadstart, mscorwks!threadpoolmgr::workerthreadstart und mscorwks!threadpoolmgr::timerthreadstart. Diese Threads sind in ASP.NET vorhanden (allerdings nicht immer in Konsolenanwendungen), da der Threadpool von ASP.NET verwendet wird. Thread 2 ist ein Gatethread, der die Integrität des Threadpools überwacht. Er ist für das Einfügen und Entfernen von Workerund E/A-Threads verantwortlich, wobei Indikatoren wie CPU- Nutzung, Häufigkeit der Garbage Collection und Threadstarvation zugrunde gelegt werden. Es gibt nur einen Thread dieses Typs. Er wird beim Ausführen der ersten E/Aoder Arbeitsanforderung erstellt. Thread 7 ist ein verwalteter Threadpool-Workerthread. Dieser Thread wartet darauf, dass ihm Arbeit zugewiesen wird. Thread 8 ist ein Zeitgeberthread, der zum Verwalten von zeitgesteuerten Rückrufen verwendet wird, die anhand der System.Threading.Timer-Klasse festgelegt wurden. Es ist nur ein Thread dieses Typs vorhanden. Er wird während der Erstellung des ersten System.Threading.Timer-Objekts erstellt. Thread 6 ist ein E/A-Komplettierungsportthread, der auf ein verwaltetes oder systemeigenes Arbeitselement wartet. Thread 13 ist ein Wartethread, der auf Handles wartet. Wird eine Wartezeit signalisiert oder überschritten, wird auf einem Workerthread ein Rückruf ausgeführt. Jeder Wartethread kann gleichzeitig auf bis zu 64 unterschiedlichen Wartehandles warten. Bei Bedarf werden neue Wartehandles erstellt. Thread 3 ist der ASP.NET-Pingthread, wie durch den Aufruf von aspnet_wp!dopingthread gezeigt wird. Dieser Thread reagiert auf die Pings, die er von der Integritätsüberwachung in InetInfo.exe erhält. Thread 4 ist ein Debuggerthread, wie durch den Aufruf von mscorwks!debuggerrcthread gezeigt wird. Alle verwalteten Prozesse haben einen Debuggerthread auch wenn kein Debugger angefügt ist. Es gibt nur einen Debuggerthread in dem jeweiligen Prozess. Dieser Thread ist vorhanden, damit ein verwalteter Debugger angefügt werden und den verwalteten Code steuern kann. Threads reagieren unterschiedlich je nachdem, ob ein verwalteter oder systemeigener Debugger angefügt wird und dadurch in das System eingreift. Wenn Sie mit einem verwalteten Debugger in den Prozess springen (z.b. CorDbg oder Visual Studio.NET), wird er ohne Eingriff in das System angefügt. Dabei wird nicht der gesamte Prozess eingefroren,
19 sondern nur die verwalteten Threads. Die systemeigenen Threads, die keine Laufzeitverweise enthalten, werden weiterhin ausgeführt. Es stehen Optionen für die Verwendung eines verwalteten Debuggers zum systemeingreifenden Anhängen zur Verfügung. Wenn Sie einen systemeigenen Debugger verwenden, kann dieser mit oder ohne Eingriff in das System angefügt werden. Wenn Sie mit Systemeingriff in den Prozess einsteigen, bricht der Prozess ab und alle Threads verwaltete und systemeigene werden heruntergefahren. Wenn Sie den Debugger ohne Eingriff in das System anfügen, hält der Prozess (und die Threads) vorübergehend an. Der Debugger hält den systemeigenen und verwalteten Code an und stellt einen Snapshot bereit. Er kann getrennt werden, und der Prozess wird wieder aufgenommen. In IIS 5.x ist nur ein Aspnet_wp.exe-Workerprozess und ein Debuggerthread vorhanden. Folglich kann dem Aspnet_wp.exe- Prozess jeweils nur ein Debugger angefügt werden. Wenn Sie es mit mehreren Webanwendungen auf demselben Computer zu tun haben, kann dies Probleme bereiten. In IIS 6.0 können Sie das Ausführen einer Anwendungsdomäne in einem separaten Anwendungspool erzwingen. (Weitere Informationen finden Sie in Kapitel 1 unter "IIS 5.x-Prozessmodell" und "IIS 6.0- Prozessmodell".) Separate Anwendungspools stellen mehrere W3wp.exe-Prozesse zur Verfügung. In diesen Prozessen werden mehrere Debuggerthreads erstellt (einer pro Prozess), was ein noch effizienteres Debuggen ermöglicht. Thread 5 ist ein Finalizerthread, wie durch den Aufruf von mscorwks!gcheap::finalizerthreadstart gezeigt wird. Wie beim Debuggerthread ist in Version 1.0 von.net Framework immer nur ein Finalizerthread vorhanden. Der Finalizerthread ruft die Finalize()-Methode von Objekten auf, wenn der Garbage Collector (GC) feststellt, dass das Objekt nicht erreichbar ist. In Visual Basic.NET können Sie eine Finalize()-Methode implementieren. Im Visual C# -Entwicklungstool und in den verwalteten Erweiterungen für das Visual C++ -Entwicklungssystem wird dieselbe Funktion von einem Destruktor ausgeführt. Weitere Informationen finden Sie im SDK in Artikeln wie "Allgemeine.NET Framework-Referenz " und "Implementieren der Methoden "Finalize" und "Dispose" zum Bereinigen von nicht verwalteten Ressourcen". Thread 9 ist ein einfacher RPC-Thread (Remote Procedure Call), der für die LRPC-Kommunikation (Local Remote Procedure Call) verwendet wird. Beachten Sie den Aufruf von RPCRT4!RecvLotsaCallsWrapper. Er behandelt eingehende RPC- Aufrufe für diesen Prozess und wartet auf Arbeit. Thread 10 ist ein Hostthread-Eingabethread, den COM zum Instanziieren der mit Apartment gekennzeichneten COM- Komponente erstellt hat. Finden Sie heraus, warum DebuggingCOM!CSTA::RaiseError ausgerechnet abort() aufruft,
20 indem Sie den Code überprüfen. Weitere Erklärungen hierzu erhalten Sie zu einem späteren Zeitpunkt. Bei den Threads 11 und 12 handelt es sich um Workerthreads, die darauf warten, dass COM Arbeit verteilt. Überprüfen des Codes Im Folgenden sehen Sie den relevanten Code aus STA.cpp. Aufgrund der Eingabeparameter stellt diese Funktion nach Aufruf drei Aktionen bereit. Die Funktion CSTA::RaiseError() ruft abort() auf, wenn 1 als erster Parameter übergeben wird. Wenn Sie ~*kb ausführen und sich die Aufrufliste ansehen, stellen Sie fest, dass 1 und 5 tatsächlich übergeben wurden. Der Absturz wird durch Aufruf von abort() verursacht, was letztendlich dazu führt, dass der Prozess beendet wird. In der Folge bricht der Aspnet_wp.exe-Prozess ab und ein neuer Prozess wird erstellt. Wie wird abort() aufgerufen? Wodurch wurde CSTA::RaiseError() aufgerufen? Können Sie verhindern, dass 1 und 5 an die Funktion übergeben werden? Sehen wir uns die verwalteten Threads einmal genauer an. Zur Überprüfung der verwalteten Ausgabe in WinDbg können Sie zwei Erweiterungs-DLLs einsetzen: SOS.dll und SieExtPub.dll. Erstere stellt die meisten der von Ihnen benötigten Funktionen bereit. Mit der Letzteren untersuchen Sie den MTA/STA-Threadwechsel. Zum Untersuchen verwalteter Threads müssen Sie die Debuggererweiterung SOS.dll laden. So untersuchen Sie die verwalteten Threads 1. Geben Sie zum Laden der Erweiterung in WinDbg.load SOS\SOS.dll ein. Erweitern Sie den Pfad wie erforderlich. In unserem Fall finden Sie die SOS.dll im Ordner SOS. 2. Geben Sie!findtable ein, um SOS mit den Tabelleninformationen für die Laufzeitversion zu initialisieren, die Sie debuggen möchten. 3. Geben Sie!threads ein. Das Ergebnis sollte in etwa wie folgt aussehen: ID f20 74c cc0 6c4 6c0 ThreadOBJ df b f9b58 State a220 b PreEmptiv e GC Enabled Enabled Enabled Enabled Enabled GC Alloc Context : : : : :
21 Domain 001a68c Lock Count Apt MTA MTA MTA STA Unk Exception (Finalizer) (Threadpoo l Worker) (GC) Drei von fünf verwalteten Threads wurden für das MTA-Threadingmodell initialisiert. Thread 10 wird für STA initialisiert und zeigt (GC). D.h., der GC wurde zu einem bestimmten Zeitpunkt auf dem Thread ausgeführt. Vier von fünf Threads befinden sich in derselben AppDomain. Thread 1 wird in einer anderen AppDomain ausgeführt, da er im virtuellen Ordner von ASP.NET ausgeführt wird. Die folgende Tabelle zeigt die Zuordnung von Threadstatus zu den Werten des im Anhang befindlichen Statusdiagramms und enthält Informationen über mögliche Ausführungsstatus des Threads. Ein Thread kann sich zu einem bestimmten Zeitpunkt in unterschiedlichen Zuständen befinden. Tabelle 4.2: Statusaufgliederung für Thread 1, Statuswert = 0xa22 Symbol Wert Beschreibung TS_InMTA 0x Thread ist Bestandteil des MTA TS_CoInitialized 0x Für diesen Thread wurde CoInitialize aufgerufen TS_Background 0x Der Thread ist ein Hintergrundthread TS_LegalToJoin 0x Gibt an, ob nun rechtmäßig ein Join() versucht werden kann Tabelle 4.3: Statusaufgliederung für Thread 6, Statuswert = 0xb220 Symbol Wert Beschreibung TS_InMTA 0x Thread ist Bestandteil des MTA TS_CoInitialized 0x Für diesen Thread wurde CoInitialize aufgerufen TS_WeOwn 0x Das offen gelegte Objekt hat diesen Thread initiiert TS_Background 0x Der Thread ist ein Hintergrundthread
22 TS_LegalToJoin 0x Gibt an, ob nun rechtmäßig ein Join() versucht werden kann Tabelle 4.4: Statusaufgliederung für Thread 7, Statuswert = 0x Symbol Wert Beschreibung TS_TPWorkerThread 0x Gibt an, dass es sich um einen Threadpool- Workerthread handelt. (Falls nicht, ist es ein Threadpool- Komplettierungsportthread) TS_ThreadPoolThread 0x Gibt an, dass es sich um einen Threadpoolthread handelt. TS_Background 0x Der Thread ist ein Hintergrundthread TS_LegalToJoin 0x Gibt an, ob nun rechtmäßig ein Join() versucht werden kann Tabelle 4.5: Statusaufgliederung für Thread 10, Statuswert = 0x4220 Symbol Wert Beschreibung TS_InSTA 0x Thread hostet ein STA TS_Background 0x Der Thread ist ein Hintergrundthread TS_LegalToJoin 0x Gibt an, ob nun rechtmäßig ein Join() versucht werden kann Tabelle 4.6: Statusaufgliederung für Thread 12, Statuswert = 0x220 Symbol Wert Beschreibung TS_Background 0x Der Thread ist ein Hintergrundthread TS_LegalToJoin 0x Gibt an, ob nun rechtmäßig ein Join() versucht werden kann Zeigen Sie die verwalteten Aufruflisten durch Eingabe von ~*e!clrstack an. Dieser Befehl ähnelt dem WinDbg-Befehl ~*k, gilt jedoch für
23 verwaltete Aufrufe. WinDbg zeigt nun für jeden Rahmen mit verwaltetem Thread den aktuellen ESP (Enter Stack Pointer), den aktuellen EIP (Enter Instruction Pointer) und die Methodensignatur an. Der Befehl!clrstack zeigt nur die verwalteten Threads an und keine systemeigenen Aufruflisteninformationen. Anmerkung Soweit nicht anders angegeben, wurden die Speicherabbilddateien mit Releasebuilds erstellt. Sie haben bereits zu einem früheren Zeitpunkt einen Blick auf die systemeigene Ausgabe eines der verwalteten Threads geworfen (wie in Thread 1 gezeigt). Die SOS.dll-Ausgabe ergänzt die fehlenden Informationen für die verwalteten Daten. Um sowohl verwaltete als auch systemeigene Teile eines Stapels zu erstellen, verschieben Sie die Ausgabe durch Ausschneiden und Einfügen von!clrstack in den mittleren Teil, an dem sich vorher keine zugeordneten Module befanden. Die!clrstack-Ausgabe für Thread1 zeigt nicht alle Aufruflistenrahmen. Wenn Sie mit dem Befehl!dumpstack arbeiten, enthält die Ausgabe alle Stapelrahmen einschließlich den Threadursprung sowie den Verweis auf den Threadtyp, den Sie verwenden (dies ist ein Komplettierungsportthread). Das folgende Beispiel zeigt das Ende der Ausgabe für Thread 1, die aus dem Befehl!dumpstack resultiert. Anmerkung Vor dem Ausführen des Befehls!dumpstack müssen Sie zum entsprechenden Thread wechseln. Wenn Sie beispielsweise zu Thread 1 wechseln möchten, führen Sie ~1s aus. Beim verwalteten Thread ruft Debugging.Unexpected.btnSTA_Click die DebuggingCOMLib.STAClass auf. Ruft im Code ein bestimmter Aufruf einen anderen Aufruf auf? Beim systemeigenen Stapel zielen die Aufrufe auf ole32!gettosta ab. Sehen Sie sich den Code im Debugging.Unexpected.btnSTA_Click- Ereignis an. Ist der Quellcode nicht verfügbar, können Sie die Assembly untersuchen, indem Sie den Anweisungszeiger für den Aufruflistenrahmen dem Befehl!u übergeben. Sie können den Anweisungszeiger aus der!clrstack- Ausgabe abrufen Geben Sie zum Disassemblieren der Funktion!u 03a00e06 ein. Der Code der C#- und x86-assemblys zeigt das Erstellen eines COM- Wrappers. Dies erfolgt über den Aufruf von DebuggingCOMLib.STAClass..ctor. Dadurch wird wiederum eine Methode auf einem staobj.raiseerror(1,5) -COM-Objekt aufgerufen, die
24 wiederum MSVCR70!abort aufruft. Dadurch wird das Suchergebnis im systemeigenen Code für Thread 10 bestätigt. Sie haben nun den Code kennengelernt und bewiesen, dass dieser MSVCR70!abort() direkt aufruft, wodurch kernel32!exitprocess() aufgerufen und der Aspnet_wp.exe-Prozess abgebrochen wird. Sie haben das Problem jetzt zwar technisch gelöst, dennoch wären zusätzliche Hintergrundinformationen sicherlich ganz nützlich. Thread 10 enthält den Aufruf von MSVCR70!abort(). Wenn die DLL mehrfach aufgerufen wird, woher wissen Sie dann, welcher Aufruf das Problem verursacht hat? SOS.dll stellt Ihnen über den Befehl!comstate Informationen zu den COM-Threadingmodellen für verwaltete Threads zur Verfügung. Die!comstate-Ausgabe zeigt, dass der Apartmenttyp eines jeden Threads entweder "MTA", "Ukn" oder "STA" ist. Der Eintrag "Ukn" weist darauf hin, dass die Threads noch nicht für ein bestimmtes Threadingmodell initialisiert wurden. Der andere Apartmenttyp, der hervorsticht, ist STA. Wie bereits erwähnt, handelt es sich bei Thread 10 um einen STA-Thread. Ihnen stehen zwei Methoden zur Verfügung, mittels derer Sie prüfen können, auf welchem dieser Threads der Aufruf weiter ausgeführt wird. Die erste Möglichkeit besteht darin zu raten. Es gibt einen Eintrag für ole32!gettosta(). Sie wissen also, dass Sie im Prozess zu einem STA- Thread wechseln müssen. Anhand der!comstate-ausgabe sehen Sie, dass Thread 10 der einzige Thread ist, der für das STA-Threadingmodell initialisiert wurde. Die zweite Möglichkeit besteht darin, eine Fehlersuche mit der SieExtPub.dll-Erweiterung für WinDbg durchzuführen. Stellen Sie sicher, dass die Datei SieExtPub.dll im Ordner C:\Debuggers oder an einem anderen geeigneten Order gespeichert ist. Geben Sie zum Laden der Erweiterung.load sos\sieextpub.dll ein. Geben Sie!comcalls ein, um den Threadwechsel anzuzeigen. Diese Ausgabe zeigt, dass Thread 1 (ein MTA-Thread) Thread 10 aufruft (einen STA-Thread). Im vorherigen Beispiel war ein MTA/STA-Threadschalter nötig, damit der verwaltete Code systemeigenen Code aufrufen kann. Dies liegt daran, dass eine als Apartment gekennzeichnete Komponente aufgrund des COM-Marshalling nicht von einem MTA-Thread mit einem Threadschalter instanziiert werden kann. Alternativ dazu kann versucht werden, den Marshallingoverhead zu vermeiden, indem die ASPCompat- Seitendirektive eingesetzt wird. Diese zwingt die ProcessRequest- Methode der Seite dazu, die Ausführung auf einem COM+-STA- Workerthread vorzunehmen.
25 Verwenden von "ASPCompat" Um zu sehen, welche Auswirkungen ASPCompat auf das vorangegangene Szenario hat, führen Sie das Beispiel nach einer Codeänderung erneut aus. Fügen Sie dazu die unten stehende Direktive zur ASP.NET-Seite hinzu. Die Beispielseite Unexpectedcompat.aspx enthält folgende Seitendirektive: Dies ist die einzige Codeänderung. Da dieser Code von derselben DLL erbt wie die vorherige ASP.NET-Seite, muss die DLL nicht neu kompiliert werden. Wie bereits erwähnt, müssen die COM-Threadingregeln beachtet werden, wenn ein verwaltetes Objekt von einem Thread erstellt wird, der für ein MTA-Threadingmodell initialisiert wird, und eine als Apartment gekennzeichnete COM-Komponente aufruft. ASPCompat kompiliert, indem die ProcessRequest-Methode der Seite auf einem Thread ausgeführt wird, der für ein STA-Threadingmodell initialisiert wurde. So starten Sie ganz von vorn 1. Öffnen Sie ein Eingabeaufforderungsfenster, und geben Sie iisreset ein, um IIS neu zu starten. 2. Wechseln Sie zu Die folgende Abbildung zeigt eine Tabelle ähnlich der Browseranzeige:
26 Abbildung 4.4. Basisdaten für "Unexpectedcompat.aspx" Führen Sie über die Befehlszeile ADPlus_KernelExit.vbs im -crash- Modus aus: Klicken Sie auf Call STA COM Object. Der Browser zeigt eine Meldung an, die besagt, dass die Serveranwendung nicht verfügbar ist. Im Anwendungsereignisprotokoll findet sich folgender Eintrag: "aspnet_wp.exe(pid:2992) stopped unexpectedly" (aspnet_wp.exe(pid:2992) wurde unerwartet beendet). Suchen Sie unter C:\Debuggers im neuesten Crash-Ordner nach einer Datei mit einem Namen ähnlich dem Folgenden: PID ASPNET_WP.EXE Kernel32ExitProcess full.dmp. Öffnen Sie die Datei in WinDbg, und stellen Sie sicher, dass der Symbolpfad korrekt eingestellt ist. Geben Sie den Symbolpfad wie folgt in die Befehlszeile ein. Ersetzen Sie C:\Windows durch den Speicherort Ihres Windows-Ordners. Sichern Sie die systemeigenen Threads mit dem Tildebefehl (~): Bilden Sie nun die systemeigenen Aufrufstapel ab.
27 Anmerkung Ihre Ausgabe unterscheidet sich möglicherweise vom oben gezeigten Beispiel aufgrund der unterschiedlichen Bezeichnungen für Funktionsaufrufe in Windows 2000 und Windows XP. Threaddiskussion In der folgenden Tabelle sind die Funktionen zusammengefasst, die von den einzelnen Threads ausgeführt wurden, als das Speicherabbild erzeugt wurde. Tabelle 4.7: Zusammenfassung der Threadstatusinformationen Thread-ID Zweck 0 aspnet_wp!wmain 1 mscorwks!threadpoolmgr::completionportthreadstart 2 mscorwks!threadpoolmgr::gatethreadstart 3 aspnet_wp!dopingthread 4 mscorwks!debuggerrcthread::mainloop 5 mscorwks!gcheap::finalizerthreadstart 6 mscorwks!threadpoolmgr::workerthreadstart 7 mscorwks!threadpoolmgr::completionportthreadstart 8 mscorwks!threadpoolmgr::timerthreadstart 9 comsvcs!cstathread::workerloop 10 rpcrt4!recvlotsacallswrapper 11 comsvcs!cstathread::workerloop 12 comsvcs!cstathread::workerloop 13 comsvcs!cstathread::workerloop 14 comsvcs!cstathread::workerloop 15 comsvcs!cstathread::workerloop 16 comsvcs!cstathread::workerloop (EXIT) 17 comsvcs!cstathread::workerloop 18 comsvcs!cstathreadpool::loadbalancethreadcontrolloop 19 comsvcs!cstathreadpool::killthreadcontrolloop 20 mscorwks!threadpoolmgr::waitthreadstart Es gibt acht comsvcs!cstathread::workerloop-threads: sieben Threads plus einen Thread für jede CPU des Computers. Darüber hinaus gibt es zwei comsvcs!cstathreadpool-threads, fünf mscorwks!threadpoolmgr-threads und einen rpcrt4!recvlotsacallswrapper-thread. Weitere Informationen zum COM+-Threadpool finden Sie im Artikel Q282490,"INFO: Thread Pool Differences Between COM+ and MTS" (in Englisch) in der Microsoft
28 Knowledge Base unter: Untersuchen Sie die Threadingmodelle mit SOS.dll. Laden Sie die Erweiterung, und initialisieren Sie diese mit dem Befehl!findtable. Geben Sie anschließend!comstate ein, um Informationen zu den Threadingmodellen der COM-Threads abzubilden: Der Aspnet_wp-Prozess enthält acht Threads, die für das STA- Threadingmodell initialisiert werden. Hierbei handelt es sich um die bereits erwähnten comsvcs!cstathread::workerloop-threads. Untersuchen der verwalteten Threads Bilden Sie mit dem Befehl!threads Informationen zu den verwalteten Threads ab ID b d1c 9a0 c5c ThreadOBJ 00153a c a c8 001ac710 State a220 b PreEmptive Enabled Enabled Enabled Enabled Enabled GC GC Alloc Context : : : : : Domain a6918 Lock Count Apt MTA MTA MTA STA STA Exception (Finalizer) (Threadpool Worker) (GC) Die folgenden Tabellen decodieren das Statusfeld der einzelnen verwalteten Threads: Tabelle 4.8: Statusaufgliederung für Thread 1, Statuswert = 0xa22 Symbol Wert Beschreibung TS_InMTA 0x Thread ist Bestandteil des MTA TS_CoInitialized 0x Für diesen Thread wurde CoInitialize aufgerufen TS_Background 0x Der Thread ist ein Hintergrundthread TS_LegalToJoin 0x Gibt an, ob nun rechtmäßig ein Join() versucht werden kann
29 Tabelle 4.9: Statusaufgliederung für Thread 5, Statuswert = 0xb220 Symbol Wert Beschreibung TS_InMTA 0x Thread ist Bestandteil des MTA TS_CoInitialized 0x Für diesen Thread wurde CoInitialize aufgerufen TS_WeOwn 0x Das offen gelegte Objekt hat diesen Thread initiiert TS_Background 0x Der Thread ist ein Hintergrundthread TS_LegalToJoin 0x Gibt an, ob nun rechtmäßig ein Join() versucht werden kann Tabelle 4.10: Statusaufgliederung für Thread 6, Statuswert = 0x Symbol Wert Beschreibung TS_TPWorkerThread 0x Gibt an, dass es sich um einen Threadpool- Workerthread handelt. (Falls nicht, ist es ein Threadpool- Komplettierungsportthread) TS_ThreadPoolThread 0x Gibt an, dass es sich um einen Threadpoolthread handelt. TS_Background 0x Der Thread ist ein Hintergrundthread TS_LegalToJoin 0x Gibt an, ob nun rechtmäßig ein Join() versucht werden kann Tabelle 4.11: Statusaufgliederung für die Threads 16 und 17, Statuswert = 0x4220 Symbol Wert Beschreibung TS_InSTA 0x Thread hostet ein STA TS_Background 0x Der Thread ist ein Hintergrundthread TS_LegalToJoin 0x Gibt an, ob nun rechtmäßig ein Join()
30 versucht werden kann Die Threads 16 und 17 sind von COM+ erstellte STA-Threads. Sie werden jedoch durch den Laufzeitthread 17 initialisiert, der auf verwaltete oder systemeigene Arbeit wartet. Wie Sie bereits an der systemeigenen Threadausgabe gesehen haben, rief Thread 16 msvcr70!abort auf, wodurch wiederum mscorwks!corexitprocess aufgerufen wurde. Anschließend rief mscorwks!corexitprocess dann mscorwks!forceeeshutdown, auf, wodurch letztendlich kernel32!exitprocess aufgerufen wurde. Geben Sie ~*e!clrstack ein, um diesen und andere verwaltete Threads näher zu untersuchen. Thread 16 ist der einzige verwaltete Thread, der.net-code ausführt. Sie können die verwalteten und die systemeigenen Rahmen von Thread 16 miteinander kombinieren, um zu sehen, wie diese miteinander kommunizieren. Anmerkung Vor dem Ausführen des Befehls!dumpstack müssen Sie zum entsprechenden Thread wechseln. Wenn Sie beispielsweise zu Thread 16 wechseln möchten, führen Sie ~16s aus. Wenn Sie mit ASPCompat arbeiten, bricht der Prozess auf einem anstatt auf mehreren Threads ab. Im vorangegangenen Beispiel erging ein Aufruf von Debugging.Unexpected.btnSTA_Click() an DebuggingCOMLib.STAClass.RaiseError() auf Thread 1; der Aufruf von msvcr70!abort() und letztendlich kernel32!exitprocess() geschah auf Thread 10. Hier finden alle Aufrufe auf Thread 16 statt, da ASPCompat die ProcessRequest-Methode zwingt, die Ausführung auf einem Thread durchzuführen, der für das STA-Threadingmodell initialisiert wurde. Aus den o.g. Gründen empfiehlt Microsoft, dass Sie das unterstützte ASPCompat-Szenario verwenden, wenn Sie als Apartment gekennzeichnete COM-Komponenten von ASP.NET-Seiten aufrufen. Dieses Verfahren hat sich bei Tests als besser und zuverlässiger herausgestellt. Die XML Web Services, eine andere serverbasierte Technologie, unterstützen ASPCompat nicht. Weitere Informationen hierzu finden Sie im Artikel Q303375, "INFO: XML Web Services and Apartment Objects" (in Englisch), in der Microsoft Knowledge Base unter Die Komponente muss in COM+ als Bibliotheksanwendung registriert werden. Darüber hinaus muss die Option Synchronization auf Required gesetzt werden, so dass wie im obigen Beispiel die Ausführung auf einem COM+- STA-Workerthread erfolgt. Weitere Schritte
31 Diese Schritt-für-Schritt-Anleitung enthält Code zum Aufrufen von COM- Komponenten, die als Apartment oder Free gekennzeichnet sind. Versuchen Sie, als Both oder Neutral gekennzeichnete Komponenten zu instanziieren. Erstellen Sie hierzu DebuggingComLib-, BothClass- oder DebuggingComLib.NeutralClass-Objekte aus den ASP.NET-Seiten. Versuchen Sie Folgendes: 1. Beobachten Sie, wie sich das Ergebnis ändert, wenn Sie das zweite Schaltflächen-Klickereignis aktivieren, wodurch ein MTA-COM-Objekt aufgerufen wird. 2. Erstellen Sie eine nicht konfigurierte, mit Apartment gekennzeichnete COM-Komponente über eine Methode, die Sleep() aufruft. Führen Sie anschließend erneut eine Anforderung aus, um eine weitere Komponenteninstanz desselben Typs zu erstellen. Stellen Sie fest, ob die Objekterstellung erfolgreich verläuft oder fehlschlägt. Schlussfolgerung Diese Schritt-für-Schritt-Anleitung hat Ihnen gezeigt, wie Sie mit Microsoft-Tools wie WinDbg, der SOS.DLL-Erweiterung und ADPlus den Absturz einer ASP.NET-Anwendung untersuchen können. Im verwendeten Szenario wurde der Absturz durch den Aufruf von ExitProcess verursacht, was dazu führte, dass der Prozess beendet wurde. Sie haben gelernt, mit den von ADPlus erstellen Speicherabbilddateien Informationen zu den im Prozess ausgeführten Threads zu bekommen. Darüber hinaus wissen Sie nun, wie Sie anhand von Aufruflisteninformationen herausfinden können, welche Methoden auf welchem Thread ausgeführt werden. Des Weiteren wurde Ihnen das ASPCompat-Attribut erläutert, welches eine bessere und zuverlässigere Leistung bringt, wenn als Apartment gekennzeichnete COM-Komponenten von ASP.NET-Seiten aufgerufen werden Microsoft Corporation. Alle Rechte vorbehalten. Rechtliche Hinweise.
Erstellen sicherer ASP.NET- Anwendungen
Erstellen sicherer ASP.NET- Anwendungen Authentifizierung, Autorisierung und sichere Kommunikation Auf der Orientierungsseite finden Sie einen Ausgangspunkt und eine vollständige Übersicht zum Erstellen
Installation KVV Webservices
Installation KVV Webservices Voraussetzung: KVV SQL-Version ist installiert und konfiguriert. Eine Beschreibung dazu finden Sie unter http://www.assekura.info/kvv-sql-installation.pdf Seite 1 von 20 Inhaltsverzeichnis
BANKETTprofi Web-Client
BANKETTprofi Web-Client Konfiguration und Bedienung Handout für die Einrichtung und Bedienung des BANKETTprofi Web-Clients im Intranet / Extranet Der BANKETTprofi Web-Client Mit dem BANKETTprofi Web-Client
Hinweise zu Java auf dem Mac:
Hinweise zu Java auf dem Mac: 1. Möglichkeit zum Überprüfen der Java-Installation / Version 2. Installiert, aber im Browser nicht AKTIVIERT 3. Einstellungen in der Java-KONSOLE auf Deinem MAC 4. Java Hilfe
Erstellen sicherer ASP.NET- Anwendungen
Erstellen sicherer ASP.NET- Anwendungen Authentifizierung, Autorisierung und sichere Kommunikation Auf der Orientierungsseite finden Sie einen Ausgangspunkt und eine vollständige Übersicht zum Erstellen
Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung
Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung Nach dem Update auf die Version 1.70 bekommen Sie eine Fehlermeldung,
Service & Support. Wie ist der User Mode Process Dumper für Diagnosezwecke bei WinCC und PCS7 einzurichten? User Mode Process Dumper.
Deckblatt Wie ist der User Mode Process Dumper für Diagnosezwecke bei WinCC und PCS7 einzurichten? User Mode Process Dumper FAQ April 2011 Service & Support Answers for industry. Fragestellung Dieser Beitrag
Artikel Schnittstelle über CSV
Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte
MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29)
MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29) Dieses Dokument beschreibt das Herunterladen der Serversoftware, die Installation und Konfiguration der Software. Bevor mit der Migration der
Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications
Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications Windows 8 Systemsteuerung > Programme > Windows Features aktivieren / deaktivieren > Im Verzeichnisbaum
Handbuch zum VivaWeb-Serienbrief-Programm
Handbuch zum VivaWeb-Serienbrief-Programm In 10 Schritten zum Serienbrief Das folgende Handbuch erläutert Ihnen die Nutzungsmöglichkeiten des ARV Serienbrief-Programms in all seinen Einzelheiten. Dieses
2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version
2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version Das Verwaltungsmodul moveon besteht aus zwei Komponenten: dem moveon Client und der moveon Datenbank. Der moveon Client enthält alle Formulare,
JUNG Facility-Pilot Visualisierungs-Server Version 2.2
Inhalt: JUNG Facility-Pilot Visualisierungs-Server Version 2.2 1 TECHNISCHE VORAUSSETZUNGEN...2 1.1 HARDWARE...2 1.2 BETRIEBSSYSTEME...2 1.3 SOFTWARE...2 1.4 CLIENT/BROWSER EINSTELLUNGEN...2 2 ERSTER START...3
Kurzanleitung zur Installation des OLicense-Servers in Verwendung mit SimDiff/SimMerge
Kurzanleitung zur Installation des OLicense-Servers in Verwendung mit SimDiff/SimMerge Inhaltsverzeichnis Installieren des OLicense-Servers... 1 Konfigurieren des OLicense-Servers... 2 Einstellen der Portnummer...
.NET und die COM Interop Threading Apartments
.NET und die COM Interop Threading Apartments Quicktip bei BonnToCode 20. März 2007 Martin Krieger www.kriegermartin.de Warum dieser Quicktip? Es läßt sich unglücklicherweise nicht immer vermeiden, auf
Lokale Installation von DotNetNuke 4 ohne IIS
Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann [email protected] 12.12.2006 Agenda Benötigte Komponenten Installation
IBM SPSS Collaboration and Deployment Services (C&DS) version 7
Dieses Handbuch richtet sich an Systemadministratoren, die IBM SPSS Modeler Entity Analytics (EA) für die Ausführung mit einem der folgenden Produkte konfigurieren: IBM SPSS Collaboration and Deployment
CLIQ Manager als Standard Benutzer starten
CLIQ Manager als Standard Benutzer starten Bedingt durch die strikten Benutzerrechte in Windows 7 gibt es von Microsoft ein Programm (Tool) zu dem Handhaben der Benutzerrechte. Als eine Möglichkeit zum
EIBPORT INBETRIEBNAHME MIT DEM BROWSER / JAVA EINSTELLUNGEN / VORBEREITUNGEN AM CLIENT PC
EIBPORT INBETRIEBNAHME MIT DEM BROWSER / JAVA EINSTELLUNGEN / VORBEREITUNGEN AM CLIENT PC Falls Sie zur Konfiguration des EIBPORT nicht BAB STARTER sondern den Browser benutzen wollen, und dieser die Ausführung
1. Einführung 2. 2. Systemvoraussetzungen... 2. 3. Installation und Konfiguration 2. 4. Hinzufügen einer weiteren Sprache... 3
Inhalt 1. Einführung 2 2. Systemvoraussetzungen... 2 3. Installation und Konfiguration 2 4. Hinzufügen einer weiteren Sprache... 3 5. Aktivierung / Deaktivierung von Funktionen... 4 6. Konfiguration der
1. Anleitung: telemed DFÜ Setup Programm
1. Anleitung: telemed DFÜ Setup Programm Nachfolgend finden Sie eine Anleitung zur Verwendung des telemed DFÜ Setup Programms. Dieses Programm gibt es in jeweils einer Version für die Betriebssysteme Windows
Erstellen von speziellen Ereignissen in C#
Erstellen von speziellen Ereignissen in C# Anhand eines Projekts, das demonstriert, wie spezielle Ereignisse ausgelöst werden und wie sie sich auf den verwendeten Code auswirken, zeigen wir Ihnen, wie
DocuWare unter Windows 7
DocuWare unter Windows 7 DocuWare läuft unter dem neuesten Microsoft-Betriebssystem Windows 7 problemlos. Es gibt jedoch einige Besonderheiten bei der Installation und Verwendung von DocuWare, die Sie
Qt-Projekte mit Visual Studio 2005
Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung
4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
Die ersten C#- Programme erstellen
Zusatzkapitel zu Kapitel 3: Die ersten C#- Programme erstellen I - Erste Schritte Richtig einsteigen: Programmieren lernen mit Visual C# 2005 Website zum Buch: www.vsxpress.de Auf den folgenden Seiten
Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.
Python Installation 1 Vorbereitung Diese Anleitung ist für Windows ausgelegt. 1.1 Download Python kann online unter https://www.python.org/downloads/ heruntergeladen werden. Hinweis: Im CoderDojo verwenden
Google Cloud Print Anleitung
Google Cloud Print Anleitung Version 0 GER Zu den Hinweisen In diesem Benutzerhandbuch wird für Hinweise der folgende Stil verwendet: Hinweise informieren Sie darüber, wie auf eine bestimmte Situation
PatXML - Version 1.3.8. Kurzanleitung Dokumente erstellen, vervollständigen und speichern
PatXML - Version 1.3.8 Kurzanleitung Dokumente erstellen, vervollständigen und speichern Inhalt 1 Mit dem PatXML-Assistenten Patentdokumente erstellen 2 Dokumente vervollständigen 3 Dokumentenabschnitte
Schritt 1: Verwenden von Excel zum Erstellen von Verbindungen mit SQL Server-Daten
1 von 5 12.01.2013 17:59 SharePoint 2013 Veröffentlicht: 16.10.12 Zusammenfassung: Informationen zur Verwendung von Excel zum Erstellen und Freigeben von Verbindungen mit SQL Server-Daten, mit deren Hilfe
Startup-Anleitung für Macintosh
Intralinks VIA Version 2.0 Startup-Anleitung für Macintosh Intralinks-Support rund um die Uhr USA: +1 212 543 7800 GB: +44 (0) 20 7623 8500 Zu den internationalen Rufnummern siehe die Intralinks-Anmeldeseite
Vielen Dank, dass Sie sich für die Software der myfactory International GmbH entschieden haben.
Vielen Dank, dass Sie sich für die Software der myfactory International GmbH entschieden haben. Um alle Funktionen unserer Software nutzen zu können, sollten Sie bitte in Ihrem Browser folgende Einstellungen
Leitfaden zur Installation von Bitbyters.WinShutdown
Leitfaden zur Installation von Bitbyters.WinShutdown für Windows 32 Bit 98/NT/2000/XP/2003/2008 Der BitByters.WinShutDown ist ein Tool mit dem Sie Programme beim Herunterfahren Ihres Systems ausführen
Anleitung für Fachlehrkräfte zur
Seite 1/15!!! WICHTIG!!! Es wird JEDER Fachlehrkraft empfohlen, die Reihenfolge der Erste Schritte Anleitung genau und vollständig einzuhalten. Meine Kundennummer: Meine Schulnummer: Mein Passwort: 1.
2. Sie sind der Administrator Ihres Netzwerks, das den SBS 2011 Standard ausführt.
Arbeitsblätter Der Windows Small Business Server 2011 MCTS Trainer Vorbereitung zur MCTS Prüfung 70 169 Aufgaben Kapitel 1 1. Sie sind der Administrator Ihres Netzwerks, das den SBS 2011 Standard ausführt.
Internet Kapitel 2 WWW Lektion 1 Recherchen
Internet Kapitel 2 WWW Lektion 1 Recherchen Begriffe Startseite Homepage - Website Adresse bzw. URL aufrufen Hyperlinks aktivieren und Navigieren Neues Fenster / Neue Registerkarte Abbrechen und Aktualisieren
5.3.3.6 Übung - Überwachen und Verwalten von Systemressourcen in Windows Vista
5.0 5.3.3.6 Übung - Überwachen und Verwalten von Systemressourcen in Windows Vista Einführung Drucken Sie diese Übung aus und führen Sie sie durch. In dieser Übung verwenden Sie administrative Tools zur
Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold
Installationsanleitung MS SQL Server 2005 für Sage 50 Ablage & Auftragsbearbeitung Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Inhaltsverzeichnis 1. GRUNDSÄTZLICHES... 3 2. SQLExpress Installationsanleitung
Nun öffnet sich das Fenster "Geplante Tasks". Hier zum Einrichten eines neuen Tasks auf "Geplanten Task hinzufügen" klicken. Es öffnet sich der Assist
PCs automatisch herunterfahren Frage: In meiner Schule soll der Lehrerzimmercomputer (oder ein anderer PC) um 17.00 Uhr automatisch herunterfahren. Wie kann ich das einrichten? Antwort: Um einen Computer
Installation & Anwendung Xdebug für Eclipse
Wetterprognosen Angewandte Meteorologie Luftreinhaltung Geoinformatik Fabrikstrasse 14, CH-3012 Bern Tel. +41 (0)31-307 26 26 Fax +41 (0)31-307 26 10 e-mail: [email protected] www.meteotest.ch Bern,
7 SharePoint Online und Office Web Apps verwenden
7 SharePoint Online und Office Web Apps verwenden Wenn Sie in Ihrem Office 365-Paket auch die SharePoint-Dienste integriert haben, so können Sie auf die Standard-Teamsite, die automatisch eingerichtet
Visual Basic Express Debugging
Inhalt Dokument Beschreibung... 1 Projekt vorbereiten... 1 Verknüpfung zu Autocad/ProStructures einstellen... 2 Debugging... 4 Autocad/ProSteel Beispiel... 5 Dokument Beschreibung Debuggen nennt man das
AIT AG Leitzstraße 45 70469 Stuttgart Germany +49 (0)711-49066 - 430 Fax:...- 49066-440
Abb. oben zeigt ein mögliches Szenario Seite 1 von 5 Automatisierung mittels Skriptdatei Mit der.net Edition von Visual Localize (V4.X) wurde dem Benutzer die Möglichkeit eröffnet, wiederkehrende Arbeitsschritte
Workflow+ Installation und Konfiguration
Workflow+ Installation und Konfiguration Systemübersicht Workflow+ Designer Mit dem Workflow+ Designer werden Workflows und Eingabemasken erstellt. Mit der integrierten Test- und Debugging Funktion können
ANWEISUNGEN FÜR DRM-AKTIVIERUNGSCODE WIP NAV PLUS / CONNECT NAV PLUS (RT6)
(RT6) 1 0. Voraussetzungen 1. Ihr Fahrzeug ist werksseitig mit dem Navigationssystem WIP nav plus / Connect nav plus ausgestattet. Für Karten-Updates muss mindestens Software-Version* 2.20 installiert
Ute Kalff Windows7 www.utekalff.de. Zusammenfassung aus Windows-Hilfe
Zusammenfassung aus Windows-Hilfe Anmerkung: Peek, Shake und Desktophintergrund-Diashow sind nicht in Windows 7 Home Basic oder Windows 7 Starter enthalten. Öffnen Sie in der Systemsteuerung den Eintrag
Windows XP & DNS-323: Zugriff auf die Netzfreigaben 1. Über dieses Dokument
Windows XP & DNS-323: Zugriff auf die Netzfreigaben 1. Über dieses Dokument Dieses Dokument erklärt, wie Sie auf dem DNS-323 Gruppen und Benutzer anlegen, Freigaben einrichten und diese unter Windows XP
bnsyncservice Installation und Konfiguration bnnetserverdienst Voraussetzungen: KWP Informationssysteme GmbH Technische Dokumentation
bnsyncservice Voraussetzungen: Tobit DAVID Version 12, DVWIN32: 12.00a.4147, DVAPI: 12.00a.0363 Exchange Server (Microsoft Online Services) Grundsätzlich wird von Seiten KWP ausschließlich die CLOUD-Lösung
Anweisungen zur Installation und Entfernung von Windows PostScript- und PCL-Druckertreibern Version 8
Anweisungen zur Installation und Entfernung von Windows PostScript- und PCL-Druckertreibern Version 8 Diese README-Datei enthält Anweisungen zum Installieren des Custom PostScript- und PCL- Druckertreibers
4 Installation und Verwaltung
Installation und Verwaltung 4 Installation und Verwaltung 4.1 Installation der Microsoft Internet Information Services 8.0 IIS 8.0 ist Bestandteil von Windows 8 und Windows Server 2012. Windows 8 Professional
visionapp Platform Management Suite Save Event Version 2.0 Technische Dokumentation
visionapp Platform Management Suite Save Event Version 2.0 Technische Dokumentation Copyright visionapp GmbH, 2002-2006. Alle Rechte vorbehalten. Die in diesem Dokument enthaltenen Informationen, Konzepte
Installation des Zertifikats. Installationsanleitung für Zertifikate zur Nutzung des ISBJ Trägerportals
Installationsanleitung für Zertifikate zur Nutzung des ISBJ Trägerportals 1 43 Inhaltsverzeichnis Einleitung... 3 Microsoft Internet Explorer... 4 Mozilla Firefox... 13 Google Chrome... 23 Opera... 32
Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)
Information zum SQL Server: Installieren und deinstallieren (Stand: September 2012) Um pulsmagic nutzen zu können, wird eine SQL-Server-Datenbank benötigt. Im Rahmen der Installation von pulsmagic wird
Installationshandbuch zum FAX L-Treiber
Deutsch Installationshandbuch zum FAX L-Treiber User Software CD-ROM.................................................................. 1 Treiber und Software.............................................................................
Schritt 1: Verwenden von Excel zum Erstellen von Verbindungen zu SQL Server Analysis Services-Daten
1 von 5 12.01.2013 17:58 SharePoint 2013 Veröffentlicht: 16.10.12 Zusammenfassung: Informationen zur Verwendung von Excel zum Erstellen und Freigeben einer Verbindung zu SQL Server Analysis Services-Daten,
TYPO3 Redaktoren-Handbuch
TYPO3 Redaktoren-Handbuch Kontakt & Support: rdv interactive ag Arbonerstrasse 6 9300 Wittenbach Tel. 071 / 577 55 55 www.rdvi.ch Seite 1 von 38 Login http://213.196.148.40/typo3 Username: siehe Liste
Installationsanleitung Expertatis
Installationsanleitung Expertatis 1. Komplettinstallation auf einem Arbeitsplatz-Rechner Downloaden Sie die Komplettinstallation - Expertatis_Komplett-Setup_x32.exe für ein Windows 32 bit-betriebssystem
CBS-Heidelberg Helpdesk Filr-Dokumentation S.1
CBS-Heidelberg Helpdesk Filr-Dokumentation S.1 Dokumentation der Anwendung Filr von Novell G Informationen zu Filr, die über diese Dokumentation hinausgehen, finden Sie im Internet unter: http://www.novell.com/de-de/documentation/novell-filr-1-1/
Verizon Collaboration Plug-in für Microsoft Office Communicator Benutzerhandbuch
Verizon Collaboration Plug-in für Microsoft Office Communicator Benutzerhandbuch Version 2.11 Letzte Aktualisierung: Juli 2011 2011 Verizon. Alle Rechte vorbehalten. Die Namen und Logos von Verizon und
Hinweise zu Java auf dem Mac:
Hinweise zu Java auf dem Mac: 1. Möglichkeit zum Überprüfen der Java-Installation / Version 2. Installiert, aber im Browser nicht AKTIVIERT 3. Einstellungen in der Java-KONSOLE auf Deinem MAC 4. Java Hilfe
Inhaltsverzeichnis. v.2008 Job Center i
Job Center v.2008 20331608 Inhaltsverzeichnis Was ist das JOB CENTER?...1 Das Fenster des JOB CENTERS...2 Konfigurationen...4 Layout konfigurieren...4 Fertige Jobs automatisch löschen und archivieren...4
Handbuch: PlagScan PlugIn in Moodle 2.X und 3.X für den Administrator
Handbuch: PlagScan PlugIn in Moodle 2.X und 3.X für den Administrator Stand: November 2015 Inhaltsverzeichnis Phase 1: Registrierung Schritt 1 von 2: Nutzungsart Organisation wählen Schritt 2 von 2: Organisation
IBM SPSS Modeler Text Analytics Installationsanweisungen (Einzelplatzlizenz)
IBM SPSS Modeler Text Analytics Installationsanweisungen (inzelplatzlizenz) Die folgenden Anweisungen gelten für die Installation von IBM SPSS Modeler Text Analytics Version 15 mit einer inzelplatzlizenz.
Handbuch. Terminverwaltungssoftware für Microsoft Windows und TomTom Telematics
Handbuch Terminverwaltungssoftware für Microsoft Windows und TomTom Telematics Systemanforderungen ab Microsoft Windows Vista Service Pack 2, Windows 7 SP 1 Microsoft.NET Framework 4.5 Full ab Microsoft
Fehler: [ ] Es konnte keine gültige Lizenz vom Network License Manager bezogen werden. Apr Support
Fehler: [-15.570.0] Es konnte keine gültige Lizenz vom Network License Manager bezogen werden. Apr 29 2015 Support Problem: Sie öffnen ein Autodesk-Produkt auf dem Computer, auf dem Network License Server
DAS EINSTEIGERSEMINAR
DAS EINSTEIGERSEMINAR Microsoft Office Excel 2010 Gudrun Rehn-Göstenmeier LERNEN ÜBEN ANWENDEN Teil I: Lernen L1 Dateiorganisation Bevor wir uns mit den Excel-spezifischen Befehlen und Funktionen befassen
Software-Installation
Software-Installation Hardware und Betriebssystemanforderungen Mindestens Pentium CPU mit 166 MHz und 32 MB RAM, CD-Rom Laufwerk, COM Anschluss Microsoft Windows 95/98, NT 4, 2000 Professional, XP Microsoft
Passwortwechsel mit Windows
BYOD (Bring Your Own Device)... 1 Wi-Fi 2 Windows Credential Manager... 4 Microsoft Outlook Mail Account... 5 PIA Drucker... 5 Netzlaufwerke... 7 Polybox Client... 8 ETH-Domain Computer... 9 Webbrowser...
Benutzerhandbuch. Version 6.9
Benutzerhandbuch Version 6.9 Copyright 1981 2009 Netop Business Solutions A/S. Alle Rechte vorbehalten. Teile unter Lizenz Dritter. Senden Sie Ihre Anmerkungen und Kommentare bitte an: Netop Business Solutions
OpenSSH installieren (Windows) Was ist OpenSSH?
OpenSSH installieren (Windows) Was ist OpenSSH? OpenSSH (Open Secure Shell) ist eine freie SSH/SecSH-Protokollsuite, die Verschlüsselung für Netzwerkdienste bereitstellt, wie etwa Remotelogins, also Einloggen
Deckblatt. VPN-Tunnel über Internet. SCALANCE S61x und SOFTNET Security Client Edition 2008. FAQ August 2010. Service & Support. Answers for industry.
Deckblatt SCALANCE S61x und SOFTNET Security Client Edition 2008 FAQ August 2010 Service & Support Answers for industry. Fragestellung Dieser Beitrag stammt aus dem Service&Support Portal der Siemens AG,
Installationsanleitung - Command WorkStation 5.6 mit Fiery Extended Applications 4.2
Installationsanleitung - Command WorkStation 5.6 mit Fiery Extended Applications 4.2 Das Softwarepaket Fiery Extended Applications Package v4.2 enthält Fiery Anwendungsprogramme, mit denen Sie bestimmte
Verwalten des App-Katalogs in SharePoint 2013
Verwalten des AppKatalogs in SharePoint 2013 27.06.2016 19:50:11 FAQArtikelAusdruck Kategorie: Windows::SharePoint::SharePoint2013 Bewertungen: 0 Status: öffentlich (Alle) Ergebnis: 0.00 % Sprache: de
Kurzanleitung. 29. Februar 2008 2. Oktober 2008 Update. APtool-Kurzanleitung-V1_2_DE Seite 1 von 8
Kurzanleitung 29. Februar 2008 2. Oktober 2008 Update APtool-Kurzanleitung-V1_2_DE Seite 1 von 8 Inhalt INHALT... 2 EINFÜHRUNG... 3 VORBEREITUNG... 3 LIZENZIERUNG... 3 PROJEKT LIZENZEN... 4 GENERIERUNG
Erstellen sicherer ASP.NET- Anwendungen
Erstellen sicherer ASP.NET- Anwendungen Authentifizierung, Autorisierung und sichere Kommunikation Auf der Orientierungsseite finden Sie einen Ausgangspunkt und eine vollständige Übersicht zum Erstellen
Eine Wiederherstellung setzt immer ein vorhandenes Backup voraus. Wenn man nichts sichert, kann man auch nichts zurücksichern.
Exchange Daten wieder ins System einfügen (Dieses Dokument basiert auf einem Artikel des msxforum) Eine Wiederherstellung setzt immer ein vorhandenes Backup voraus. Wenn man nichts sichert, kann man auch
KOMPRIMIERUNGS & VERSCHLÜSSELUNGS- TOOL
SECRETZIP KOMPRIMIERUNGS- & VERSCHLÜSSELUNGS-Programm (nur für Windows) Das Programm ist auf dem USB Flash Drive enthalten. Bitte lesen Sie das Handbuch für den USB Flash Drive oder besuchen Sie integralmemory.com,
Einführung in Automation Studio
Einführung in Automation Studio Übungsziel: Der links abgebildete Stromlaufplan soll mit einer SPS realisiert werden und mit Automation Studio programmiert werden. Es soll ein Softwareobjekt Logik_1 in
Manuelles Erstellen einer Microsoft SQL Server 2008 (Standard Edition)- Instanz für ACT7
Manuelles Erstellen einer Microsoft SQL Server 2008 (Standard Edition)- Instanz für ACT7 Aufgabe Sie möchten ACT! by Sage Premium 2010 auf einem der unterstützten Windows Server-Betriebssysteme installieren.
SPSS für Windows Installationsanweisungen (Standort-/Vertragslizenz)
SPSS für Windows Installationsanweisungen (Standort-/Vertragslizenz) Die folgenden Anweisungen gelten für die Installation von SPSS für Windows mit einer Standort-/Vertragslizenz. Dieses Dokument wendet
WebDAV 1. ALLGEMEINES ZU WEBDAV 2 3. BEENDEN EINER WEBDAV-VERBINDUNG 2 4. WINDOWS EXPLORER (WINDOWS XP) 3 5. WINDOWS EXPLORER (WINDOWS 7 ) 6
WebDAV 1. ALLGEMEINES ZU WEBDAV 2 2. HINWEISE 2 3. BEENDEN EINER WEBDAV-VERBINDUNG 2 4. WINDOWS EXPLORER (WINDOWS XP) 3 5. WINDOWS EXPLORER (WINDOWS 7 ) 6 5.1 Office 2003 6 5.2 Office 2007 und 2010 10
5.3.3.5 Labor - Überwachung und Verwaltung von Systemressourcen in Windows 7
5.0 5.3.3.5 Labor - Überwachung und Verwaltung von Systemressourcen in Windows 7 Einführung Drucken Sie diese Übung aus und führen Sie sie durch. In dieser Übung verwenden Sie administrative Tools zur
Convision IP-Videoserver und die Sicherheitseinstellungen von Windows XP (SP2)
Inhalt Convision IP-Videoserver und die Sicherheitseinstellungen von Windows XP (SP2)... 1 1. Die integrierte Firewall von Windows XP... 2 2. Convision ActiveX und Internet Explorer 6... 3 3. Probleme
Call - ID. Call-ID. Leitfaden Installation und Konfiguration CALL-ID Stand : 30. Mai 2008
Call - ID Call-ID ist ein Programm zur direkten Anzeige von eingehenden Anrufen durch automatisches öffnen der entsprechenden Tobit-Adresskarte oder Wahlweise separatem Pop-Up. Zudem erstellt Call-ID eine
Backup Exec 2014 Management Pack for Microsoft SCOM. Management Pack for Microsoft SCOM-Benutzerhandbuch
Backup Exec 2014 Management Pack for Microsoft SCOM Management Pack for Microsoft SCOM-Benutzerhandbuch Management Pack for Microsoft Operations In diesem Dokument werden folgende Themen behandelt: Backup
Leitfaden zur HASP-Fehlerbehebung
Leitfaden zur HASP-Fehlerbehebung Hauptgeschäftssitz: Trimble Geospatial Division 10368 Westmoor Drive Westminster, CO 80021 USA www.trimble.com Copyright und Marken: 2005-2013, Trimble Navigation Limited.
Installationsanleitung - Command WorkStation 5.5 mit Fiery Extended Applications 4.1
Installationsanleitung - Command WorkStation 5.5 mit Fiery Extended Applications 4.1 Fiery Extended Applications Fiery Extended Applications (FEA) 4.1 ist ein Softwarepaket für Fiery Druckcontroller mit
Immo Meets Office Easy Office Storage Easy Outlook Storage Handbuch
Immo Meets Office Easy Office Storage Easy Outlook Storage Handbuch 1 2 Inhaltsverzeichnis 1 Systemvoraussetzungen... 3 2 Vor der Installation... 3 3 Installation... 3 3.1 Voraussetzungen... 4 3.2 Installationsbeginn...
Klicken Sie auf den Ordner mit der Bezeichnung Microsoft Office und wählen Sie den Eintrag Microsoft Outlook 2010.
8 DAS E-MAIL-PROGRAMM OUTLOOK 2010 Im Lieferumfang von Office 2010 ist auch das E-Mail-Programm Outlook 2010 enthalten. ten. Es bietet Funktionen, um E-Mails zu verfassen und zu versenden, zu empfangen
Dateiansichten in Ordnern
Dateien und Ordner Das Ordnen und Organisieren von Dateien ist das A und O, wenn es darum geht, effektiv mit dem Computer zu arbeiten. Nur wer Ordnung hält und seinen Datenbestand logisch organisiert,
IBM SPSS Statistics - Essentials for Python: Installationsanweisungen für Windows
IBM SPSS Statistics - ssentials for Python: Installationsanweisungen für Windows Im Folgenden finden Sie die Installationsanweisungen für IBM SPSS Statistics - ssentials for Python auf den Windows -Betriebssystemen.
So ziehen Sie Ihr Wordpress Blog zu STRATO um
So ziehen Sie Ihr Wordpress Blog zu STRATO um Version 1.0 So ziehen Sie Ihr Wordpress Blog zu STRATO um Das Wordpress-Plugin Duplicator ermöglicht Ihnen, in wenigen Schritten Ihre Wordpress-Instanz umzuziehen.
eoslogistics Anleitung / Systemvoraussetzungen innight.web processing solutions eoscop gmbh Im Kugelfang 38 CH-4102 Binningen
eoscop gmbh Im Kugelfang 38 CH-4102 Binningen eoscop gmbh Roggenstrasse 5 CH-4665 Oftringen Tel. +41 (0)62 788 44 44 [email protected] Anleitung / Systemvoraussetzungen innight.web Datum 31. November 2006
Ändern von Druckereinstellungen 1
Ändern von Druckereinstellungen 1 Sie können eine Druckereinstellung über die Anwendungssoftware, den Lexmark Druckertreiber, die Bedienerkonsole des Druckers oder die druckerferne Bedienerkonsole des
IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen
IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen Mit Einführung der 2010 TRY (Test Referenz Jahr) Klimadatensätze ist es erstmals möglich, neben den für 15
Unterrichtseinheit 10
Unterrichtseinheit 10 Begriffe zum Drucken unter Windows 2000 Druckgerät Das Hardwaregerät, an dem die gedruckten Dokumente entnommen werden können. Windows 2000 unterstützt folgende Druckgeräte: Lokale
Microsoft Access 2010 Bilder
Microsoft Access 2010 Bilder Hyperlinks... arbeiten ähnlich wie ein Link in einer Webseite. sind ein Verweis auf eine Datei (access2010\material\beispiel\tabledevelop\automat.accdb). können ein Verweis
Q-Checker JT Connector 1.7.x Q-Spector 1.7.x Installationsanleitung. Stand: 2014-04-03
Q-Checker JT Connector 1.7.x Q-Spector 1.7.x Installationsanleitung Stand: 2014-04-03 Inhaltsverzeichnis Inhalt 1 Systemvoraussetzungen... 3 2 Manuelle Installation... 4 3 Lizenzen anfordern und installieren...
