EnglischFranzösischSpanisch

OnWorks-Favicon

mono – Online in der Cloud

Führen Sie Mono im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl mono, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


mono – Monos nativer ECMA-CLI-Codegenerator (Just-in-Time und Ahead-of-Time)

ZUSAMMENFASSUNG


Mono [Optionen] Datei [Argumente...]

mono-sgen [Optionen] Datei [Argumente...]

BESCHREIBUNG


Mono ist eine Laufzeitimplementierung der ECMA Common Language Infrastructure. Das kann sein
Wird zum Ausführen von ECMA- und .NET-Anwendungen verwendet.

Die Laufzeit enthält einen nativen Codegenerator, der das Common Intermediate umwandelt
Sprache in nativen Code umwandeln.

Der Codegenerator kann in zwei Modi arbeiten: Just-in-Time-Compilation (JIT) oder Ahead-of-Compilation
Zeiterfassung (AOT). Da Code dynamisch geladen werden kann, sind die Laufzeitumgebung und
Die JIT sind immer vorhanden, auch wenn der Code im Voraus kompiliert wird.

Die Laufzeit lädt das angegebene Datei und übergibt optional die Argumente dazu. Das Datei
ist eine ECMA-Assembly. Sie haben normalerweise die Erweiterung .exe oder .dll.

Die Laufzeit bietet eine Reihe von Konfigurationsmöglichkeiten für die Ausführung von Anwendungen, z
Entwickeln und Debuggen sowie zum Testen und Debuggen der Laufzeit selbst.

Die Mono Der Befehl verwendet den konservativen Boehm-Garbage Collector, während der mono-sgen Befehl
verwendet einen beweglichen und generationsübergreifenden Garbage Collector.

PORTABILITÄT


Auf Unix-basierten Systemen bietet Mono einen Mechanismus zur Emulation des Dateizugriffs im Windows-Stil.
Dazu gehört die Bereitstellung einer Ansicht des Dateisystems ohne Berücksichtigung der Groß-/Kleinschreibung und des Verzeichnistrennzeichens
Zuordnung (von \ nach /) und Entfernen der Laufwerksbuchstaben.

Diese Funktionalität wird durch die Einstellung aktiviert MONO_IOMAP Umgebungsvariable zu einer von
alle, Antrieb und Fall.

Siehe die Beschreibung für MONO_IOMAP Weitere Einzelheiten finden Sie im Abschnitt „Umgebungsvariablen“.

LAUFZEIT OPTIONAL


Die folgenden Optionen sind verfügbar:

--aot, --aot[=Optionen]
Mit dieser Option wird der CIL-Code in der angegebenen Assembly nativ vorkompiliert
Code. Der generierte Code wird in einer Datei mit der Erweiterung .so gespeichert. Diese Datei
wird automatisch von der Laufzeit übernommen, wenn die Assembly ausgeführt wird.
Die Ahead-of-Time-Kompilierung ist am nützlichsten, wenn Sie sie in Kombination mit dem verwenden
-O=all,-shared Flag, das alle Optimierungen im Codegenerator ermöglicht
durchgeführt werden. Einige dieser Optimierungen sind für Just-in-Time nicht praktikabel
Kompilierung, da diese sehr zeitaufwändig sein kann. Im Gegensatz zum .NET Framework
Bei der Ahead-of-Time-Kompilierung wird kein domänenunabhängiger Code generiert: Er generiert
derselbe Code, den der Just-in-Time-Compiler erzeugen würde. Da die meisten
Wenn Anwendungen eine einzelne Domäne verwenden, ist das in Ordnung. Wenn Sie das optimieren möchten
Wenn Sie generierten Code für die Verwendung in Anwendungen mit mehreren Domänen verwenden möchten, sollten Sie die Verwendung von -O=shared in Betracht ziehen
Flagge. Dadurch werden die Methoden vorkompiliert, die ursprüngliche Assembly ist jedoch weiterhin erforderlich
auszuführen, da dieser die Metadaten und Ausnahmeinformationen enthält, die nicht vorhanden sind
in der generierten Datei verfügbar. Wenn Sie Code vorkompilieren, möchten Sie möglicherweise kompilieren
mit allen Optimierungen (-O=all). Vorkompilierter Code ist positionsunabhängiger Code.
Die Vorkompilierung ist lediglich ein Mechanismus, um die Startzeit zu verkürzen und die Codefreigabe zu erhöhen
über mehrere Monoprozesse hinweg und vermeiden Sie den Just-in-Time-Start des Kompilierungsprogramms
Kosten. Die ursprüngliche Assembly muss noch vorhanden sein, da die Metadaten enthalten sind
Dort. AOT-Code kann normalerweise nicht von einem Computer auf einen anderen verschoben werden (CPU-Code).
bestimmte Optimierungen, die zur Laufzeit erkannt werden), daher sollten Sie nicht versuchen, zu verschieben
die vorgenerierten Baugruppen oder verpacken Sie die vorgenerierten Baugruppen für
Einsatz. Als Parameter stehen einige Optionen zur Verfügung --aot Befehlszeile
Möglichkeit. Die Optionen werden durch Kommas getrennt und es können mehrere angegeben werden:

autoreg
Der AOT-Compiler gibt automatisch einen (nur ELF) Bibliotheksinitialisierer aus
Registrieren Sie das aot-kompilierte Modul bei der Laufzeit. Dies ist nur sinnvoll in
statischer Modus

nur
Weist den AOT-Compiler an, Assembler-Code anstelle eines Objekts auszugeben
Datei.

Bindung an die Laufzeitversion
Wenn angegeben, wird die Bindung der generierten AOT-Dateien an die Laufzeit erzwungen
Version des kompilierenden Mono. Dadurch wird verhindert, dass die AOT-Dateien gespeichert werden
von einer anderen Mono-Laufzeit verbraucht. voller Dies ist derzeit ein
experimentelles Feature, da es noch nicht vollständig ist. Dies weist Mono dazu an
Vorkompilieren von Code, der in der Vergangenheit nicht mit AOT vorkompiliert wurde.

Direkt-Pinvoke
Wenn diese Option angegeben ist, werden P/Invoke-Methoden stattdessen direkt aufgerufen
Es ist nicht erforderlich, den Symbolsuchvorgang des Betriebssystems durchzuführen.

llvm-path=
Das Gleiche gilt für die llvm-Tools „opt“ und „llc“.

mtriple=
Verwenden Sie das Zieltripel im GNU-Stil um eine Codegenerierung zu bestimmen
Optionen, z. B. --mtriple=armv7-linux-gnueabi, generieren Code, der darauf abzielt
ARMv7. Dies wird derzeit nur vom ARM-Backend unterstützt. Im LLVM-Modus
Dieses Triple wird an den LLVM LLC-Compiler weitergegeben.

nimt-trampolines=[Anzahl]
Beim Kompilieren im vollständigen AOT-Modus müssen die IMT-Trampoline vorab erstellt werden
das AOT-Bild. Damit können Sie weitere Method-Trampoline hinzufügen
Streit. Der Standardwert ist 128.

kein Debug
Weist den AOT-Compiler an, keine Debuginformationen auszugeben.

keine-direkten-anrufe
Dadurch wird verhindert, dass der AOT-Compiler direkte Aufrufe einer Methode generiert.
Der AOT-Compiler generiert normalerweise direkte Aufrufe für bestimmte Methoden, die dies tun
Es ist nicht erforderlich, das PLT zu durchlaufen (z. B. Methoden, die bekannt sind).
erfordert keinen Hook wie ein statischer Konstruktor) oder einen einfachen internen Aufruf
Anrufe.

Zwergdebug
Weist den AOT-Compiler an, DWARF-Debugging-Informationen auszugeben. Wenn benutzt
Zusammen mit der Nodebug-Option sind nur DWARF-Debugging-Informationen verfügbar
ausgegeben, jedoch nicht die Informationen, die zur Laufzeit verwendet werden können.

nrgctx-trampolines=[Anzahl]
Beim Kompilieren im vollständigen AOT-Modus müssen die generischen Sharing-Trampoline vorhanden sein
im AOT-Image vorab erstellt. Sie können weitere Method-Trampoline hinzufügen
dieses Argument. Der Standardwert ist 1024.

Trampoline=[Anzahl]
Beim Kompilieren im vollständigen AOT-Modus müssen die Methodentrampoline vorab erstellt werden
im AOT-Bild. Damit können Sie weitere Method-Trampoline hinzufügen
Streit. Der Standardwert ist 1024.

outfile=[Dateiname]
Weist den AOT-Compiler an, die Ausgabe in der angegebenen Datei zu speichern.

print-skipped-methods
Wenn der AOT-Compiler aus irgendeinem Grund eine Methode nicht kompilieren kann, aktivieren Sie diese
Flag gibt die übersprungenen Methoden an die Konsole aus.

readonly-value=namespace.typename.fieldname=type/value
Überschreiben Sie den Wert eines statischen schreibgeschützten Felds. Normalerweise während JIT
Bei der Kompilierung wird der statische Konstruktor eifrig ausgeführt, sodass der Wert statisch ist
Das schreibgeschützte Feld ist zum Zeitpunkt der Kompilierung bekannt und der Compiler kann eine Zahl erstellen
darauf basierender Optimierungen. Während AOT hingegen der statische Konstruktor
kann nicht ausgeführt werden, daher kann diese Option verwendet werden, um den Wert eines solchen Feldes festzulegen
und ermöglichen die gleichen Optimierungen. Der Typ kann einer von i1, i2, i4 sein
Ganzzahlen der jeweiligen Größe (in Bytes). Beachten Sie, dass signiert/nicht signiert
Zahlen spielen hier keine Rolle, nur die Speichergröße. Diese Option kann sein
mehrfach angegeben und verhindert nicht den statischen Konstruktor für
Der Typ, der das Feld definiert, das zur Laufzeit mit den üblichen Regeln ausgeführt werden soll
(daher wird möglicherweise ein anderer Wert für das Feld berechnet).

Temps speichern, Temps behalten
Weist den AOT-Compiler an, temporäre Dateien aufzubewahren.

Soft-Debug
Dadurch wird der Compiler angewiesen, Sequenzpunktprüfungen zu generieren, die dies zulassen
Monos Soft-Debugger zum Debuggen von Anwendungen auch auf Systemen, auf denen dies nicht der Fall ist
Es ist möglich, Haltepunkte oder einzelne Schritte zu setzen (bestimmte Hardware).
Konfigurationen wie Mobiltelefone und Videospielkonsolen).

statisch Erstellen Sie eine ELF-Objektdatei (.o) oder eine .s-Datei, die statisch verknüpft werden kann
in eine ausführbare Datei beim Einbetten der Mono-Laufzeitumgebung. Wenn diese Option ist
Wird die Objektdatei verwendet, muss sie bei der eingebetteten Laufzeitumgebung registriert werden
die Funktion mono_aot_register_module, deren Argument das ist
mono_aot_module_ _info globales Symbol aus der Objektdatei:

extern void *mono_aot_module_hello_info;

mono_aot_register_module (mono_aot_module_hello_info);

Statistik Drucken Sie verschiedene Statistiken aus, die während der AOT-Kompilierung gesammelt wurden.

threads=[Anzahl]
Dies ist eine experimentelle Option für den AOT-Compiler, mehrere Threads zu verwenden
beim Kompilieren der Methoden.

Werkzeugpräfix=
Wird vorangestellt auf den Namen der Tools, die vom AOT-Compiler ausgeführt werden, d. h
'wie'/'alt'. Beispielsweise führt --tool=prefix=arm-linux-gnueabi- zum AOT
Compilerlauf

Schreibsymbole
Weist den AOT-Compiler an, Debugsymbolinformationen auszugeben.

