2007-01-03 Sebastien Pouliot <sebastien@ximian.com>
[mono.git] / man / mono.1
index 12e5a042ea183f48c947ac51c802a24b0c770b9b..89a8c53fc732c3e4c1055b2c16276c2d825a0f71 100644 (file)
@@ -83,9 +83,12 @@ information which is not availble 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, and avoid
-just-in-time compilation costs.  The original assembly must still be
-present, as the metadata is contained there.
+Pre compilation 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.
+.Sp
+For more information about AOT, see: http://www.mono-project.com/AOT
 .TP
 .I "--config filename"
 Load the specified configuration file instead of the default one(s).
@@ -102,7 +105,7 @@ collection a bit.
 .I "--help", "-h"
 Displays usage instructions.
 .TP
-.I "--optimize=MODE", "-O=mode"
+.I "--optimize=MODE", "-O=MODE"
 MODE is a comma separated list of optimizations.  They also allow
 optimizations to be turned off by prefixing the optimization name with
 a minus sign.
@@ -138,6 +141,17 @@ elimination and inlining, you can use:
        -O=all,-deadce,-inline
 .fi
 .TP
+.I "--runtime=VERSION"
+Mono supports different runtime versions. The version used depends on the program
+that is being run or on its configuration file (named program.exe.config). This option
+can be used to override such autodetection, by forcing a different runtime version
+to be used. Note that this should only be used to select a later compatible runtime
+version than the one the program was compiled against. A typical usage is for
+running a 1.1 program on a 2.0 version:
+.nf
+         mono --runtime=v2.0.50727 program.exe
+.fi
+.TP
 .I "--security"
 Activate the security manager (experimental feature in 1.1). This allows 
 mono to support declarative security attributes (e.g. execution of, CAS 
@@ -172,9 +186,13 @@ traced.
 The trace can be customized to include or exclude methods, classes or
 assemblies.  A trace expression is a comma separated list of targets,
 each target can be prefixed with a minus sign to turn off a particular
-target.  The words `program' and `all' have special meaning.
-`program' refers to the main program being executed, and `all' means
-all the method calls. 
+target.  The words `program', `all' and `disabled' have special
+meaning.  `program' refers to the main program being executed, and
+`all' means all the method calls.
+.Sp
+The `disabled' option is used to start up with tracing disabled.  It
+can be enabled at a later point in time in the program by sending the
+SIGUSR2 signal to the runtime.
 .Sp
 Assemblies are specified by their name, for example, to trace all
 calls in the System assembly, use:
@@ -334,6 +352,21 @@ addr2line utility that comes from the binutils package).
 There are a number of external profilers that have been developed for
 Mono, we will update this section to contain the profilers.
 .PP
+The heap Shot profiler can track all live objects, and references to
+these objects, and includes a GUI tool, this is our recommended
+profiler.
+To install you must download the profiler
+from Mono's SVN:
+.nf
+       svn co svn://svn.myrealbox.com/source/trunk/heap-shot
+       cd heap-shot
+       ./autogen
+       make
+       make install
+.fi
+.PP
+See the included documentation for details on using it.
+.PP
 The Live Type profiler shows at every GC iteration all of the live
 objects of a given type.   To install you must download the profiler
 from Mono's SVN:
@@ -371,11 +404,21 @@ checkpoint 102.
 .PP
 Then on each line the type is displayed as well as the number of bytes
 that are being consumed by live instances of this object.
+.PP 
+The AOT profiler is used to feed back information to the AOT compiler
+about how to order code based on the access patterns for pages.  To
+use it, use:
+.nf
+       mono --profile=aot program.exe
+.fi
+The output of this profile can be fed back into Mono's AOT compiler to
+order the functions on the disk to produce precompiled images that
+have methods in sequential pages.
 .SH CUSTOM PROFILERS
 Mono provides a mechanism for loading other profiling modules which in
 the form of shared libraries.  These profiling modules can hook up to
 various parts of the Mono runtime to gather information about the code
-being executed.  
+being executed.
 .PP
 To use a third party profiler you must pass the name of the profiler
 to Mono, like this:
@@ -442,15 +485,28 @@ Typical output looks like this:
 .fi
 .PP
 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 DEBUGGING
 It is possible to obtain a stack trace of all the active threads in
 Mono by sending the QUIT signal to Mono, you can do this from the
 command line, like this:
 .nf
+
        kill -QUIT pid
+
 .fi
 Where pid is the Process ID of the Mono process you want to examine.
-The process will continue running afterwards.
+The process will continue running afterwards, but its state is not
+guaranteed.
+.PP
+.B Important:
+this is a last-resort mechanism for debugging applications and should
+not be used to monitor or probe a production application.  The
+integrity of the runtime after sending this signal is not guaranteed
+and the application might crash or terminate at any given point
+afterwards.   
 .PP
 You can use the MONO_LOG_LEVEL and MONO_LOG_MASK environment variables
 to get verbose debugging output about the execution of your
@@ -679,6 +735,14 @@ loader in subtle ways.
 .Sp
 Directories are separated by the platform path separator (colons on unix). Example:
 .B /home/username/lib:/usr/local/mono/lib
+.Sp
+Alternative solutions to MONO_PATH include: installing libraries into
+the Global Assembly Cache (see gacutil(1)) or having the dependent
+libraries side-by-side with the main executable.
+.Sp
+For a complete description of recommended practices for application
+deployment, see the
+http://www.mono-project.com/Guidelines:Application_Deployment page. 
 .TP
 .I "MONO_RTC"
 Experimental RTC support in the statistical profiler: if the user has
@@ -728,6 +792,14 @@ include "clearlooks", "nice" and "win32".
 .Sp
 The default is "win32".  
 .TP
+.I "MONO_TLS_SESSION_CACHE_TIMEOUT"
+The time, in seconds, that the SSL/TLS session cache will keep it's entry to
+avoid a new negotiation between the client and a server. Negotiation are very
+CPU intensive so an application-specific custom value may prove useful for 
+small embedded systems.
+.Sp
+The default is 180 seconds.
+.TP
 .I "MONO_THREADS_PER_CPU"
 The maximum number of threads in the general threadpool will be
 20 + (MONO_THREADS_PER_CPU * number of CPUs). The default value for this
@@ -868,6 +940,10 @@ http://www.mono-project.com/Mailing_Lists
 .SH WEB SITE
 http://www.mono-project.com
 .SH SEE ALSO
-.BR certmgr(1), mcs(1), mint(1), monodis(1), mono-config(5), mozroots(1), xsp(1).
+.PP
+certmgr(1), mcs(1), monocov(1), monodis(1), mono-config(5), mozroots(1), xsp(1).
+.PP
+For more information on AOT:
+http://www.mono-project.com/AOT
 .PP
 For ASP.NET-related documentation, see the xsp(1) manual page