X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=man%2Fmono.1;h=b4663b40458524c166601dd09dc38e744e35b9a0;hb=7a5658f3887c6909e4e12b67f892713078b1ccf9;hp=7bd449dd4559c7c9d8e1ca61432ef8a5b0340577;hpb=80d015b2df275ad48fa77c02224f6ebc7e08bbd4;p=mono.git diff --git a/man/mono.1 b/man/mono.1 index 7bd449dd455..b4663b40458 100644 --- a/man/mono.1 +++ b/man/mono.1 @@ -7,7 +7,7 @@ .\" Author: .\" Miguel de Icaza (miguel@gnu.org) .\" -.TH Mono "Mono 4.5.2" +.TH Mono "mono" .SH NAME mono \- Mono's ECMA-CLI native code generator (Just-in-Time and Ahead-of-Time) .SH SYNOPSIS @@ -19,14 +19,6 @@ mono \- Mono's ECMA-CLI native code generator (Just-in-Time and Ahead-of-Time) \fImono\fP is a runtime implementation of the ECMA Common Language Infrastructure. This can be used to run ECMA and .NET applications. .PP -The runtime contains a native code generator that transforms the -Common Intermediate Language into native code. -.PP -The code generator can operate in two modes: just in time compilation -(JIT) or ahead of time compilation (AOT). Since code can be -dynamically loaded, the runtime environment and the JIT are always -present, even if code is compiled ahead of time. -.PP The runtime loads the specified .I file and optionally passes @@ -36,12 +28,26 @@ to it. The .I file is an ECMA assembly. They typically have a .exe or .dll extension. .PP +These executables can reference additionaly functionality in the form +of assembly references. By default those assembly references are +resolved as follows: the \fBmscorlib.dll\fR is resolved from the +system profile that is configured by Mono, and other assemblies are +loaded from the Global Assembly Cache (GAC). +.PP +The runtime contains a native code generator that transforms the +Common Intermediate Language into native code. +.PP +The code generator can operate in two modes: just in time compilation +(JIT) or ahead of time compilation (AOT). Since code can be +dynamically loaded, the runtime environment and the JIT are always +present, even if code is compiled ahead of time. +.PP The runtime provides a number of configuration options for running applications, for developing and debugging, and for testing and debugging the runtime itself. .PP -The \fImono\fP command uses the Boehm conservative garbage collector -while the \fImono-sgen\fP command uses a moving and generational +The \fImono\fP command uses the moving and generational SGen garbage collector +while the \fImono-boehm\fP command uses the conservative Boehm garbage collector. .SH PORTABILITY On Unix-based systems, Mono provides a mechanism to emulate the @@ -87,7 +93,7 @@ information which is not available on the generated file. When precompiling code, you might want to compile with all optimizations (-O=all). Pre-compiled code is position independent code. .Sp -Pre compilation is just a mechanism to reduce startup time, increase +Precompilation is just a mechanism to reduce startup time, increase code sharing across multiple mono processes and avoid just-in-time compilation program startup costs. The original assembly must still be present, as the metadata is contained there. @@ -142,10 +148,10 @@ instead of going through the operating system symbol lookup operation. .I llvm-path= Same for the llvm tools 'opt' and 'llc'. .TP -.I gen-seq-points-file=FILE.msym +.I msym-dir= Instructs the AOT compiler to generate offline sequence points .msym files. -The path is optional, if none is passed then a .msym file will be generated -next to the input assembly. +The generated .msym files will be stored into a subfolder of named as the +compilation AOTID. .TP .I mtriple= Use the GNU style target triple to determine some code generation options, i.e. @@ -257,12 +263,15 @@ The default files are /etc/mono/config and ~/.mono/config or the file specified in the MONO_CONFIG environment variable, if set. See the mono-config(5) man page for details on the format of this file. .TP +\fB--aot-path=PATH\fR +List of additional directories to search for AOT images. +.TP \fB--debugger-agent=[options]\fR This instructs the Mono runtime to start a debugging agent inside the Mono runtime and connect it to a client user interface will control the Mono process. -This option is typically used by IDEs, like the MonoDevelop IDE. -.PP +This option is typically used by IDEs, like the MonoDevelop or Visual Studio IDEs. +.RS The configuration is specified using one of more of the following options: .RS .ne 8 @@ -289,10 +298,10 @@ actively waits for the debugger front end to connect to the Mono process. Mono will print out to stdout the IP address and port where it is listening. .TP .I setpgid=[y/n] -If set to yes, Mono will call \fBsetpgid(0, 0)\fB on startup, if that function +If set to yes, Mono will call \fBsetpgid(0, 0)\fR on startup, if that function is available on the system. This is useful for ensuring that signals delivered to a process that is executing the debuggee are not propagated to the debuggee, -e.g. when Ctrl-C sends \fBSIGINT\fB to the \fBsdb\fB tool. +e.g. when Ctrl-C sends \fBSIGINT\fR to the \fBsdb\fR tool. .TP .I suspend=[y/n] Defaults to yes, with the default option Mono will suspend the vm on startup @@ -332,6 +341,12 @@ Currently this merely ensures that you are running either the \fBMONO_ENV_OPTIONS\fR environment variable to force all of your child processes to use one particular kind of GC with the Mono runtime. .TP +\fB--gc-debug=[options]\fR +Command line equivalent of the \fBMONO_GC_DEBUG\fR environment variable. +.TP +\fB--gc-params=[options]\fR +Command line equivalent of the \fBMONO_GC_PARAMS\fR environment variable. +.TP \fB--arch=32\fR, \fB--arch=64\fR (Mac OS X only): Selects the bitness of the Mono binary used, if available. If the binary used is already for the selected bitness, nothing @@ -519,7 +534,7 @@ platforms, and only when using gdb 7.0 or later. Turns on profiling. For more information about profiling applications and code coverage see the sections "PROFILING" and "CODE COVERAGE" below. -.TP +.Sp This option can be used multiple times, each time will load an additional profiler. This allows developers to use modules that extend the JIT through the Mono profiling interface. @@ -600,7 +615,7 @@ Finally, namespaces can be specified using the N: prefix: Don't align stack frames on the x86 architecture. By default, Mono aligns stack frames to 16 bytes on x86, so that local floating point and SIMD variables can be properly aligned. This option turns off the -alignment, which usually saves one intruction per call, but might +alignment, which usually saves one instruction per call, but might result in significantly lower floating point and SIMD performance. .TP \fB--jitmap\fR @@ -844,6 +859,26 @@ The offsets displayed are IL offsets. .PP A more powerful coverage tool is available in the module `monocov'. See the monocov(1) man page for details. +.SH AOT PROFILING +You can improve startup performance by using the AOT profiler. +.PP +Typically the AOT compiler (\fBmono --aot\fR) will not generate code +for generic instantiations. To solve this, you can run Mono with the +AOT profiler to find out all the generic instantiations that are used, +and then instructing the AOT compiler to produce code for these. +.PP +This command will run the specified app.exe and produce the +\fBout.aotprof\fR file with the data describing the generic +instantiations that are needed: +.nf + $ mono --profile=aot:output=out.aotprof app.exe +.fi +.PP +Once you have this data, you can pass this to Mono's AOT compiler to +instruct it to generate code for it: +.nf + $ mono --aot=profile=out.aotprof +.fi .SH DEBUGGING AIDS To debug managed applications, you can use the .B mdb @@ -1100,7 +1135,7 @@ a Mono process through the environment. This is useful for example to force all of your Mono processes to use LLVM or SGEN without having to modify any launch scripts. .TP -\fBMONO_ENV_OPTIONS\fR +\fBMONO_SDB_ENV_OPTIONS\fR Used to pass extra options to the debugger agent in the runtime, as they were passed using --debugger-agent=. .TP @@ -1302,12 +1337,12 @@ statistics when shutting down. .TP \fBcollect-before-allocs\fR .TP -\fBcheck-at-minor-collections\fR -This performs a consistency check on minor collections and also clears -the nursery at collection time, instead of the default, when buffers -are allocated (clear-at-gc). The consistency check ensures that -there are no major to minor references that are not on the remembered -sets. +\fBcheck-remset-consistency\fR +This performs a remset consistency check at various opportunities, and +also clears the nursery at collection time, instead of the default, +when buffers are allocated (clear-at-gc). The consistency check +ensures that there are no major to minor references that are not on +the remembered sets. .TP \fBmod-union-consistency-check\fR Checks that the mod-union cardtable is consistent before each @@ -1652,18 +1687,18 @@ Automatically generates sequence points where the IL stack is empty. These are places where the debugger can set a breakpoint. .TP -\fBgen-compact-seq-points\fR -This option generates sequence points data that maps native offsets to -IL offsets. Sequence point data is used to display IL offset in -stacktraces. Stacktraces with IL offsets can be symbolicated using -mono-symbolicate tool. +\fBno-compact-seq-points\fR +Unless the option is used, the runtime generates sequence points data that +maps native offsets to IL offsets. Sequence point data is used to +display IL offset in stacktraces. Stacktraces with IL offsets can be +symbolicated using mono-symbolicate tool. .TP \fBhandle-sigint\fR Captures the interrupt signal (Control-C) and displays a stack trace when pressed. Useful to find out where the program is executing at a given point. This only displays the stack trace of a single thread. .TP -\fBinit-stacks\FR +\fBinit-stacks\fR Instructs the runtime to initialize the stack with some known values (0x2a on x86-64) at the start of a method to assist in debuggin the JIT engine. @@ -1703,11 +1738,14 @@ values. This option allows using single-steps and breakpoints in hardware where we cannot do it with signals. .TP -\fBsuspend-on-sigsegv\fR -This option will suspend the program when a native SIGSEGV is received. +\fBsuspend-on-native-crash\fR +This option will suspend the program when a native crash occurs (SIGSEGV, SIGILL, ...). This is useful for debugging crashes which do not happen under gdb, since a live process contains more information than a core file. .TP +\fBsuspend-on-sigsegv\fR +Same as \fBsuspend-on-native-crash\fR. +.TP \fBsuspend-on-exception\fR This option will suspend the program when an exception occurs. .TP @@ -1910,8 +1948,8 @@ http://www.mono-project.com/community/help/mailing-lists/ http://www.mono-project.com .SH SEE ALSO .PP -certmgr(1), csharp(1), mcs(1), mdb(1), monocov(1), monodis(1), -mono-config(5), mozroots(1), mprof-report(1), pdb2mdb(1), xsp(1), mod_mono(8). +certmgr(1), cert-sync(1), csharp(1), gacutil(1), mcs(1), mdb(1), monocov(1), monodis(1), +mono-config(5), mprof-report(1), pdb2mdb(1), xsp(1), mod_mono(8). .PP For more information on AOT: http://www.mono-project.com/docs/advanced/aot/