Weitere Informationen zu AOT finden Sie unter: http://www.mono-project.com/docs/advanced/aot/

--attach=[Optionen]
Derzeit ist die einzige von diesem Befehlszeilenargument unterstützte Option deaktivieren welche
deaktiviert die Anhängefunktion.

--config Dateinamen
Laden Sie die angegebene Konfigurationsdatei anstelle der Standardkonfigurationsdatei(en). Der Standard
Dateien sind /etc/mono/config und ~/.mono/config oder die in der angegebene Datei
Umgebungsvariable MONO_CONFIG, falls festgelegt. Siehe die Mono-Konfig(5) Handbuchseite für
Einzelheiten zum Format dieser Datei.

--debugger-agent=[Optionen]
Dadurch wird die Mono-Laufzeitumgebung angewiesen, einen Debugging-Agenten innerhalb der Mono-Laufzeitumgebung zu starten
und verbinden Sie es mit einer Client-Benutzeroberfläche, um den Mono-Prozess zu steuern. Das
Die Option wird normalerweise von IDEs wie der MonoDevelop-IDE verwendet.

Die Konfiguration wird mit einer oder mehreren der folgenden Optionen angegeben:

Adresse=Host:Port
Verwenden Sie diese Option, um die IP-Adresse anzugeben, unter der sich Ihr Debugger-Client befindet
hören.

loglevel=LEVEL
Gibt die Diagnoseprotokollebene für an

logfile=Dateiname
Wird verwendet, um die Datei anzugeben, in der das Protokoll gespeichert wird. Der Standardwert lautet
Standardausgabe.

server=[j/n]
Der Standardwert ist „Nein“. Mit der Standardoption stellt Mono aktiv eine Verbindung zum her
Host/Port mit konfiguriert Adresse Möglichkeit. Wenn Sie es auf „y“ setzen, ist es
weist die Mono-Laufzeit an, das Debuggen im Servermodus zu starten, wobei Mono
Wartet aktiv darauf, dass das Debugger-Frontend eine Verbindung zum Mono-Prozess herstellt.
Mono gibt die IP-Adresse und den Port, an dem es lauscht, als Standard aus.

setpgid=[y/n]
Wenn „Ja“ eingestellt ist, ruft Mono an setpgid(0, 0) on Start, if zur Verbesserung der Gesundheitsgerechtigkeit Funktion is
verfügbar on System funktionieren. Dieses is nützlich für Gewährleistung zur Verbesserung der Gesundheitsgerechtigkeit Signale geliefert
zu a Prozessdefinierung zur Verbesserung der Gesundheitsgerechtigkeit is Ausführung debuggee sind nicht vermehrt zu
Debugger, z.B wann Strg-C sendet SIGINT zu sdb Werkzeug.

suspend=[j/n]
Der Standardwert ist „Ja“. Mit der Standardoption hält Mono die VM beim Start an
bis eine erfolgreiche Verbindung zu einem Debugger-Frontend hergestellt wird. Wenn Sie es auf einstellen
'n', in Verbindung mit server=y, weist es die Mono-Laufzeitumgebung an, als auszuführen
normal, während Metadaten zwischengespeichert werden, um sie an das Debugger-Frontend zu senden
Verbindung..

transport=Transportname
Dies wird verwendet, um den Transport anzugeben, den der Debugger verwenden wird
kommunizieren. Es muss angegeben werden und ist derzeit auch erforderlich
'dt_socket'.

- Desktop
Konfiguriert die virtuelle Maschine so, dass sie besser für Desktop-Anwendungen geeignet ist.
Derzeit ist das GC-System so eingestellt, dass eine Erweiterung des Heaps so weit wie möglich vermieden wird
auf Kosten einer etwas langsameren Speicherbereinigung.

--full-aot
Dies ist ein experimentelles Flag, das die Mono-Laufzeit anweist, keine zu generieren
Code zur Laufzeit und hängen ausschließlich vom Code ab, der durch die Verwendung von Mono generiert wird
--aot=full vorher. Dies ist nützlich für Plattformen, die keine Dynamik zulassen
Codegenerierung. Beachten Sie, dass diese Funktion die Ausführung zur Laufzeit abbricht, wenn a
Codepfad in Ihrem Programm oder die Klassenbibliotheken von Mono versuchen, Code zu generieren
dynamisch. Sie sollten Ihre Software im Voraus testen und sicherstellen, dass Sie dies nicht tun
Verwenden Sie keine dynamischen Funktionen.

--gc=boehm, --gc=sgen
Wählt die Garbage Collector-Engine für die Verwendung durch Mono aus: Boehm oder SGen. Momentan
Dies stellt lediglich sicher, dass Sie eines der beiden ausführen Mono or mono-sgen Befehle.
Dieses Flag kann im gesetzt werden MONO_ENV_OPTIONS Umgebungsvariable, um alles zu erzwingen
Ihr Kind verarbeitet eine bestimmte Art von GC mit der Mono-Laufzeit.

--help, -h
Zeigt Gebrauchsanweisungen an.

--llvm Wenn die Mono-Laufzeitumgebung mit LLVM-Unterstützung kompiliert wurde (nicht überall verfügbar).
Konfigurationen) verwendet Mono die LLVM-Optimierungs- und Codegenerierungs-Engine, um
JIT- oder AOT-Kompilierung. Weitere Informationen finden Sie unter: http://www.mono-
project.com/docs/advanced/mono-llvm/

--nollvm
Wenn Sie ein Mono verwenden, das mit LLVM-Unterstützung kompiliert wurde, wird Mono dazu gezwungen
Fallback auf die JIT-Engine und nicht auf das LLVM-Backend.

--optimize=MODUS, -O=MODUS
MODE ist eine durch Kommas getrennte Liste von Optimierungen. Sie ermöglichen auch Optimierungen
kann deaktiviert werden, indem dem Optimierungsnamen ein Minuszeichen vorangestellt wird. Allgemein,
Mono wurde so optimiert, dass es den Standardsatz von Flags verwendet, bevor diese Flags für a verwendet werden
Wenn Sie die Bereitstellungseinstellung festlegen, möchten Sie möglicherweise die Vorteile ihrer Verwendung tatsächlich messen.
Die folgenden Optimierungsflags sind in der Kern-Engine implementiert:
abcrem Array-gebundene Überprüfungen werden entfernt
all Alle Optimierungen einschalten
aot Verwendung von Ahead Of Time kompiliertem Code
Branch-Branch-Optimierungen
cfold Ständiges Falten
cmov Bedingte Bewegungen [arch-dependency]
deadce Eliminierung von totem Code
consprop Konstante Ausbreitung
copyprop Weitergabe von Kopien
fcmov Fast x86 FP vergleicht [arch-dependency]
float32 Führt 32-Bit-Float-Arithmetik mit 32-Bit-Operationen durch
gshared Generisches Code-Sharing aktivieren.
Inline Inline-Methodenaufrufe
intrins Intrinsische Methodenimplementierungen
Linears Globale Registrierungszuordnung für linearen Scan
Optimierung der Leaf-Prozeduren
Schleife Schleifenbezogene Optimierungen
Guckloch Guckloch Postpass
precomp Kompiliert alle Methoden vor, bevor Main ausgeführt wird
sched Anweisungsplanung
Shared Pro-Domain-Code ausgeben
sse2 SSE2-Anweisungen auf x86 [Arch-Abhängigkeit]
tailc Tail-Rekursion und Tail-Calls
Um beispielsweise die gesamte Optimierung außer der Eliminierung von totem Code und Inlining zu ermöglichen,
Sie können verwenden:
-O=alle,-deadce,-inline
Die mit [arch-dependency] gekennzeichneten Flags geben an, dass die angegebene Option if
In Kombination mit der Ahead-of-Time-Kompilierung (--aot-Flag) würde eine Pre-
Kompilierter Code, der von der aktuellen CPU abhängt und möglicherweise nicht sicher verschoben werden kann
ein anderer Computer.

Die folgenden Optimierungen werden unterstützt

Schwimmer32
Fordert an, dass die Laufzeit 32-Bit-Gleitkommaoperationen mit ausführt
nur 32-Bit. Standardmäßig versucht die Mono-Laufzeit, die höchste zu verwenden
Präzision ist für Gleitkommaoperationen verfügbar, dies könnte jedoch der Fall sein
Um bessere Ergebnisse zu erzielen, wird der Code möglicherweise langsamer ausgeführt. Diese Optionen auch
wirkt sich auf den vom LLVM-Backend generierten Code aus.

Inline- Steuert, ob die Laufzeit versuchen soll, eine Inline-Operation durchzuführen (Standardeinstellung) oder nicht
Inline-Methodenaufrufe

--runtime=VERSION
Mono unterstützt verschiedene Laufzeitversionen. Die verwendete Version hängt vom Programm ab
das ausgeführt wird, oder in seiner Konfigurationsdatei (mit dem Namen program.exe.config). Das
Mit dieser Option kann eine solche automatische Erkennung außer Kraft gesetzt werden, indem eine andere Laufzeit erzwungen wird
welche Version verwendet werden soll. Beachten Sie, dass dies nur zur Auswahl einer späteren Kompatibilität verwendet werden sollte
Laufzeitversion als die, mit der das Programm kompiliert wurde. Eine typische Verwendung ist
zum Ausführen eines 1.1-Programms auf einer 2.0-Version:
mono --runtime=v2.0.50727 program.exe

--Sicherheit, --security=Modus
Aktivieren Sie den Sicherheitsmanager, eine derzeit experimentelle Funktion in Mono, und das ist der Fall
Standardmäßig AUS. Mit dieser Option kann auch der neue Code-Verifizierer aktiviert werden.

Die Verwendung von Sicherheit ohne Parameter entspricht dem Aufruf mit „cas“.
Parameters.

Die folgenden Modi werden unterstützt:

Kern-Clr
Aktiviert das Core-Clr-Sicherheitssystem, das normalerweise für verwendet wird
Moonlight/Silverlight-Anwendungen. Es bietet eine viel einfachere Sicherheit
System als CAS, siehe http://www.mono-project.com/docs/web/moonlight/ für
Weitere Details und Links zu den Beschreibungen dieses neuen Systems.

gültig
Aktiviert den neuen Verifizierer und führt eine grundlegende Überprüfung der Codegültigkeit durch.
In diesem Modus sind unsicherer Code und P/Invoke zulässig. Dieser Modus bietet eine
bessere Sicherheitsgarantie, aber es ist immer noch möglich, dass verwalteter Code abstürzt
Mono.

überprüfbare
Aktiviert den neuen Verifizierer und führt eine vollständige Überprüfung des Codes durch
hingerichtet. Es erlaubt nur die Ausführung von überprüfbarem Code. Unsicherer Code ist
nicht erlaubt, aber P/Invoke schon. Dieser Modus sollte keinen verwalteten Code zulassen
Crash-Mono. Die Verifizierung ist nicht so streng wie der ECMA 335-Standard
um mit der MS-Runtime kompatibel zu bleiben.

Das Sicherheitssystem wirkt auf Benutzercode: Code, der in mscorlib oder global enthalten ist
Der Assemblycache ist immer vertrauenswürdig.

--Server
Konfiguriert die virtuelle Maschine so, dass sie besser für Servervorgänge geeignet ist
(ermöglicht derzeit eine schwerere Threadpool-Initialisierung).

--verify-all
Überprüft mscorlib und Assemblys im globalen Assembly-Cache auf gültige IL und alles
Benutzercode für IL-Überprüfbarkeit.

Das ist anders als --Sicherheitist in diesen Optionen überprüfbar oder gültig
Überprüfen Sie nur den Benutzercode und überspringen Sie mscorlib und Assemblys, die sich auf der globalen Seite befinden
Assembly-Cache.

-V, --Version
Druckt JIT-Versionsinformationen (Systemkonfiguration, Versionsnummer und Zweig).
Namen, sofern vorhanden).

ENTWICKLUNG OPTIONAL


Die folgenden Optionen werden verwendet, um bei der Entwicklung einer JIT-Anwendung zu helfen.

--debuggen, --debug=OPTIONEN
Aktiviert den Debugging-Modus in der Laufzeit. Wenn eine Assembly mit kompiliert wurde
Beim Debuggen von Informationen werden Informationen zur Zeilennummer für Stack-Traces erstellt.

Das optionale Argument OPTIONS ist eine durch Kommas getrennte Liste von Debugging-Optionen.
Diese Optionen sind standardmäßig deaktiviert, da sie viel größer und langsamer generieren
Code zur Laufzeit.

Die folgenden Optionen werden unterstützt:

wirft Erzeugt einen detaillierten Fehler, wenn eine InvalidCastException ausgelöst wird. Das
Die Option muss aktiviert sein, da dadurch bei der Ausführung ausführlicherer Code generiert wird
Zeit.

MDB-Optimierungen
Deaktivieren Sie einige JIT-Optimierungen, die normalerweise nur während der Ausführung deaktiviert sind
im Debugger. Dies kann hilfreich sein, wenn Sie eine Verbindung herstellen möchten
Laufender Prozess mit mdb.

gdb Generieren und registrieren Sie Debugging-Informationen mit gdb. Dies wird nur unterstützt
auf einigen Plattformen und nur bei Verwendung von GDB 7.0 oder höher.

--profile[=profiler[:profiler_args]]
Aktiviert die Profilerstellung. Weitere Informationen zum Profilieren von Anwendungen und Code
Abdeckung finden Sie in den Abschnitten „PROFILING“ und „CODE-ABDECKUNG“ weiter unten.

Diese Option kann mehrmals verwendet werden, jedes Mal wird ein geladen
zusätzlicher Profiler. Dadurch können Entwickler Module verwenden, die das JIT erweitern
über die Mono-Profiling-Schnittstelle.

--trace[=Ausdruck]
Zeigt Methodennamen an, während sie aufgerufen werden. Standardmäßig werden alle Methoden verfolgt. Der
Trace kann angepasst werden, um Methoden, Klassen oder Assemblys einzuschließen oder auszuschließen. A
Der Trace-Ausdruck ist eine durch Kommas getrennte Liste von Zielen, jedem Ziel kann ein Präfix vorangestellt werden
mit einem Minuszeichen, um ein bestimmtes Ziel auszuschalten. Die Wörter „Programm“, „alle“ und
„behindert“ haben eine besondere Bedeutung. „Programm“ bezieht sich auf das Hauptprogrammwesen
ausgeführt, und „alle“ bedeutet alle Methodenaufrufe. Die Option „deaktiviert“ wird verwendet
Starten Sie mit deaktivierter Ablaufverfolgung. Es kann zu einem späteren Zeitpunkt im aktiviert werden
Programm durch Senden des SIGUSR2-Signals an die Laufzeit. Baugruppen werden angegeben durch
Um beispielsweise alle Aufrufe in der System-Assembly zu verfolgen, verwenden Sie ihren Namen:

mono --trace=System app.exe

Klassen werden mit dem Präfix T: angegeben. Um beispielsweise alle Anrufe an die zu verfolgen
System.String-Klasse, verwenden Sie:

mono --trace=T:System.String app.exe

Und einzelne Methoden werden mit dem Präfix M: und der Standardmethode referenziert
Notation:

mono --trace=M:System.Console:WriteLine app.exe

Es können auch Ausnahmen verfolgt werden. Dadurch wird jedes Mal ein Stack-Trace gedruckt
Es wird eine Ausnahme des angegebenen Typs ausgelöst. Der Ausnahmetyp kann angegeben werden
mit oder ohne Namespace, und um alle Ausnahmen zu verfolgen, geben Sie „all“ als an
Modellname.

mono --trace=E:System.Exception app.exe

Wie bereits erwähnt, können verschiedene Regeln gleichzeitig angegeben werden:

mono --trace=T:System.String,T:System.Random app.exe

Sie können Teile ausschließen, das nächste Beispiel verfolgt Aufrufe von System.String mit Ausnahme von
die System.String:Concat-Methode.

mono --trace=T:System.String,-M:System.String:Concat

Mithilfe des Wrapper-Qualifizierers können Sie verwaltete zu nicht verwalteten Übergängen verfolgen:

mono --trace=wrapper app.exe

Schließlich können Namespaces mit dem Präfix N: angegeben werden:

mono --trace=N:System.Xml

--no-x86-stack-align
Richten Sie Stapelrahmen nicht auf der x86-Architektur aus. Standardmäßig richtet Mono den Stapel aus
Frames auf 16 Byte auf x86, sodass lokale Gleitkomma- und SIMD-Variablen verwendet werden können
richtig ausgerichtet. Diese Option schaltet die Ausrichtung aus, wodurch normalerweise eine gespeichert wird
Anweisung pro Aufruf, kann aber zu deutlich niedrigeren Gleitkomma- und
SIMD-Leistung.

--jitmap
Generieren Sie eine JIT-Methodenzuordnung in einer Datei /tmp/perf-PID.map. Diese Datei wird dann z
Beispielsweise durch das Perf-Tool, das in neueren Linux-Kerneln enthalten ist. Jede Zeile in der Datei
hat:

HEXADDR HEXSIZE Methodenname

Derzeit wird diese Option nur unter Linux unterstützt.

JIT MAINTAINER OPTIONAL


Die Betreueroptionen werden nur von denjenigen verwendet, die die Laufzeit selbst entwickeln, und nicht
Typischerweise von Interesse für Laufzeitbenutzer oder Entwickler.

--brechen Methode
Fügt einen Haltepunkt vor der Methode ein, deren Name „Methode“ ist.
(Namespace.Klasse:Methodenname). Verwenden Sie „Main“ als Methodennamen, um einen Haltepunkt einzufügen
die Hauptmethode der Anwendung. Sie können es beispielsweise auch mit Generika verwenden
„System.Collections.Generic.Queue`1:Peek“

--breakonex
Fügt bei Ausnahmen einen Haltepunkt ein. Auf diese Weise können Sie Ihre Anwendung mit debuggen
ein nativer Debugger, wenn eine Ausnahme ausgelöst wird.

--kompilieren Name
Dadurch wird eine Methode (namespace.name:methodname) kompiliert, die zum Testen der verwendet wird
Compilerleistung zu testen oder die Ausgabe des Codegenerators zu untersuchen.

--compileall
Kompiliert alle Methoden in einer Assembly. Dies wird zum Testen des Compilers verwendet
Leistung zu testen oder die Ausgabe des Codegenerators zu untersuchen

--graph=TYP METHODE
Dadurch wird eine Postscript-Datei mit einem Diagramm mit den Details zum angegebenen generiert
Methode (namespace.name:methodname). Dies erfordert „Dot“ und „Ghostview“.
installiert (es erwartet, dass Ghostview „gv“ heißt). Die folgenden Grafiken sind
verfügbar:
cfg Kontrollflussdiagramm (CFG)
dtree Dominator Tree
Code CFG zeigt Code an
ssa CFG zeigt Code nach der SSA-Übersetzung
optcode CFG zeigt Code nach IR-Optimierungen
Einige Diagramme sind nur verfügbar, wenn bestimmte Optimierungen aktiviert sind.

--ncompile
Weisen Sie die Laufzeit an, wie oft die durch --compile angegebene Methode ausgeführt wird
(oder alle Methoden, wenn --compileall verwendet wird) kompiliert werden. Dies wird verwendet für
Testen der Leistung des Codegenerators.

--Statistiken
Zeigt Informationen über die Arbeit an, die von der Laufzeit während der Ausführung eines ausgeführt wird
Anwendung.

--wapi=hps|semdel
Führen Sie die Wartung der gemeinsam genutzten Prozessdaten durch. semdel löscht das globale
Semaphor. hps listet die aktuell verwendeten Handles auf.

-v, - ausführlich
Erhöht die Ausführlichkeitsstufe, jedes Mal, wenn es aufgelistet wird, erhöht sich die Ausführlichkeit
Ebene, um weitere Informationen aufzunehmen (einschließlich beispielsweise einer Demontage der
erzeugter nativer Code, Informationen zur Codeauswahl usw.).

ANFÜGEN SUPPORT


Mit der Mono-Laufzeit können externe Prozesse an einen laufenden Prozess angeschlossen und geladen werden
Assemblys in das laufende Programm integrieren. Dem Prozess ist ein spezielles Protokoll beizufügen
in der Mono.Management-Assembly implementiert.

Mit dieser Unterstützung ist es möglich, Baugruppen zu laden, die einen Einstiegspunkt haben (dies ist der Fall).
erstellt mit -target:exe oder -target:winexe), um im Mono-Prozess geladen und ausgeführt zu werden.

Der Code wird in die Stammdomäne geladen und beginnt mit der Ausführung auf der speziellen Laufzeit
Faden anbringen. Das angehängte Programm sollte seine eigenen Threads erstellen und danach zurückkehren
Aufruf.

Diese Unterstützung ermöglicht beispielsweise das Debuggen von Anwendungen durch Anhängen der csharp-Shell
auf laufende Prozesse.

PROFILIERUNG


Die Mono-Laufzeit umfasst einen Profiler, mit dem verschiedene Leistungen untersucht werden können
damit zusammenhängende Probleme in Ihrer Bewerbung. Der Profiler wird durch die Übergabe von --profile aktiviert
Befehlszeilenargument für die Mono-Laufzeit, das Format ist:

--profile[=profiler[:profiler_args]]

Mono verfügt über einen integrierten Profiler namens „default“ (und ist auch der Standard, wenn keine Argumente vorhanden sind).
angegeben), aber Entwickler können benutzerdefinierte Profiler schreiben, siehe Abschnitt „BENUTZERDEFINIERTE PROFILER“
für weitere Informationen an.

Sollten Sie jetzt aufgefordert werden, ein Profiler Wird nicht angegeben, wird der Standard-Profiler verwendet. Der Profiler_Args ist eine
Profilerspezifische Optionsfolge für den Profiler selbst. Der Standardprofiler akzeptiert
die folgenden Optionen „zuordnen“, um den Speicherverbrauch durch die Anwendung zu profilieren; 'Zeit zum
Profilieren Sie die für jede Routine aufgewendete Zeit. „jit“, um die für die JIT-Kompilierung von Methoden aufgewendete Zeit zu erfassen
und „stat“, um statistische Stichprobenprofile zu erstellen. Wenn keine Optionen bereitgestellt werden
Der Standardwert ist „alloc,time,jit“.

Standardmäßig werden die Profildaten auf stdout ausgegeben: Um dies zu ändern, verwenden Sie „file=filename“
Option zum Ausgeben der Daten in Dateiname. Zum Beispiel:

mono --profile program.exe

Dadurch wird das Programm mit dem Standard-Profiler ausgeführt und die Zeit und Zuordnung wird übernommen
Profilerstellung.

mono --profile=default:stat,alloc,file=prof.out program.exe

Führt beispielhafte statistische Profilerstellung und Zuordnungsprofilerstellung für program.exe durch. Das Profil
Die Daten werden in prof.out abgelegt. Beachten Sie, dass der statistische Profiler einen sehr geringen Overhead hat und
sollte der bevorzugte Profiler sein (für eine bessere Ausgabe verwenden Sie den vollständigen Pfad zum Mono).
binär, wenn Sie es ausführen, und stellen Sie sicher, dass Sie das Dienstprogramm addr2line installiert haben, von dem es stammt
das binutils-Paket).

LOG PROFILER


Dies ist der fortschrittlichste Profiler.

Der Mono Log Profiler kann verwendet werden, um viele Informationen über ein laufendes Programm zu sammeln
in der Mono-Laufzeit. Diese Daten können genutzt werden (sowohl während des Prozesses als auch später)
um Analysen des Programmverhaltens durchzuführen, Ressourcennutzung, Leistungsprobleme usw. zu ermitteln
Suchen Sie sogar nach bestimmten Ausführungsmustern.

Dies wird erreicht, indem die von der Mono-Laufzeitumgebung bereitgestellten Ereignisse protokolliert werden
Profilerstellungsschnittstelle und schreibt sie regelmäßig in eine Datei, die später überprüft werden kann
an. Nach der Installation können Sie HEIC-Dateien mit der mprof-Bericht(1) Werkzeug.

Weitere Informationen zur Verwendung des Protokollprofilers finden Sie unter mprof-Bericht(1)


KUNDENSPEZIFISCH PROFILIERER


Mono bietet einen Mechanismus zum Laden anderer Profilierungsmodule in Form von Shared
Bibliotheken. Diese Profilierungsmodule können mit verschiedenen Teilen der Mono-Laufzeit verbunden werden
Sammeln Sie Informationen über den ausgeführten Code.

Um einen Profiler eines Drittanbieters zu verwenden, müssen Sie den Namen des Profilers wie folgt an Mono übergeben:

mono --profile=custom program.exe

Im obigen Beispiel lädt Mono den benutzerdefinierten Profiler aus der gemeinsam genutzten Bibliothek
„mono-profiler-custom.so“. Dieses Profilermodul muss sich in Ihrer dynamischen Linkerbibliothek befinden
Pfad.

Eine Liste anderer Profiler von Drittanbietern finden Sie auf der Website von Mono (www.mono-).
project.com/docs/advanced/performance-tips/)

Benutzerdefinierte Profile werden als gemeinsam genutzte Bibliotheken geschrieben. Die gemeinsam genutzte Bibliothek muss „mono“ heißen.
„profiler-NAME.so“, wobei „NAME“ der Name Ihres Profilers ist.

Ein Beispiel dafür, wie Sie Ihren eigenen benutzerdefinierten Profiler schreiben, finden Sie im Mono-Quellbaum für in
die Proben/profiler.c.

CODE ABDECKUNG


Mono wird mit einem Code-Coverage-Modul geliefert. Dieses Modul wird durch die Verwendung von Mono aktiviert
--profile=cov-Option. Das Format ist: --profile=cov[:assembly-name[/namespace]] Prüfung-
suite.exe

Standardmäßig umfasst die Codeabdeckung standardmäßig alle geladenen Assemblys. Sie können dies durch einschränken
Angabe des Assemblynamens, um beispielsweise die Codeabdeckung in Ihren Routinen durchzuführen
Bei der Verwendung von Programmen beschränkt die folgende Befehlszeile beispielsweise die Codeabdeckung auf Routinen
in der „Demo“-Assembly:

mono --profile=cov:demo demo.exe

Beachten Sie, dass die Assembly-Name beinhaltet nicht die Erweiterung.

Sie können die Ausgabe der Codeabdeckung weiter einschränken, indem Sie einen Namensraum angeben:

mono --profile=cov:demo/My.Utilities demo.exe

Dadurch wird nur die Codeabdeckung in der angegebenen Assembly und im angegebenen Namespace durchgeführt.

Eine typische Ausgabe sieht so aus:

Nicht abgedeckt: Klasse:.ctor ()
Nicht abgedeckt: Klasse:A ()
Nicht abgedeckt: Driver:.ctor ()
Nicht abgedeckt: Driver:method ()
Teilweise Abdeckung: Driver:Main ()
Offset 0x000a

Die angezeigten Offsets sind IL-Offsets.

Ein leistungsfähigeres Abdeckungstool ist im Modul „monocov“ verfügbar. Siehe die monocov(1)
man-Seite für Details.

FEHLERBEHEBUNG AIDS


Zum Debuggen verwalteter Anwendungen können Sie Folgendes verwenden MDB command, ein Befehlszeilen-Debugger.

Es ist möglich, einen Stack-Trace aller aktiven Threads in Mono zu erhalten, indem Sie die senden
QUIT-Signal an Mono, Sie können dies über die Befehlszeile tun, etwa so:

kill -QUIT pid

Wobei pid die Prozess-ID des Mono-Prozesses ist, den Sie untersuchen möchten. Der Prozess wird
läuft danach weiter, sein Zustand ist jedoch nicht garantiert.

Wichtig: Dies ist ein letzter Ausweg zum Debuggen von Anwendungen und sollte nicht sein
Wird zur Überwachung oder Untersuchung einer Produktionsanwendung verwendet. Die Integrität der Laufzeit danach
Das Senden dieses Signals ist nicht garantiert und die Anwendung kann jederzeit abstürzen oder beendet werden
gegebener Punkt im Nachhinein.

Die --debug=casts Die Option kann verwendet werden, um detailliertere Informationen zu Invalid Cast zu erhalten
Vorgängen werden Informationen über die beteiligten Typen bereitgestellt.

Sie können die Umgebungsvariablen MONO_LOG_LEVEL und MONO_LOG_MASK verwenden, um ausführliche Informationen zu erhalten
Debugging-Ausgabe über die Ausführung Ihrer Anwendung in Mono.

Die MONO_LOG_LEVEL Wenn die Umgebungsvariable festgelegt ist, wird die Protokollierungsebene auf den festgelegten Wert geändert
Wert. Mögliche Werte sind „error“, „critical“, „warning“, „message“, „info“, „debug“. Der
Der Standardwert ist „Fehler“. Nachrichten mit einer Protokollierungsebene, die größer oder gleich der Protokollebene ist
Level wird auf stdout/stderr ausgegeben.

Verwenden Sie „info“, um das dynamische Laden von Baugruppen zu verfolgen.

Verwenden Sie das MONO_LOG_MASK Umgebungsvariable, um den Umfang der Nachrichten zu begrenzen, die Sie erhalten: If
gesetzt, wird die Protokollmaske auf den eingestellten Wert geändert. Mögliche Werte sind „asm“ (assembly
Loader), „type“, „dll“ (nativer Bibliotheksloader), „gc“ (Garbage Collector), „cfg“ (config
File Loader), „aot“ (Precompiler), „security“ (z. B. Moonlight CoreCLR-Unterstützung) und „all“.
Der Standardwert ist „alle“. Wenn Sie den Maskenwert ändern, können Sie nur Nachrichten anzeigen
für eine bestimmte Komponente. Sie können mehrere Masken verwenden, indem Sie sie durch Kommas trennen. Zum Beispiel
Um Konfigurationsdateimeldungen und Assembly-Loader-Meldungen anzuzeigen, stellen Sie die Maske auf „asm,cfg“ ein.

Folgendes wird häufig verwendet, um Probleme mit P/Invoke aufzuspüren:

$ MONO_LOG_LEVEL="debug" MONO_LOG_MASK="dll" mono glue.exe

FEHLERBEHEBUNG MIT LLDB


Wenn Sie LLDB verwenden, können Sie die verwenden mono.py Skript zum Drucken einiger interner Daten
Strukturen damit. Um dies zu verwenden, fügen Sie dies zu Ihrem hinzu $HOME/.lldbinit Datei:
Befehlsskriptimport $PREFIX/lib/mono/lldb/mono.py

Dabei ist $PREFIX der Präfixwert, den Sie bei der Konfiguration von Mono verwendet haben (normalerweise). / usr).

Sobald dies erledigt ist, können Sie einige Mono Runtime-Datenstrukturen untersuchen, zum Beispiel:
(lldb) p-Methode

(MonoMethod *) $0 = 0x05026ac0 [mscorlib]System.OutOfMemoryException:.ctor()

SERIALISIERUNG


Die XML-Serialisierungs-Engine von Mono verwendet standardmäßig einen reflexionsbasierten Ansatz
serialisieren, was für die kontinuierliche Verarbeitung (Webdienstanwendungen) langsam sein kann. Der
Die Serialisierungs-Engine bestimmt, wann eine Klasse einen manuell abgestimmten Serialisierer verwenden muss
ein paar Parameter und erstellt bei Bedarf einen angepassten C#-Serialisierer für Ihre Typen
zur Laufzeit. Dieser angepasste Serializer wird dann dynamisch in Ihr geladen
Anwendung.

Sie können dies mit der Umgebungsvariablen MONO_XMLSERIALIZER_THS steuern.

Die möglichen Werte sind „Nein“ um die Verwendung eines benutzerdefinierten C#-Serialisierers oder eines zu deaktivieren
Ganzzahl, die die Mindestanzahl der Verwendungen angibt, bevor die Laufzeit einen benutzerdefinierten Wert erzeugt
Serializer (0 erzeugt beim ersten Zugriff einen benutzerdefinierten Serializer, 50 erzeugt einen
Serializer bei der 50. Verwendung). Mono greift auf einen interpretierten Serialisierer zurück, wenn der
Die Generierung des Serializers schlägt irgendwie fehl. Dieses Verhalten kann durch Setzen der Option deaktiviert werden
„nofallback“ (zum Beispiel: MONO_XMLSERIALIZER_THS=0,nofallback).

VARIABLEN


GC_DONT_GC
Schaltet die Garbage Collection in Mono aus. Dies sollte nur zum Debuggen verwendet werden
Zwecke

LVM_COUNT
Wenn Mono mit LLVM-Unterstützung kompiliert wird, weist dies die Laufzeit an, die Verwendung zu beenden
LLVM, nachdem die angegebene Anzahl von Methoden JITed ist. Dies ist ein Werkzeug, das in verwendet wird
Diagnose, um Probleme im Codegenerierungs-Backend zu isolieren. Zum Beispiel
LLVM_COUNT=10 würde nur 10 Methoden mit LLVM kompilieren und dann auf Mono umsteigen
JIT-Engine. LLVM_COUNT=0 würde die LLVM-Engine vollständig deaktivieren.

MONO_AOT_CACHE
Wenn diese Variable gesetzt ist, weist sie Mono an, neue Assemblys im Voraus zu kompilieren
Fordern Sie das Ergebnis an und speichern Sie es in einem Cache ~/.mono/aot-cache.

MONO_ASPNET_INHIBIT_SETTINGSMAP
Mono enthält eine Funktion, die das Ändern von Einstellungen in den .config-Dateien ermöglicht
Wird mit Mono unter Verwendung von Konfigurationsabschnitts-Mappern ausgeliefert. Die Mapper und das Mapping
Regeln werden in der Datei $prefix/etc/mono/2.0/settings.map und optional in definiert
die Datei „settings.map“ im obersten Verzeichnis Ihrer ASP.NET-Anwendung.
Beide Dateien werden von System.Web beim Start der Anwendung gelesen, sofern sie dort gefunden werden
oben genannten Standorte. Wenn Sie nicht möchten, dass die Zuordnung durchgeführt wird, können Sie dies festlegen
Variable in Ihrer Umgebung, bevor Sie die Anwendung starten, und es wird keine Aktion ausgeführt
genommen.

MONO_ASPNET_WEBCONFIG_CACHESIZE
Mono verfügt über einen Cache mit ConfigSection-Objekten zur Beschleunigung von WebConfigurationManager
Abfragen. Die Standardgröße beträgt 100 Elemente. Wenn mehr Elemente benötigt werden, wird zwischengespeichert
Es kommt zu Zwangsräumungen. Wenn es zu häufig zu Räumungen kommt, kann dies zu Problemen führen
unnötiger Overhead, der durch die Verwendung dieser Umgebungsvariablen vermieden werden könnte
Richten Sie eine höhere Cache-Größe ein (oder senken Sie den Speicherbedarf, indem Sie ihn verringern).

MONO_CAIRO_DEBUG_DISPOSE
Wenn diese Option festgelegt ist, sammelt Mono.Cairo Stapelspuren, wenn Objekte zugewiesen werden
dass die Finalisierungs-/Entsorgungswarnungen Informationen über die Instanzen enthalten
Ursprung.

MONO_CFG_DIR
Wenn diese Variable festgelegt ist, überschreibt sie das Standardsystemkonfigurationsverzeichnis
($PREFIX/usw.). Es wird verwendet, um die Datei „machine.config“ zu finden.

MONO_COM
Legt den Stil von COM-Interop fest. Wenn der Wert dieser Variablen „MS“ ist, wird Mono verwendet
String-Marshsalling-Routinen aus liboleaut32 für die BSTR-Typbibliothek, beliebig
Andere Werte verwenden das monointegrierte BSTR-String-Marshalling.

MONO_CONFIG
Wenn diese Variable festgelegt ist, überschreibt sie die Standard-Laufzeitkonfigurationsdatei
($PREFIX/etc/mono/config). Die Befehlszeilenoptionen --config überschreiben die
variable Umgebung

MONO_CPU_ARCH
Überschreiben Sie den automatischen CPU-Erkennungsmechanismus. Wird derzeit nur am Arm verwendet. Der
Das Format des Werts ist wie folgt:

„armvV [Daumen[2]]“

Dabei ist V die Architekturnummer 4, 5, 6, 7 und die Optionen können aktuell sein
„Daumen“ oder „Daumen2“. Beispiel:

MONO_CPU_ARCH="armv4-Daumen" mono ...

MONO_ARM_FORCE_SOFT_FLOAT
Wenn Mono mit einem Soft-Float-Fallback auf ARM erstellt wird und diese Variable auf gesetzt ist
„1“, Mono gibt immer einen Soft-Float-Code aus, auch wenn eine VFP-Einheit erkannt wird.

MONO_DISABLE_AIO
Wenn festgelegt, wird Mono angewiesen, NICHT zu versuchen, native asynchrone E/A-Dienste zu verwenden. Darin
In diesem Fall wird eine standardmäßige Select/Poll-Implementierung verwendet. Derzeit ist nur epoll() verfügbar
unterstützt.

MONO_DISABLE_MANAGED_COLLATION
Wenn diese Umgebungsvariable „Ja“ ist, verwendet die Laufzeit eine nicht verwaltete Sortierung (die
bedeutet eigentlich keine kulturabhängige Sortierung). Es deaktiviert intern verwaltet
Sortierfunktion, die über die Mitglieder von System.Globalization.CompareInfo aufgerufen wird
Klasse. Die Sortierung ist standardmäßig aktiviert.

MONO_DISABLE_SHM
Nur Unix: Wenn festgelegt, werden die gemeinsam genutzten Speicherdateien deaktiviert, die für prozessübergreifende Handles verwendet werden:
Der Prozess hat nur private Handles. Dies bedeutet, dass Prozess- und Thread-Handles vorhanden sind
nicht für andere Prozesse verfügbar und benannte Mutexe, benannte Ereignisse und benannte
Semaphore sind zwischen Prozessen nicht sichtbar. Dies kann auch durch aktiviert werden
Standardmäßig durch Übergabe der Option „--disable-shared-handles“ zur Konfiguration. Dies ist das
Standardmäßig ab Mono 2.8.

MONO_DISABLE_SHARED_AREA
Nur Unix: Wenn festgelegt, deaktivieren Sie die Nutzung des gemeinsam genutzten Speichers, um die Leistung bereitzustellen
Zähler. Dies bedeutet, dass es nicht möglich ist, die Leistung extern abzulesen
Zähler aus diesem Prozess abrufen oder die Zähler externer Prozesse auslesen.

MONO_DNS
Wenn diese Option festgelegt ist, wird die Verwendung eines vollständig verwalteten DNS-Resolvers anstelle des regulären aktiviert
libc-Funktionen. Dieser Resolver ist wesentlich leistungsfähiger, wenn mehrere Abfragen ausgeführt werden
parallel.

Beachten Sie, dass /etc/nsswitch.conf wird ignoriert.

MONO_EGD_SOCKET
Für Plattformen, die ansonsten keine Möglichkeit haben, zufällige Bytes abzurufen, ist dies möglich
auf den Namen eines Dateisystem-Sockets gesetzt werden, auf dem sich ein egd- oder prngd-Daemon befindet
Hören.

MONO_ENABLE_SHM
Nur Unix: Aktivieren Sie die Unterstützung für prozessübergreifende Handles. Prozessübergreifende Handles sind
Wird verwendet, um Prozesshandles, Threadhandles, benannte Mutexe, benannte Ereignisse usw. verfügbar zu machen
benannte Semaphore in Unix-Prozessen.

MONO_ENV_OPTIONS
Mit dieser Umgebungsvariablen können Sie Befehlszeilenargumente an einen Mono übergeben
Prozess durch die Umwelt. Dies ist beispielsweise nützlich, um alle Ihre Einstellungen zu erzwingen
Mono-Prozesse zur Verwendung von LLVM oder SGEN, ohne dass Startskripts geändert werden müssen.

MONO_ENV_OPTIONS
Wird verwendet, um in der Laufzeit zusätzliche Optionen an den Debugger-Agenten zu übergeben
übergeben mit --debugger-agent=.

MONO_EVENTLOG_TYPE
Legt den Typ des zu verwendenden Ereignisprotokollanbieters fest (für System.Diagnostics.EventLog).
Mögliche Werte sind:

lokal[:pfad]
Behält Ereignisprotokolle und Einträge im lokalen Dateisystem bei. Das Verzeichnis in
Für die Speicherung der Ereignisprotokolle können Ereignisquellen und Einträge angegeben werden
als Teil des Wertes. Wenn der Pfad nicht explizit festgelegt ist, wird standardmäßig verwendet
„/var/lib/mono/eventlog“ unter Unix und „%APPDATA%no\ventlog“ unter Windows.

win32 Verwendung nativen win32 API zu schreiben Veranstaltungen und registriert Event Protokolle und Event
Quellen im Register. Dies ist nur unter Windows verfügbar. Unter Unix ist das
Verzeichnisberechtigung für einzelne Ereignisprotokoll- und Ereignisquellenverzeichnisse
ist auf 777 (mit +t-Bit) eingestellt, sodass jeder das Ereignisprotokoll lesen und schreiben kann
Einträge, während Einträge nur von den Benutzern gelöscht werden dürfen
sie erstellt.

null Verwirft stillschweigend alle Ereignisse.

Der Standardwert ist „null“ unter Unix (und Windows-Versionen vor NT) und „win32“ unter
Windows NT (und höher).

MONO_EXTERNAL_ENCODINGS
Wenn festgelegt, enthält es eine durch Doppelpunkte getrennte Liste von Textkodierungen, die beim Umwandeln ausprobiert werden sollen
extern generierten Text (z. B. Befehlszeilenargumente oder Dateinamen) in Unicode.
Die Codierungsnamen stammen aus der von iconv bereitgestellten Liste und dem Sonderfall
„default_locale“, das sich auf die Standardkodierung des aktuellen Gebietsschemas bezieht.

Beim Lesen extern generierter Textzeichenfolgen wird zuerst UTF-8 ausprobiert und dann dies
Die Liste wird der Reihe nach ausprobiert, wobei die erste erfolgreiche Konvertierung die Suche beendet.
Beim Schreiben von externem Text (z. B. neue Dateinamen oder Argumente für neue Prozesse) wird der
Das erste Element in dieser Liste wird verwendet, oder UTF-8, wenn die Umgebungsvariable nicht festgelegt ist.

Das Problem bei der Verwendung von MONO_EXTERNAL_ENCODINGS zur Verarbeitung Ihrer Dateien besteht darin, dass dies der Fall ist
führt zu einem Problem: Obwohl es möglich ist, den richtigen Dateinamen zu erhalten, ist dies nicht der Fall
unbedingt möglich, die Datei zu öffnen. Im Allgemeinen, wenn Sie Probleme mit haben
Um Codierungen in Ihren Dateinamen zu vermeiden, sollten Sie das Programm „convmv“ verwenden.

MONO_GC_PARAMS
Bei Verwendung von Mono mit dem SGen-Garbage Collector steuert diese Variable mehrere
Parameter des Kollektors. Der Wert der Variablen ist eine durch Kommas getrennte Liste von
Worte.

Kindergartengröße=Größe
Legt die Größe des Kindergartens fest. Die Größe wird in Bytes angegeben und muss a sein
Kraft von zwei. Die Suffixe „k“, „m“ und „g“ können verwendet werden, um Kilo-,
Mega- bzw. Gigabyte. Die Gärtnerei ist die erste Generation (von
zwei). Ein größerer Kindergarten wird das Programm normalerweise beschleunigen, wird dies aber natürlich auch tun
mehr Speicher verbrauchen. Die Standardgröße des Kindergartens beträgt 4 MB.

Major=Sammler Gibt an, welcher Hauptkollektor verwendet werden soll.
Optionen sind „marksweep“ für den Mark&Sweep-Kollektor und „marksweep-conc“
für gleichzeitiges Mark&Sweep. Der nicht gleichzeitige Mark&Sweep-Kollektor ist der
default.

Soft-Heap-Limit=Größe
Sobald die Heap-Größe diesen Wert überschreitet, ignorieren Sie den Standard-Major
Die Metrik des Sammlungsauslösers besagt, dass nur vier Hauptgrößen für Kindergartengrößen zulässig sind
Heap-Wachstum zwischen großen Sammlungen.

Evakuierungsschwelle=Schwelle
Legt den Evakuierungsschwellenwert in Prozent fest. Diese Option ist nur verfügbar auf
die großen Mark&Sweep-Sammler. Der Wert muss eine Ganzzahl im Bereich sein
0 bis 100. Der Standardwert ist 66. Wenn die Sweep-Phase der Sammlung gefunden wird
dass die Belegung eines bestimmten Heap-Blocktyps geringer ist
Prozentsatz wird im nächsten Schritt eine Kopiersammlung für diesen Blocktyp erstellt
Große Sammlung und damit wieder eine Auslastung von nahezu 100 Prozent. A
Der Wert 0 schaltet die Evakuierung aus.

(no-)lazy-sweep
Aktiviert oder deaktiviert Lazy Sweep für den Mark&Sweep-Kollektor. Wenn aktiviert,
Das Durchsuchen einzelner großer Heap-Blöcke erfolgt schrittweise, wann immer
Bedarf entsteht, typischerweise während der Baumschulsammlungen. Lazy Sweeping ist aktiviert
standardmäßig.

(kein) gleichzeitiger Sweep
Aktiviert oder deaktiviert den gleichzeitigen Sweep für den Mark&Sweep-Kollektor. Wenn
aktiviert, die Iteration aller Hauptblöcke, um zu bestimmen, welche sein können
freigegeben werden und welche aufbewahrt und gekehrt werden müssen, erfolgt gleichzeitig
das laufende Programm. Das gleichzeitige Sweepen ist standardmäßig aktiviert.

stack-mark=Markierungsmodus
Gibt an, wie Anwendungsthreads gescannt werden sollen. Optionen sind „präzise“.
und „konservativ“. Durch die genaue Markierung weiß der Sammler, welche Werte vorliegen
Auf dem Stapel befinden sich Referenzen und was nicht. Konservative Markierung bedroht alle
Werte als potenzielle Referenzen betrachten und unberührt lassen. Präzise Markierung
Reduziert herumschwirrenden Müll und kann die Sammlung und Zuteilung im Kindergarten beschleunigen
Allerdings hat es den Nachteil, dass ein erheblicher zusätzlicher Speicher pro Stück erforderlich ist
kompilierte Methode. Die richtige Option erfordert leider Experimente.

save-target-ratio=Verhältnis
Gibt das angestrebte Speicherverhältnis für den Hauptkollektor an. Der Sammler lässt
eine bestimmte Menge an Gedächtnis, das aufgrund von Minderjährigen aus dem Kindergarten gefördert werden soll
Sammlungen, bevor eine größere Sammlung ausgelöst wird. Dieser Betrag basiert auf
wie viel Speicher voraussichtlich frei wird. Es wird als Verhältnis der Größe dargestellt
des Heaps nach einer großen Sammlung. Gültige Werte liegen zwischen 0.1 und 2.0.
Der Standardwert ist 0.5. Kleinere Werte sorgen dafür, dass die Hauptheap-Größe kleiner bleibt
wird aber weitere große Sammlungen auslösen. Ebenso werden größere Werte verwendet
mehr Speicher und führen zu selteneren großen Sammlungen. Diese Option ist
EXPERIMENTELL, daher könnte es in späteren Versionen von Mono verschwinden.

default-allowance-ratio=Verhältnis
Gibt die Standardzuteilungszulage an, wenn die berechnete Größe zu groß ist
klein. Die Zuteilungsmenge gibt an, wie viel Speicher der Collector zur Verfügung stellt
beworben, bevor eine große Sammlung ausgelöst wurde. Es handelt sich um ein Verhältnis des Kindergartens
Größe. Gültige Werte liegen zwischen 1.0 und 10.0. Der Standardwert ist 4.0. Kleiner
Werte führen zu kleineren Haufen und häufigeren großen Sammlungen. Ebenfalls,
Größere Werte ermöglichen ein schnelleres Wachstum des Heapspeichers, verbrauchen dabei jedoch mehr Speicher
erreicht eine stabile Größe. Diese Option ist EXPERIMENTELL und verschwindet möglicherweise
in späteren Versionen von Mono.

Moll=Kleiner Sammler
Gibt an, welcher Nebenkollektor verwendet werden soll. Die Optionen sind „einfach“, was fördert
alle Objekte aus der Gärtnerei direkt in die alte Generation und „aufteilen“
Dadurch bleibt das Objekt länger im Kinderzimmer, bevor es verkauft wird.

alloc-ratio=Verhältnis
Gibt das Verhältnis des Speichers aus dem Kindergarten an, der vom zugewiesenen Speicherplatz verwendet werden soll.
Dies kann nur mit dem Split-Minor-Kollektor verwendet werden. Gültige Werte sind
Ganzzahlen zwischen 1 und 100. Der Standardwert ist 60.

Promotion-Alter= Alter
Gibt das erforderliche Alter an, das ein Objekt zuvor innerhalb der Baumschule erreichen muss
wurde in die alte Generation befördert. Dies kann nur mit dem verwendet werden
Split-Minor-Sammler. Gültige Werte sind ganze Zahlen zwischen 1 und 14. Standard
ist 2.

(nicht)zementierend
Aktiviert oder deaktiviert die Zementierung. Dies kann die Kindergartenzeit erheblich verkürzen
Erfassungszeiten bei einigen Benchmarks, bei denen auf angeheftete Objekte verwiesen wird
vom großen Haufen.

MONO_GC_DEBUG
Bei Verwendung von Mono mit dem SGen-Garbage Collector kann diese Umgebungsvariable sein
Wird verwendet, um verschiedene Debugging-Funktionen des Collectors zu aktivieren. Der Wert davon
Variable ist eine durch Kommas getrennte Liste von Wörtern. Verwenden Sie diese Optionen nicht in
Produktion.

Anzahl Setzt die Debugstufe auf die angegebene Zahl.

Druckfreigabe
Nach jeder größeren Sammlung wird der Speicherverbrauch für vorher und nachher gedruckt
die Sammlung und der Zuschuss für den minderjährigen Sammler, also wie viel der
Der Heap darf aus kleineren Sammlungen vor dem nächsten großen wachsen
Die Sammlung wird ausgelöst.

Drucken-Pinning
Erfasst Statistiken zu den Klassen, deren Objekte im Kindergarten angeheftet sind
und für die globale Remset-Einträge hinzugefügt werden. Druckt diese Statistiken wann
Herunterfahren.

Vor der Zuteilung sammeln

Überprüfen Sie kleinere Sammlungen
Dies führt eine Konsistenzprüfung für kleinere Sammlungen durch und löscht auch die
Kindergarten zum Erfassungszeitpunkt statt der Standardeinstellung, wenn Puffer vorhanden sind
zugewiesen (clear-at-gc). Die Konsistenzprüfung stellt sicher, dass keine vorhanden sind
Dur-zu-Moll-Referenzen, die sich nicht in den gespeicherten Sets befinden.

Mod-Union-Konsistenzprüfung
Überprüft vor jedem Abschluss, ob die Mod-Union-Kartentabelle konsistent ist
Große Sammelpause. Diese Prüfung gilt nur für gleichzeitige Hauptfächer
Sammler.

Häkchenbits
Prüfungen, die Bits im Hauptheap markieren, sind am Ende jedes einzelnen konsistent
große Sammlung. Konsistente Markierungsbits bedeuten, dass, wenn ein Objekt markiert ist,
Alle Objekte, auf die es verweist, müssen ebenfalls markiert werden.

Scheck-Kinderzimmer-gepinnt
Überprüfen Sie die Daten nach der Kindergartensammlung und vor Beginn der gleichzeitigen Sammlung
ob alle Kindergartenobjekte angeheftet sind oder nicht – abhängig davon
Kontext. Funktioniert nichts, wenn der geteilte Baumschulkollektor verwendet wird.

xdomain-checks
Führt eine Prüfung durch, um sicherzustellen, dass keine Verweise auf eine entladene Datei verbleiben
AppDomain.

Clear-at-tlab-creation
Löscht den Kindergarten inkrementell, wenn der Thread lokale Zuordnungspuffer speichert
(TLAB) werden erstellt. Die Standardeinstellung löscht den gesamten Kindergarten bei GC
Zeit.

debug-clear-at-tlab-creation
Löscht den Kindergarten inkrementell, wenn der Thread lokale Zuordnungspuffer speichert
(TLAB) werden erstellt, aber zur GC-Zeit wird es mit dem Byte „0xff“ gefüllt, das
sollte schneller zu einem Absturz führen, wenn „clear-at-tlab-creation“ dies nicht tut
einwandfrei funktionieren.

Clear-at-GC
Dadurch wird der Kindergarten zur GC-Zeit gelöscht, anstatt dies zu tun, wenn der Thread lokal ist
Der Zuordnungspuffer (TLAB) wird erstellt. Standardmäßig wird der Kindergarten um gelöscht
TLAB-Erstellungszeit.

Disable-Moll
Machen Sie keine kleineren Sammlungen. Wenn die Gärtnerei voll ist, steht eine große Sammlung an
stattdessen ausgelöst, es sei denn, es ist ebenfalls deaktiviert.

Disable-Major
Machen Sie keine großen Sammlungen.

konservative-Stack-Marke
Zwingt den GC, den Stapel konservativ zu scannen, auch wenn dies beim präzisen Scannen der Fall ist
erhältlich.

Kein verwalteter Allokator
Deaktiviert den verwalteten Allokator.

check-scan-starts
Wenn festgelegt, wird vor und nach jedem Scan eine Plausibilitätsprüfung der scan_starts durchgeführt
der Abholung

Überprüfen Sie den Kindergarten bei Minor GC
Wenn festgelegt, wird jeweils zu Beginn ein kompletter Objektrundgang durch den Kindergarten durchgeführt
kleinere Sammlung.

Dump-Kindergarten-bei-Minor-GC
Wenn festgelegt, wird der Inhalt des Kindergartens zu Beginn jedes Nebenprogramms ausgegeben
Sammlung. Erfordert die Festlegung von „Verify-nursery-at-minor-gc“.

heap-dump=Datei
Gibt den Heap-Inhalt in der angegebenen Datei aus. Um das zu visualisieren
Informationen, verwenden Sie das Mono-Heapviz-Tool.

Binärprotokoll=Datei
Gibt die Debugging-Ausgabe in die angegebene Datei aus. Damit das funktioniert, Mono
muss mit der BINARY_PROTOCOL-Definition auf sgen-gc.c kompiliert werden. Du kannst
Verwenden Sie dann diesen Befehl, um die Ausgabe zu untersuchen
sgen-grep-binprot 0x1234 0x5678 < Datei

Kindergarten-Kanarienvögel
Wenn festgelegt, werden im Kinderzimmer zugewiesene Objekte mit einem Kanarienvogel (Wächter) versehen.
Wort, das bei jeder Nebensammlung überprüft wird. Kann zum Erkennen/Debuggen verwendet werden
Heap-Korruptionsprobleme.

nicht abschließen
Wenn diese Option aktiviert ist, werden Finalizer nicht ausgeführt. Alles andere bleibt davon unberührt:
Finalisierbare Objekte werden weiterhin in die Finalisierungswarteschlange gestellt, wo sie
überleben, bis sie fertig sind. Sobald sie nicht in der Warteschlange sind
Sie werden weiterhin regelmäßig eingesammelt.

Log-Finalisierer
Protokollieren Sie den Finalisierungsprozess ausführlich, um das Debuggen zu erleichtern.

MONO_GAC_PREFIX
Stellt ein Präfix bereit, das die Laufzeit verwendet, um nach globalen Assembly-Caches zu suchen. Verzeichnisse
werden durch das Plattformpfadtrennzeichen (Doppelpunkte unter Unix) getrennt. MONO_GAC_PREFIX
sollte auf das oberste Verzeichnis einer vorangestellten Installation verweisen. Oder ins Verzeichnis
Wird im Befehl gacutil /gacdir bereitgestellt. Beispiel:
/home/username/.mono:/usr/local/mono/

MONO_IOMAP
Aktiviert einige Unterstützung für das Umschreiben von Dateinamen, um schlecht geschriebene Anwendungen zu unterstützen
Hartcodierte Windows-Pfade. Legen Sie eine durch Doppelpunkte getrennte Liste von „Laufwerken“ fest, um das Laufwerk zu entfernen
Buchstaben oder „case“, um in jedem Verzeichnis in a einen Dateiabgleich ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen
Weg. „all“ aktiviert alle Umschreibungsmethoden. (Backslashes werden immer zugeordnet
Schrägstriche, wenn diese Variable auf eine gültige Option gesetzt ist).
Dies würde beispielsweise von der Shell aus funktionieren:

MONO_IOMAP=Laufwerk:Gehäuse
MONO_IOMAP exportieren

Wenn Sie mod_mono zum Hosten Ihrer Webanwendungen verwenden, können Sie das verwenden MonoIOMAP
stattdessen eine Direktive wie folgt:

MonoIOMAP alle

Weitere Informationen finden Sie auch in den mod_mono(8) für weitere Details.

Zusätzlich. Mono enthält ein Profiler-Modul, mit dem man verfolgen kann, was
Anpassungen an Dateipfaden, die der IOMAP-Code vornehmen muss. Der Tracking-Code meldet die
verwalteter Speicherort (vollständiger Stack-Trace), von dem aus der IOMAP-ed-Aufruf durchgeführt wurde, und weiter
Prozessexit, die Speicherorte, an denen alle IOMAP-ed-Strings verwaltet wurden
Code. Der letztgenannte Bericht ist nur annähernd, da dies nicht immer möglich ist
Schätzen Sie den tatsächlichen Ort, an dem die Zeichenfolge erstellt wurde. Der Code verwendet einfach
Heuristik – es analysiert die Stapelverfolgung, die zurück zum Speicherort der Zeichenfolgenzuordnung führt
und ignoriert auch den gesamten verwalteten Code, der sich in in GAC installierten Assemblys befindet
wie in den mit Mono gelieferten Klassenbibliotheken (da davon ausgegangen wird, dass sie frei von sind).
Probleme mit der Groß-/Kleinschreibung). Anschließend wird die erste Position im Code des Benutzers gemeldet –
In den meisten Fällen ist dies der Ort, an dem die Zeichenfolge zugewiesen ist, oder sehr nahe daran
der Standort. Der Berichtscode ist als benutzerdefiniertes Profilermodul implementiert (siehe
Abschnitt „PROFILING“) und kann wie folgt geladen werden:

mono --profile=iomap yourapplication.exe

Beachten Sie jedoch, dass Mono derzeit jeweils nur ein Profiler-Modul unterstützt.

MONO_LLVM
Wenn Mono das LLVM-Codegenerierungs-Backend verwendet, können Sie diese Umgebung verwenden
Variable, um Codegenerierungsoptionen an den LLVM-Compiler zu übergeben.

MONO_MANAGED_WATCHER
Wenn es auf „disabled“ gesetzt ist, verwendet System.IO.FileSystemWatcher einen Datei-Watcher
Implementierung, die alle Überwachungsanfragen stillschweigend ignoriert. Wenn auf „any“ eingestellt
Bei einem anderen Wert verwendet System.IO.FileSystemWatcher den verwalteten Standardwert
Umsetzung (langsam). Wenn diese Option nicht festgelegt ist, versucht Mono, inotify, FAM, Gamin, kevent zu verwenden
unter Unix-Systemen und nativen API-Aufrufen unter Windows, wobei auf die verwalteten zurückgegriffen wird
Implementierung bei Fehler.

MONO_MESSAGING_PROVIDER
Mono unterstützt ein Plugin-Modell für die Implementierung von System.Messaging
Es ist möglich, eine Vielzahl von Messaging-Implementierungen zu unterstützen (z. B. AMQP, ActiveMQ).
Um anzugeben, welche Messaging-Implementierung verwendet werden soll, verwenden Sie die Umgebungsvariable
muss auf den vollständigen Klassennamen für den Anbieter festgelegt werden. ZB um den RabbitMQ zu verwenden
Basierend auf der AMQP-Implementierung sollte die Variable auf Folgendes gesetzt werden:

Mono.Messaging.RabbitMQ.RabbitMQMessagingProvider,Mono.Messaging.RabbitMQ

MONO_NO_SMP
Wenn festgelegt, wird der Monoprozess an einen einzelnen Prozessor gebunden. Das mag sein
nützlich beim Debuggen oder Umgehen von Rennbedingungen.

MONO_NO_TLS
Deaktivieren Sie das Inlining lokaler Thread-Zugriffe. Versuchen Sie, dies einzustellen, wenn ein Segfault auftritt
schon früh in der Ausführung von Mono.

MONO_PATH
Stellt einen Suchpfad zur Laufzeit bereit, in dem nach einer Bibliothek gesucht werden kann
Dateien. Dies ist ein praktisches Tool zum Debuggen von Anwendungen, aber
sollte nicht von bereitgestellten Anwendungen verwendet werden, da dadurch die Assembly beschädigt wird
Lader auf subtile Weise.
Verzeichnisse werden durch das Plattformpfadtrennzeichen (Doppelpunkte unter Unix) getrennt. Beispiel:
/home/username/lib:/usr/local/mono/lib
Relative Pfade werden basierend auf dem aktuellen Verzeichnis zum Startzeitpunkt aufgelöst.
Alternative Lösungen zu MONO_PATH umfassen: Installieren von Bibliotheken in
der Global Assembly Cache (siehe gacutil(1)) oder das Unterhaltsberechtigte haben
Bibliotheken neben der ausführbaren Hauptdatei.
Eine vollständige Beschreibung der empfohlenen Anwendungspraktiken finden Sie hier
Bereitstellung, siehe
http://www.mono-project.com/docs/getting-started/application-deployment/

MONO_RTC
Experimentelle RTC-Unterstützung im statistischen Profiler: sofern der Benutzer dies getan hat
Mit der Erlaubnis werden genauere Statistiken erhoben. Der MONO_RTC
Der Wert muss auf das beschränkt werden, was der Linux-RTC zulässt: Zweierpotenz
von 64 bis 8192 Hz. Um höhere Frequenzen wie 4096 Hz zu aktivieren, führen Sie als Root aus:

echo 4096 > /proc/sys/dev/rtc/max-user-freq

Beispielsweise:

MONO_RTC=4096 mono --profiler=default:stat program.exe

MONO_SHARED_DIR
Wenn festgelegt, ist es das Verzeichnis, in dem der Handle-Status „.wapi“ gespeichert ist. Dies ist das
Verzeichnis, in dem die Windows-E/A-Emulationsschicht ihre gemeinsamen Statusdaten speichert
(Dateien, Ereignisse, Mutexe, Pipes). Standardmäßig speichert Mono das Verzeichnis „.wapi“.
im Home-Verzeichnis des Benutzers.

MONO_SHARED_HOSTNAME
Verwendet den Zeichenfolgenwert dieser Variablen als Ersatz für den Hostnamen, wenn
Erstellen von Dateinamen im Verzeichnis „.wapi“. Dies hilft, wenn der Hostname Ihres
Die Maschine wird wahrscheinlich geändert, wenn eine Monoanwendung ausgeführt wird oder wenn Sie eine haben
.wapi-Verzeichnis, das von mehreren verschiedenen Computern gemeinsam genutzt wird. Mono verwendet normalerweise das
Hostname, um die Dateien zu erstellen, die zum Teilen des Status über mehrere Mono hinweg verwendet werden
Prozesse. Dies geschieht, um Home-Verzeichnisse zu unterstützen, die möglicherweise über das freigegeben werden
Netzwerk.

MONO_STRICT_IO_EMULATION
Wenn festgelegt, werden während E/A-Vorgängen zusätzliche Prüfungen durchgeführt. Derzeit umfasst dies nur
Hinweissperren rund um Dateischreibvorgänge.

MONO_THEME
Der Name des Designs, das von Windows.Forms verwendet werden soll. Zu den heute verfügbaren Themen gehören:
„clearlooks“, „nice“ und „win32“. Der Standardwert ist „win32“.

MONO_TLS_SESSION_CACHE_TIMEOUT
Die Zeit in Sekunden, die der SSL/TLS-Sitzungscache seinen zu vermeidenden Eintrag behält
eine neue Verhandlung zwischen dem Client und einem Server. Verhandlungen sind sehr anstrengend
intensiv, sodass sich ein anwendungsspezifischer benutzerdefinierter Wert für kleine Unternehmen als nützlich erweisen kann
eingebettete Systeme. Der Standardwert beträgt 180 Sekunden.

MONO_THREADS_PER_CPU
Die Mindestanzahl von Threads im allgemeinen Threadpool beträgt
MONO_THREADS_PER_CPU * Anzahl der CPUs. Der Standardwert für diese Variable ist 1.

MONO_XMLSERIALIZER_THS
Steuert den Schwellenwert für den XmlSerializer, um einen benutzerdefinierten Serialisierer für a zu erstellen
gegebene Klasse, anstatt den Reflection-basierten Interpreter zu verwenden. Die möglichen Werte
sind „Nein“, um die Verwendung eines benutzerdefinierten Serialisierers zu deaktivieren, oder eine Zahl, die angibt, wann der
XmlSerializer sollte mit der Serialisierung beginnen. Der Standardwert ist 50, was bedeutet
Bei der 50. Verwendung wird ein benutzerdefinierter Serialisierer erstellt.

MONO_X509_REVOCATION_MODE
Legt den Sperrmodus fest, der bei der Validierung einer X509-Zertifikatskette (https,
ftps, smtps...). Der Standardwert ist „nocheck“, wodurch keine Sperrprüfung durchgeführt wird
alle. Die anderen möglichen Werte sind „offline“, wodurch eine CRL-Prüfung durchgeführt wird (nicht).
noch nicht implementiert) und „online“, das OCSP und CRL verwendet, um den Widerruf zu überprüfen
Status (noch nicht implementiert).

VARIABLEN FÜR FEHLERBEHEBUNG


MONO_ASPNET_NODELETE
Wenn auf einen beliebigen Wert gesetzt, unterstützen temporäre Quelldateien, die von ASP.NET generiert werden, Klassen
wird nicht entfernt. Sie werden im temporären Verzeichnis des Benutzers gespeichert.

MONO_DEBUG
Wenn festgelegt, werden einige Funktionen der Laufzeit aktiviert, die für das Debuggen nützlich sind. Diese Variable
sollte eine durch Kommas getrennte Liste von Debugging-Optionen enthalten. Derzeit ist die
Folgende Optionen werden unterstützt:

Einbruch-ungeprüft
Wenn diese Variable gesetzt ist und bei der Mono-VM ein Überprüfungsproblem auftritt,
Anstatt eine Ausnahme auszulösen, wird der Debugger unterbrochen. Das ist
nützlich beim Debuggen von Verifiziererproblemen

wirft Diese Option kann verwendet werden, um detailliertere Informationen von InvalidCast zu erhalten
Ausnahmen gibt es Auskunft über die beteiligten Typen.

Seitenfehlerstatistiken sammeln
Sammelt Informationen über Seitenfehler. Dies wird intern zur Nachverfolgung verwendet
Die Anzahl der Seitenfehler, die beim Laden von Metadaten erzeugt wurden. Um dies anzuzeigen
Um Informationen zu erhalten, müssen Sie diese Option mit der Befehlszeilenoption „--stats“ verwenden.

Dont-Free-Domains
Dies ist eine Optimierung für Multi-AppDomain-Anwendungen (am häufigsten).
ASP.NET-Anwendungen). Aufgrund interner Einschränkungen ist Mono standardmäßig Mono
verwendet keine typisierten Zuweisungen für Multi-AppDomain-Anwendungen, wie dies möglich wäre
Speicherverlust beim Entladen einer Domäne. Obwohl dies eine gute Standardeinstellung ist, z
Anwendungen, die mehr als AppDomain stark nutzen (z. B. ASP.NET).
Anwendungen) lohnt es sich, die kleinen Lecks gegen die größeren einzutauschen
Leistung (zusätzlich, da ASP.NET-Anwendungen wahrscheinlich nicht ausgeführt werden
Zum Entladen der Anwendungsdomänen auf Produktionssystemen lohnt sich der Einsatz
Dieses Feature).

dyn-runtime-invoke
Weist die Laufzeit an, stattdessen zu versuchen, einen generischen Laufzeitaufruf-Wrapper zu verwenden
einen Aufruf-Wrapper zu erstellen.

gdb Entspricht dem Einstellen der MONO_XDEBUG Variable, diese gibt Symbole in a aus
Shared Library, da der Code JITed ist und zur Überprüfung in GDB geladen werden kann
Symbole.

Gen-Seq-Punkte
Erzeugt automatisch Sequenzpunkte, an denen der IL-Stack leer ist. Diese
sind Orte, an denen der Debugger einen Haltepunkt setzen kann.

explizite Nullprüfungen
Bewirkt, dass die JIT eine explizite NULL-Prüfung für Variablendereferenzen generiert
anstatt vom Betriebssystem abhängig zu sein, um einen SIGSEGV oder einen anderen zu erhöhen
Form eines Trap-Ereignisses, wenn auf einen ungültigen Speicherort zugegriffen wird.

Henkel-Signatur
Erfasst das Interrupt-Signal (Strg-C) und zeigt einen Stack-Trace an, wenn
gedrückt. Nützlich, um herauszufinden, wo das Programm zu einem bestimmten Zeitpunkt ausgeführt wird
Punkt. Dadurch wird nur der Stack-Trace eines einzelnen Threads angezeigt.

Init-Stacks
Weist die Laufzeit an, den Stapel mit einigen bekannten Werten (0x2a
auf x86-64) am Anfang einer Methode zur Unterstützung beim Debuggen der JIT-Engine.

Keep-Delegates
Diese Option lässt Delegierten-Trampoline durchsickern, auf die nicht mehr verwiesen wird
um dem Benutzer weitere Informationen über einen Delegiertenmissbrauch zu präsentieren.
Grundsätzlich kann eine Delegate-Instanz erstellt und an nicht verwalteten Code übergeben werden.
und es werden keine Referenzen im verwalteten Code gespeichert, wodurch der Code im Müll gesammelt wird.
Mit dieser Option ist es möglich, der Ursache der Probleme auf die Spur zu kommen.

Reverse-Pinvoke-Ausnahmen
Diese Option führt dazu, dass Mono während des Vorgangs mit einer beschreibenden Meldung abgebrochen wird
Beim Abwickeln des Stapels nach einer Ausnahme wird ein nativer Stapelrahmen erreicht. Das
passiert, wenn ein verwalteter Delegat an nativen Code übergeben wird und der verwaltete
Der Delegat löst eine Ausnahme aus. Normalerweise wird Mono versuchen, den Stapel abzuwickeln
der erste (verwaltete) Ausnahmehandler und überspringt jeden nativen Stapel
Frames im Prozess. Dies führt zu undefiniertem Verhalten (da Mono dies nicht tut).
wissen, wie man native Frames verarbeitet), Lecks und möglicherweise auch Abstürze.

no-gdb-backtrace
Diese Option deaktiviert den GDB-Backtrace, der von der Laufzeit nach a ausgegeben wird
SIGSEGV oder SIGABRT in nicht verwaltetem Code.

suspend-on-sigsegv
Diese Option unterbricht das Programm, wenn ein natives SIGSEGV empfangen wird.
Dies ist nützlich zum Debuggen von Abstürzen, die unter gdb nicht auftreten, da a
Ein Live-Prozess enthält mehr Informationen als eine Kerndatei.

check-pinvoke-callconv
Diese Option veranlasst die Laufzeit, eine Prüfung auf Nichtübereinstimmungen der Aufrufkonventionen durchzuführen
bei Verwendung von Pinvoke, dh beim Mischen von cdecl/stdcall. Es funktioniert nur unter Windows. Wenn
Wenn eine Nichtübereinstimmung festgestellt wird, wird eine ExecutionEngineException ausgelöst.

MONO_LOG_LEVEL
Die Protokollierungsstufe, mögliche Werte sind „Fehler“, „Kritisch“, „Warnung“, „Nachricht“,
„Info“ und „Debug“. Weitere Informationen finden Sie im Abschnitt DEBUGGING.

MONO_LOG_MASK
Steuert die Domäne der Mono-Laufzeit, für die die Protokollierung gilt. Wenn festgelegt, wird die
Die Protokollmaske wird auf den eingestellten Wert geändert. Mögliche Werte sind „asm“ (Assembly Loader),
„type“, „dll“ (nativer Bibliothekslader), „gc“ (Garbage Collector), „cfg“ (Konfigurationsdatei).
Loader), „aot“ (Precompiler), „security“ (z. B. Moonlight CoreCLR-Unterstützung) und
"alle". Der Standardwert ist „alle“. Durch Ändern des Maskenwerts können Sie anzeigen
nur Nachrichten für eine bestimmte Komponente. Sie können mehrere Masken durch Komma verwenden
sie zu trennen. Zum Beispiel, um Konfigurationsdateimeldungen und den Assembly-Loader anzuzeigen
Nachrichten setzen Ihre Maske auf „asm,cfg“.

MONO_TRACE
Wird zur Laufzeitverfolgung von Methodenaufrufen verwendet. Das Format der durch Kommas getrennten Ablaufverfolgung
Optionen ist:

[-]M:Methodenname
[-]N:Namespace
[-]T:Klassenname
[-]alle
[-]Programm
deaktiviert Trace-Ausgabe beim Start ausschalten.

Sie können die Trace-Ausgabe ein-/ausschalten, indem Sie ein SIGUSR2-Signal an das Programm senden.

MONO_TRACE_LISTENER
Wenn festgelegt, wird der System.Diagnostics.DefaultTraceListener aktiviert, der das ausgibt
Ausgabe der System.Diagnostics Trace- und Debug-Klassen. Es kann auf a eingestellt werden
Dateiname und an Console.Out oder Console.Error, um die Ausgabe in der Standardausgabe anzuzeigen
bzw. Standardfehler. Wenn es auf Console.Out oder Console.Error eingestellt ist
kann ein optionales Präfix anhängen, das beim Schreiben von Nachrichten wie dieser verwendet wird:
Console.Error:MyProgramName. Siehe System.Diagnostics.DefaultTraceListener
Dokumentation für weitere Informationen.

MONO_WCF_TRACE
Dies erleichtert die WCF-Diagnosefunktionalität, indem einfach alle Protokollmeldungen ausgegeben werden
WCF-Engine an „stdout“, „stderr“ oder eine beliebige Datei, die an diese Umgebungsvariable übergeben wird.
Das Protokollformat ist das gleiche wie bei der üblichen Diagnoseausgabe.

MONO_XEXCEPTIONS
Dies löst eine Ausnahme aus, wenn ein X11-Fehler auftritt. Standardmäßig ist eine Nachricht
angezeigt, aber die Ausführung wird fortgesetzt

MONO_XMLSERIALIZER_DEBUG
Setzen Sie diesen Wert auf 1, um zu verhindern, dass der Serializer die temporären Dateien entfernt
die für eine schnelle Serialisierung erstellt wurden; Dies kann beim Debuggen nützlich sein.

MONO_XSYNC
Dies wird in der System.Windows.Forms-Implementierung verwendet, wenn sie mit X11 ausgeführt wird
Backend. Dies wird zum Debuggen von Problemen in Windows.Forms verwendet, da dadurch alle Probleme erzwungen werden
Befehle werden an den X11-Server gesendet, um synchron ausgeführt zu werden. Der Standardmodus von
Der Vorgang ist asynchron, was es schwierig macht, die Wurzel bestimmter zu isolieren
Probleme.

MONO_GENERIC_SHARING
Diese Umgebungsvariable steuert die Art der verwendeten generischen Freigabe. Diese Variable
wird von internen JIT-Entwicklern verwendet und sollte in der Produktion nicht geändert werden. Nicht
benutze es. Die Variable steuert, welche Klassen über generische Codefreigabe verfügen
ermöglicht. Zulässige Werte sind:

alle Der gesamte generierte Code kann geteilt werden.

Produktauswahl
Der Code wird nur für die Klassen in System.Collections.Generic freigegeben
(Dies ist der Standardwert).

corlib Nur Code in Corlib wird geteilt.

keine Es wird kein generisches Code-Sharing durchgeführt.
Die allgemeine Codefreigabe gilt standardmäßig nur für Sammlungen. Standardmäßig das Mono-JIT
schaltet dies ein.

MONO_XDEBUG
Wenn die Umgebungsvariable MONO_XDEBUG festgelegt ist, werden Debugging-Informationen für JITted-Code ausgegeben
in eine gemeinsam genutzte Bibliothek, ladbar in gdb. Dadurch ist es beispielsweise möglich, verwaltet anzuzeigen
Frame-Namen auf GDB-Backtraces.

MONO_VERBOSE_METHOD
Aktiviert die maximale JIT-Ausführlichkeit für die angegebene Methode. Das ist sehr hilfreich
um Fehlkompilierungsprobleme einer bestimmten Methode zu diagnostizieren.

MONO_VERBOSE_HWCAP
Wenn festgelegt, gibt JIT Informationen über erkannte CPU-Funktionen aus (z. B. SSE,
CMOV, FCMOV usw.) auf stdout.

MONO_CONSERVATIVE_HWCAP
Wenn diese Einstellung festgelegt ist, führt das JIT keine Hardwarefähigkeitserkennung durch. Das mag sein
nützlich, um die Ursache von JIT-Problemen zu ermitteln. Dies ist die Standardeinstellung, wenn Mono erstellt wird
als AOT-Cross-Compiler, sodass der generierte Code auf der meisten Hardware läuft.

VALGRIND


Wenn Sie Valgrind verwenden möchten, ist die Datei „mono.supp“ nützlich, sie enthält die
Unterdrückungen für den GC, die falsche Warnungen auslösen. Benutze es so:
valgrind --suppressions=mono.supp mono ...

DTRACE


Auf einigen Plattformen kann Mono eine Reihe von DTrace-Probes (auch als User-Land bekannt) verfügbar machen
statisch definiert, USDT-Probes).

Sie sind in der Datei „mono.d“ definiert.

ves-init-begin, ves-init-end
Beginn und Ende der Laufzeitinitialisierung.

method-compile-begin, method-compile-end
Beginn und Ende der Methodenkompilierung. Die Prüfargumente sind Klassenname und Methode
Name und Signatur, und im Falle von method-compile-end Erfolg oder Misserfolg von
Zusammenstellung.

gc-begin, gc-Ende
Beginn und Ende der Garbage Collection.

Um die Verfügbarkeit der Probes zu überprüfen, führen Sie Folgendes aus:
dtrace -P mono'$target' -l -c mono

Zulassungen


Die Ping-Implementierung von Mono zur Erkennung der Netzwerkerreichbarkeit kann die ICMP-Pakete erstellen
selbst, ohne dass der System-Ping-Befehl erforderlich ist, um die Arbeit zu erledigen. Wenn Sie aktivieren möchten
Um dies unter Linux für Nicht-Root-Benutzer zu tun, müssen Sie der Mono-Binärdatei spezielle Berechtigungen erteilen.

Führen Sie als Root diesen Befehl aus:
# setcap cap_net_raw=+ep /usr/bin/mono

Nutzen Sie Mono online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

  • 1
    4g8
    4g8
    4g8 - Paketerfassung und -abfangen
    für Switched Networks ...
    Führen Sie 4g8 aus
  • 2
    4s-adminJ
    4s-adminJ
    4s-admin – 4store-Clusterverwaltung
    Werkzeug ...
    Führen Sie 4s-adminJ aus
  • 3
    creduce
    creduce
    creduce – C- und C++-Programmreduzierer
    BESCHREIBUNG: creduce 2.5.0 (unbekannt) --
    ein C- und C++-Programmreduzierer C-Reduce
    erfordert einen „Interessanztest“ und
    eins oder...
    Führen Sie Creduce aus
  • 4
    gruselig
    gruselig
    CREEPY - Eine Geolokalisierungsinformation
    Aggregator BESCHREIBUNG: gruselig ist ein
    Anwendung, mit der Sie sammeln können
    Geolokalisierungsbezogene Informationen über
    Benutzer aus ...
    Gruselig laufen
  • 5
    g.gisenvgrass
    g.gisenvgrass
    g.gisenv - Gibt aus und modifiziert die
    aktuelle GRASS-Variableneinstellungen des Benutzers.
    Druckt alle definierten GRASS Variablen falls nein
    Möglichkeit gegeben ist. SCHLÜSSELWÖRTER: allgemein,
    einstellen...
    Führen Sie g.gisenvgrass aus
  • 6
    g. guigrass
    g. guigrass
    g.gui - Startet einen grafischen Benutzer von GRASS
    Interface (GUI) Sitzung. Optional
    aktualisiert die Standardeinstellungen der Benutzeroberfläche.
    SCHLÜSSELWÖRTER: Allgemein, GUI, Benutzeroberfläche ...
    Führen Sie g.guigrass aus
  • Mehr »

Ad