英语法语西班牙文

OnWorks 网站图标

单声道 - 在云中在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行单声道

这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 mono,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


mono - Mono 的 ECMA-CLI 本机代码生成器(即时和提前)

概要


[选项] 文件 [争论...]

单基因 [选项] 文件 [争论...]

商品描述


是 ECMA 公共语言基础结构的运行时实现。 这可以
用于运行 ECMA 和 .NET 应用程序。

运行时包含一个本机代码生成器,用于转换公共中间体
语言转换为本机代码。

代码生成器可以在两种模式下运行:即时编译 (JIT) 或提前编译
时间编译(AOT)。 由于代码可以动态加载,运行时环境和
JIT 始终存在,即使代码是提前编译的。

运行时加载指定的 文件 并可选择通过 参数 到它。 这 文件
是一个 ECMA 程序集。 它们通常具有 .exe 或 .dll 扩展名。

运行时为运行应用程序提供了许多配置选项,例如
开发和调试,以及测试和调试运行时本身。

这款 命令使用 Boehm 保守垃圾收集器,而 单基因 命令
使用移动和分代垃圾收集器。

可移植性


在基于 Unix 的系统上,Mono 提供了一种机制来模拟 Windows 风格的文件访问,
这包括提供不区分大小写的文件系统视图、目录分隔符
映射(从 \ 到 /)并剥离驱动器号。

此功能是通过设置 单声道IOMAP 环境变量之一
全部, 驾驶情况。

见说明 单声道IOMAP 在环境变量部分了解更多详细信息。

运行 配置


可以使用以下选项:

--aot, --aot[=选项]
该选项用于将指定程序集中的CIL代码预编译为native
代码。 生成的代码存储在扩展名为 .so 的文件中。 这个文件
执行程序集时,运行时将自动选取。
如果将 Ahead-of-Time 编译与
-O=all,-shared 标志使代码生成器中的所有优化能够
被执行。 其中一些优化对于 Just-in-Time 来说并不实用
编译,因为它们可能非常耗时。 与 .NET 框架不同,
Ahead-of-Time 编译不会生成域独立代码:它会生成
与 Just-in-Time 编译器生成的代码相同。 由于大多数
应用程序使用单个域,这很好。 如果你想优化
生成用于多域应用程序的代码,请考虑使用 -O=shared
旗帜。 这会预编译方法,但仍需要原始程序集
执行,因为这个包含元数据和异常信息,这不是
在生成的文件中可用。 预编译代码时,您可能希望编译
带有所有优化(-O=all)。 预编译代码是位置无关代码。
预编译只是一种减少启动时间、增加代码共享的机制
跨多个单进程并避免即时编译程序启动
成本。 原始程序集必须仍然存在,因为包含元数据
那里。 AOT 代码通常不能从一台计算机移动到另一台计算机(CPU-
在运行时检测到的特定优化)所以你不应该试图移动
预生成的程序集或打包预生成的程序集用于
部署。 有几个选项可用作参数 --aot 命令行
选项。 选项以逗号分隔,可以指定多个:

自动注册
AOT 编译器将发出一个(仅限 ELF)库初始化程序以自动
向运行时注册 aot 编译模块。 这仅在
静态模式

阿斯蒙
指示 AOT 编译器输出汇编代码而不是对象
文件中。

绑定到运行时版本
如果指定,则强制生成的 AOT 文件绑定到运行时
编译 Mono 的版本。 这将防止 AOT 文件被
由不同的 Mono 运行时使用。 这是目前一个
实验功能,因为它不完整。 这指示 Mono
历史上未使用 AOT 预编译的预编译代码。

直接调用
指定此选项时,将直接调用 P/Invoke 方法
通过操作系统符号查找操作。

llvm-路径=
llvm 工具“opt”和“llc”也是如此。

三元=
使用 GNU 风格的目标三元组确定一些代码生成
选项,即 --mtriple=armv7-linux-gnueabi 将生成目标代码
ARMv7。 这目前仅由 ARM 后端支持。 在 LLVM 模式下,
这个三元组被传递给 LLVM llc 编译器。

nimt-蹦床=[数字]
在全 aot 模式下编译时,IMT 蹦床必须在
AOT 图像。 您可以使用此添加其他方法蹦床
争论。 默认为 128。

节点错误
指示 AOT 编译器不输出任何调试信息。

无直接呼叫
这可以防止 AOT 编译器生成对方法的直接调用。
AOT 编译器通常会生成对某些方法的直接调用
不需要通过 PLT(例如,已知的方法
不需要像静态构造函数这样的钩子)或调用简单的内部
调用。

矮人调试
指示 AOT 编译器发出 DWARF 调试信息。 使用时
与 nodebug 选项一起,只有 DWARF 调试信息是
发出,但不是可以在运行时使用的信息。

nrgctx-蹦床=[数量]
在全 aot 模式下编译时,通用共享蹦床必须是
在 AOT 图像中预先创建。 您可以添加其他方法蹦床
这个论点。 默认为 1024。

蹦床=[数量]
以full aot模式编译时,必须预先创建trampolines方法
在 AOT 图像中。 您可以使用此添加其他方法蹦床
争论。 默认为 1024。

输出文件=[文件名]
指示 AOT 编译器将输出保存到指定的文件。

打印跳过方法
如果 AOT 编译器因任何原因无法编译方法,则启用此
flag 会将跳过的方法输出到控制台。

只读值=命名空间.typename.fieldname=类型/值
覆盖静态只读字段的值。 通常,在 JIT 期间
编译时,静态构造函数急切地运行,因此静态的值
readonly 字段在编译时是已知的,编译器可以做一个数字
基于它的优化。 相反,在 AOT 期间,静态构造函数
不能运行,所以这个选项可以用来设置这样一个字段的值
并启用相同的优化集。 类型可以是 i1、i2、i4 中的任何一个,用于
各自大小的整数(以字节为单位)。 请注意,签名/未签名
数字在这里无关紧要,只是存储大小。 这个选项可以
多次指定,它不会阻止静态构造函数
定义在运行时使用通常规则执行的字段的类型
(因此可能为该字段计算不同的值)。

保存温度,保持温度
指示 AOT 编译器保留临时文件。

软调试
这指示编译器生成序列点检查,允许
Mono 的软调试器可以调试应用程序,即使是在它不存在的系统上
可以设置断点或单步执行(某些硬件
配置,如手机和视频游戏机)。

静止 创建可以静态链接的 ELF 对象文件 (.o) 或 .s 文件
嵌入单声道运行时时进入可执行文件。 当这个选项是
使用,目标文件需要使用嵌入式运行时注册
mono_aot_register_module 函数将
mono_aot_module_ 来自目标文件的 _info 全局符号:

外部无效*mono_aot_module_hello_info;

mono_aot_register_module (mono_aot_module_hello_info);

统计 打印 AOT 编译期间收集的各种统计信息。

线程=[数量]
这是 AOT 编译器使用多线程的实验性选项
编译方法时。

工具前缀=
前置到 AOT 编译器运行的工具的名称,即
“作为”/“ld”。 例如,--tool=prefix=arm-linux-gnueabi- 将使 AOT
编译器运行

写符号
指示 AOT 编译器发出调试符号信息。

有关 AOT 的更多信息,请参阅: http://www.mono-project.com/docs/advanced/aot/

--attach=[选项]
目前此命令行参数支持的唯一选项是 关闭
禁用附加功能。

--配置 文件名
加载指定的配置文件而不是默认的配置文件。 默认的
文件是 /etc/mono/config 和 ~/.mono/配置 或指定的文件
MONO_CONFIG 环境变量(如果已设置)。 见 单配置(5) 手册页
有关此文件格式的详细信息。

--debugger-agent=[选项]
这指示 Mono 运行时在 Mono 运行时内启动调试代理
并将其连接到客户端用户界面将控制 Mono 进程。 这个
选项通常由 IDE 使用,例如 MonoDevelop IDE。

使用以下选项之一指定配置:

地址=主机:端口
使用此选项指定调试器客户端所在的 IP 地址
听。

日志级别=级别
指定诊断日志级别

日志文件=文件名
用于指定存储日志的文件,默认为
标准输出。

服务器=[y/n]
默认为 no,默认选项 Mono 将主动连接到
主机/端口配置了 地址 选项。 如果你把它设置为“y”,它
指示 Mono 运行时在服务器模式下开始调试,其中 Mono
主动等待调试器前端连接到 Mono 进程。
Mono 将输出到标准输出它正在侦听的 IP 地址和端口。

setpgid=[y/n]
如果设置为 yes,Mono 将调用 设置pgid(0, 0) on 启动时, if 功能 is
可使用 on 系统。 本篇 is 有用 保证 信号 提升
a 过程 is 执行 被调试者 旨在 而不去 传播
调试器, 例如 ,尤其是 Ctrl-C 发送 SIGINT SDB 工具。

暂停=[y/n]
默认为 yes,默认选项 Mono 将在启动时挂起虚拟机
直到它成功连接到调试器前端。 如果你把它设置为
'n',与 服务器=y,它指示 Mono 运行时作为
正常,同时缓存元数据以发送到调试器前端
联系..

运输=运输名称
这用于指定调试器将用于的传输
交流。 它必须被指定,目前要求这是
'dt_socket'。

- 桌面
将虚拟机配置为更适合桌面应用程序。
目前这将 GC 系统设置为尽可能避免扩展堆
以稍微减慢垃圾收集速度为代价。

--full-aot
这是一个实验性标志,指示 Mono 运行时不生成任何
运行时的代码,并且完全依赖于使用单声道生成的代码
--aot=full 以前。 这对于不允许动态的平台很有用
代码生成。 请注意,如果出现以下情况,此功能将在运行时中止执行
程序中的代码路径,或 Mono 的类库尝试生成代码
动态。 你应该预先测试你的软件,并确保你没有
使用任何动态功能。

--gc=博姆, --gc=sgen
选择要使用的 Mono、Boehm 或 SGen 的垃圾收集器引擎。 目前
这只是确保您正在运行 or 单基因 命令。
这个标志可以在 MONO_ENV_OPTIONS 环境变量强制所有
您的子进程在 Mono 运行时使用一种特定类型的 GC。

- 帮帮我, -h
显示使用说明。

--llvm 如果 Mono 运行时已使用 LLVM 支持进行编译(并非在所有
配置),Mono 将使用 LLVM 优化和代码生成引擎来
JIT 或 AOT 编译。 如需更多信息,请咨询: http://www.mono-
project.com/docs/advanced/mono-llvm/

--nollvm
当使用支持 LLVM 的 Mono 编译时,它会强制 Mono
回退到它的 JIT 引擎,而不是使用 LLVM 后端。

--优化=模式, -O=模式
MODE 是逗号分隔的优化列表。 它们还允许优化
通过在优化名称前加上减号来关闭。 一般来说,
在将这些标志用于
部署设置,您可能想要实际衡量使用它们的好处。
核心引擎中实现了以下优化标志:
abcrem 数组边界检查删除
all 开启所有优化
aot 使用 Ahead Of Time 编译代码
分支分支优化
cfold 恒定折叠
cmov 条件移动 [arch-dependency]
deadce 死代码消除
consprop 常量传播
copyprop 复制传播
fcmov Fast x86 FP 比较 [arch-dependency]
float32 使用 32 位运算执行 32 位浮点运算
gshared 启用通用代码共享。
内联方法调用
内在方法实现
linears 线性扫描全局 reg 分配
叶 叶程序优化
loop 循环相关的优化
窥孔 窥孔 postpass
precomp 在执行 Main 之前预编译所有方法
sched 指令调度
共享 发出每个域的代码
x2 上的 sse2 SSE86 指令 [arch-dependency]
tailc 尾递归和尾调用
例如,要启用除死代码消除和内联之外的所有优化,
您可以使用:
-O=全部、-deadce、-inline
用 [arch-dependency] 标记的标志表明给定的选项如果
与 Ahead of Time 编译(--aot 标志)结合使用将产生预
编译后的代码将取决于当前的 CPU 并且可能无法安全地移动到
另一台电脑。

支持以下优化

浮动32
请求运行时执行 32 位浮点运算,使用
只有 32 位。 默认情况下,Mono 运行时会尝试使用最高的
精度可用于浮点运算,但虽然这可能
呈现更好的结果,代码可能运行得更慢。 这个选项也
影响 LLVM 后端生成的代码。

一致 控制运行时是否应该尝试内联(默认)
内联方法调用

--运行时=版本
Mono 支持不同的运行时版本。 使用的版本取决于程序
正在运行或其配置文件(名为 program.exe.config)。 这个
选项可用于通过强制不同的运行时来覆盖此类自动检测
要使用的版本。 请注意,这应该仅用于选择以后兼容的
运行时版本比编译程序的版本高。 一个典型的用法是
在 1.1 版本上运行 2.0 程序:
单声道 --runtime=v2.0.50727 程序.exe

- 安全, --安全=模式
激活安全管理器,这是 Mono 中当前的一个实验性功能,它是
默认关闭。 也可以使用此选项启用新的代码验证器。

使用不带参数的 security 等同于使用“cas”调用它
参数。

支持以下模式:

核心-clr
启用 core-clr 安全系统,通常用于
月光/银光应用。 它提供了更简单的安全性
系统比CAS,见 http://www.mono-project.com/docs/web/moonlight/
有关此新系统描述的更多详细信息和链接。

有效
启用新验证器并执行代码有效性的基本验证。
在这种模式下,不安全代码和 P/Invoke 是允许的。 这种模式提供了一个
更好的安全保证,但托管代码仍有可能崩溃
单声道。

可验证
启用新的验证器并执行完整的代码验证
执行。 它只允许执行可验证的代码。 不安全代码是
不允许,但 P/Invoke 是。 此模式不应允许托管代码
崩溃单声道。 验证没有ECMA 335标准那么严格
保持与 MS 运行时兼容。

安全系统作用于用户代码:包含在 mscorlib 或全局变量中的代码
程序集缓存始终受信任。

- 服务器
配置虚拟机以更适合服务器操作
(目前,允许更重的线程池初始化)。

--验证所有
验证全局程序集缓存中的 mscorlib 和程序集的有效 IL,以及所有
IL 可验证性的用户代码。

这不同于 - 安全的可验证或有效,因为这些选项
只检查用户代码并跳过位于全局的 mscorlib 和程序集
程序集缓存。

-V, - 版
打印 JIT 版本信息(系统配置、版本号和分支
名称(如果可用)。

发展 配置


以下选项用于在开发 JIT 应用程序时提供帮助。

-调试, --debug=选项
在运行时打开调试模式。 如果程序集是用编译的
调试信息,它将为堆栈跟踪生成行号信息。

可选的 OPTIONS 参数是一个逗号分隔的调试选项列表。
这些选项在默认情况下是关闭的,因为它们会生成更大更慢的
运行时的代码。

支持以下选项:

施放 抛出 InvalidCastException 时产生详细错误。 这个
需要启用选项,因为这会在执行时生成更详细的代码
时间。

mdb-优化
禁用一些通常只在运行时禁用的 JIT 优化
在调试器里面。 如果您想附加到
使用 mdb 运行进程。

GDB 使用 gdb 生成和注册调试信息。 只支持这个
在某些平台上,并且仅在使用 gdb 7.0 或更高版本时。

--profile[=分析器[:profiler_args]]
打开分析。 有关分析应用程序和代码的更多信息
覆盖范围请参见下面的“分析”和“代码覆盖范围”部分。

这个选项可以多次使用,每次都会加载一个
额外的分析器。 这允许开发人员使用扩展 JIT 的模块
通过 Mono 分析界面。

--trace[=表达式]
在调用时显示方法名称。 默认情况下,所有方法都会被跟踪。 这
可以自定义跟踪以包含或排除方法、类或程序集。 一种
跟踪表达式是一个逗号分隔的目标列表,每个目标都可以加前缀
用减号关闭特定目标。 “程序”、“所有”和
“禁用”具有特殊含义。 “程序”指的是主程序
执行,“all”表示所有的方法调用。 “禁用”选项用于
在禁用跟踪的情况下启动。 它可以在稍后的时间点启用
通过向运行时发送 SIGUSR2 信号来运行程序。 组件由
例如,要跟踪系统程序集中的所有调用,请使用它们的名称:

mono --trace=系统应用程序.exe

类用 T: 前缀指定。 例如,要跟踪对
System.String 类,使用:

单声道--trace=T:System.String app.exe

个别方法用 M: 前缀引用,标准方法
符号:

单声道--trace=M:System.Console:WriteLine app.exe

异常也可以被追踪,它会导致每次打印堆栈追踪
抛出指定类型的异常。 可以指定异常类型
带或不带命名空间,并跟踪所有异常,指定 'all' 作为
类型名称。

单声道--trace=E:System.Exception app.exe

如前所述,可以一次指定各种规则:

单声道--trace=T:System.String,T:System.Random app.exe

您可以排除部分,下一个示例跟踪对 System.String 的调用,除了
System.String:Concat 方法。

单声道--trace=T:System.String,-M:System.String:Concat

您可以使用包装器限定符跟踪托管到非托管的转换:

单声道--trace=wrapper app.exe

最后,可以使用 N: 前缀指定命名空间:

单 --trace=N:System.Xml

--no-x86-堆栈对齐
不要在 x86 架构上对齐堆栈帧。 默认情况下,Mono 对齐堆栈
在 x16 上将帧转换为 86 字节,以便本地浮点和 SIMD 变量可以
正确对齐。 此选项关闭对齐,这通常会保存一个
每次调用的指令,但可能会导致显着降低浮点数和
SIMD 性能。

--jitmap
在 /tmp/perf-PID.map 文件中生成 JIT 方法映射。 然后使用此文件,用于
例如,最近的 Linux 内核中包含的 perf 工具。 文件中的每一行
具有:

HEXADDR HEXSIZE 方法名

目前此选项仅在 Linux 上受支持。

JIT 维护者 配置


维护者选项仅由开发运行时本身的人使用,而不是
通常对运行时用户或开发人员感兴趣。

- 休息 方法
在名为“method”的方法前插入断点
(命名空间。类:方法名)。 使用“Main”作为方法名来插入断点
应用程序的主要方法。 例如,您也可以将它与泛型一起使用
"System.Collections.Generic.Queue`1:Peek"

--breakonex
在异常上插入断点。 这允许您调试您的应用程序
引发异常时的本机调试器。

--编译 姓名
这将编译一个方法 (namespace.name:methodname),用于测试
编译器性能或检查代码生成器的输出。

--编译所有
编译程序集中的所有方法。 这用于测试编译器
性能或检查代码生成器的输出

--graph=类型 方法
这将生成一个带有图表的 postscript 文件,其中包含有关指定的详细信息
方法(命名空间。名称:方法名称)。 这需要 `dot' 和 ghostview
安装(它期望 Ghostview 被称为“gv”)。 以下图表是
可供选择:
cfg 控制流图 (CFG)
dtree 支配树
代码 CFG 显示代码
ssa CFG 显示 SSA 转换后的代码
optcode CFG 显示 IR 优化后的代码
某些图表只有在启用某些优化时才可用。

--n编译
指示运行时使用 --compile 指定的方法的次数
(或所有方法,如果使用 --compileall )要编译。 这用于
测试代码生成器的性能。

--统计
显示有关运行时在执行期间完成的工作的信息
应用程序。

--wapi=hps|semdel
执行进程共享数据的维护。 semdel 将删除全局
信号。 hps 将列出当前使用的句柄。

-v, --详细
增加详细程度,每次列出时,增加详细程度
级别以包含更多信息(例如,包括对
生成的本机代码、代码选择器信息等)。

客户服务


Mono 运行时允许外部进程附加到正在运行的进程并加载
程序集到正在运行的程序中。 为了附加到进程,一个特殊的协议是
在 Mono.Management 程序集中实现。

有了这种支持,就可以加载具有入口点的程序集(它们是
使用 -target:exe 或 -target:winexe 创建)以在 Mono 进程中加载​​和执行。

代码被加载到根域中,并在特殊的运行时开始执行
附加线程。 附加的程序应该创建自己的线程并在之后返回
调用。

这种支持允许例如通过附加 csharp shell 来调试应用程序
到正在运行的进程。

剖析


Mono 运行时包括一个分析器,可用于探索各种性能
您的应用程序中的相关问题。 通过传递 --profile 激活分析器
Mono 运行时的命令行参数,格式为:

--profile[=分析器[:profiler_args]]

Mono 有一个名为“default”的内置分析器(如果没有参数,也是默认值)
指定),但开发人员可以编写自定义分析器,请参阅“自定义分析器”部分
,了解更多详情。

如果一个 探查 未指定,则使用默认分析器。 这 分析器参数 是一个
探查器本身的探查器特定选项字符串。 默认分析器接受
以下选项“alloc”用于分析应用程序的内存消耗; “时间”到
分析在每个例程上花费的时间; 'jit' 收集 JIT 编译方法所花费的时间
和 'stat' 执行样本统计分析。 如果没有提供选项
默认为'alloc,time,jit'。

默认情况下,配置文件数据打印到标准输出:要更改此设置,请使用 'file=filename'
将数据输出到文件名的选项。 例如:

单声道 --profile 程序.exe

这将使用默认分析器运行程序,并进行时间和分配
分析。

单声道--profile=default:stat,alloc,file=prof.out program.exe

将对 program.exe 进行样本统计分析和分配分析。 简介
数据放在 prof.out 中。 请注意,统计分析器的开销非常低,并且
应该是首选的分析器(为了更好的输出,使用单声道的完整路径
运行时二进制文件并确保您已安装来自的 addr2line 实用程序
binutils 包)。

登录 型材


这是最先进的分析器。

单声道 日志 profiler 可用于收集有关程序运行的大量信息
在 Mono 运行时中。 可以使用此数据(在进程运行时和之后)
对程序行为进行分析,确定资源使用情况、性能问题或
甚至寻找特定的执行模式。

这是通过记录 Mono 运行时提供的事件来完成的
分析接口并定期将它们写入一个文件,以便以后检查
mprof-报告(1) 工具。

有关如何使用日志分析器的更多信息,请访问 mprof-报告(1)
页面。

定制 配置文件


Mono 提供了一种以共享的形式加载其他分析模块的机制
图书馆。 这些分析模块可以连接到 Mono 运行时的各个部分以
收集有关正在执行的代码的信息。

要使用第三方分析器,您必须将分析器的名称传递给 Mono,如下所示:

mono --profile=自定义程序.exe

在上面的示例中 Mono 将从共享库中加载用户定义的分析器
`mono-profiler-custom.so'。 此分析器模块必须位于您的动态链接器库中
路径。

Mono 的网站 (www.mono-
project.com/docs/advanced/performance-tips/)

自定义配置文件被编写为共享库。 共享库必须被称为`mono-
profiler-NAME.so' 其中“NAME”是您的分析器的名称。

有关如何编写自己的自定义分析器的示例,请查看 Mono 源代码树中的 in
样品/分析器.c。

守则 覆盖范围


Mono 附带了一个代码覆盖模块。 该模块是通过使用 Mono 激活的
--profile=cov 选项。 格式为: --profile=cov[:程序集名称[/命名空间]] 测试-
suite.exe

默认情况下,代码覆盖率将默认为所有加载的程序集,您可以通过
指定程序集名称,例如在您的例程中执行代码覆盖
程序使用,例如以下命令行将代码覆盖率限制为例程
在“演示”程序集中:

单声道--profile=cov:demo demo.exe

注意, 程序集名称 不包括扩展名。

您可以通过指定命名空间来进一步限制代码覆盖率输出:

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

这只会在给定的程序集和命名空间中执行代码覆盖。

典型的输出如下所示:

未涵盖:Class:.ctor()
不包括:Class:A ()
未涵盖:Driver:.ctor()
未涵盖:驱动程序:方法()
部分覆盖:Driver:Main()
偏移量 0x000a

显示的偏移量是 IL 偏移量。

`monocov' 模块中提供了一个更强大的覆盖工具。 见 单冠状病毒(1)
手册页了解详情。

调试 艾滋病


要调试托管应用程序,您可以使用 MDB command,一个命令行调试器。

可以通过发送 Mono 中所有活动线程的堆栈跟踪
QUIT 信号给 Mono,您可以从命令行执行此操作,如下所示:

杀死-退出 pid

其中 pid 是您要检查的 Mono 进程的进程 ID。 该过程将
之后继续运行,但不保证其状态。

重要提示: 这是调试应用程序的最后手段,不应
用于监视或探测生产应用程序。 运行后的完整性
不保证发送此信号,应用程序可能会崩溃或终止
之后给定的点。

这款 --debug=强制转换 选项可用于获取 Invalid Cast 的更多详细信息
操作,它将提供有关所涉及类型的信息。

您可以使用 MONO_LOG_LEVEL 和 MONO_LOG_MASK 环境变量来获取详细信息
调试有关在 Mono 中执行应用程序的输出。

这款 单声道_日志_级别 环境变量如果设置,日志级别更改为设置
价值。 可能的值为“错误”、“严重”、“警告”、“消息”、“信息”、“调试”。 这
默认值为“错误”。 日志级别大于或等于日志的消息
level 将被打印到 stdout/stderr。

使用“info”来跟踪程序集的动态加载。

使用 MONO_LOG_MASK 环境变量来限制您收到的消息的范围:如果
设置,日志掩码更改为设置值。 可能的值是“asm”(汇编
loader)、“type”、“dll”(本机库加载器)、“gc”(垃圾收集器)、“cfg”(配置
文件加载器)、“aot”(预编译器)、“安全性”(例如 Moonlight CoreCLR 支持)和“全部”。
默认值为“全部”。 更改掩码值允许您仅显示消息
对于某个组件。 您可以使用逗号分隔多个掩码。 例如
要查看配置文件消息和程序集加载器消息,请将掩码设置为“asm,cfg”。

以下是跟踪 P/Invoke 问题的常见用法:

$ MONO_LOG_LEVEL="调试" MONO_LOG_MASK="dll" 单胶.exe

调试 本地数据库


如果您使用的是 LLDB,则可以使用 单声道 打印一些内部数据的脚本
结构与它。 要使用它,请将其添加到您的 $HOME/.lldbinit 文件:
命令脚本导入 $PREFIX/lib/mono/lldb/mono.py

其中 $PREFIX 是您在配置 Mono 时使用的前缀值(通常是 在/ usr).

完成后,您可以检查一些 Mono Runtime 数据结构,例如:
(lldb) p 方法

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

序列化


默认情况下,Mono 的 XML 序列化引擎将使用基于反射的方法
序列化,这对于连续处理(Web 服务应用程序)来说可能很慢。 这
序列化引擎将决定类何时必须使用手动调整的序列化器
一些参数,如果需要,它将为您的类型生成自定义的 C# 序列化程序
在运行时。 然后这个自定义的序列化程序会动态加载到您的
应用程序。

您可以使用 MONO_XMLSERIALIZER_THS 环境变量来控制它。

可能的值为 ‘不’ 禁用 C# 自定义序列化程序的使用,或
运行时将产生自定义之前的最小使用次数的整数
序列化器(0 将在第一次访问时产生一个自定义序列化器,50 将产生一个
第 50 次使用序列化程序)。 如果
序列化程序生成以某种方式失败。 可以通过设置选项禁用此行为
‘无后备’ (例如:MONO_XMLSERIALIZER_THS=0,nofallback)。

环境 变数


GC_DONT_GC
在 Mono 中关闭垃圾收集。 这应该只用于调试
目的

LVM_COUNT 个
当使用 LLVM 支持编译 Mono 时,这会指示运行时停止使用
在指定数量的方法之后的 LLVM 被 JIT。 这是一个使用的工具
诊断以帮助隔离代码生成后端中的问题。 例如
LLVM_COUNT=10 只会用 LLVM 编译 10 个方法,然后切换到 Mono
JIT引擎。 LLVM_COUNT=0 将完全禁用 LLVM 引擎。

MONO_AOT_缓存
如果设置,此变量将指示 Mono 提前编译新程序集
请求并将结果存储到缓存中 ~/.mono/aot-cache。

MONO_ASPNET_INHIBIT_SETTINGSMAP
Mono 包含允许修改 .config 文件中的设置的功能
使用配置部分映射器随 Mono 一起提供。 映射器和映射
规则在 $prefix/etc/mono/2.0/settings.map 文件中定义,并且可以选择在
在 ASP.NET 应用程序的顶级目录中找到的 settings.map 文件。
System.Web 在应用程序启动时读取这两个文件,如果它们位于
以上位置。 如果您不想执行映射,则可以设置此项
启动应用程序之前环境中的变量,并且不会执行任何操作
拍摄。

MONO_ASPNET_WEBCONFIG_CACHESIZE
Mono 有一个缓存 ConfigSection 对象,用于加速 WebConfigurationManager
查询。 它的默认大小是 100 个项目,当需要更多项目时,缓存
驱逐开始发生。 如果驱逐过于频繁,这可能会导致
不必要的开销,可以通过使用此环境变量来避免
设置更高的缓存大小(或通过减少它来降低内存需求)。

MONO_CAIRO_DEBUG_DISPOSE
如果设置,会导致 Mono.Cairo 在分配对象时收集堆栈跟踪,因此
完成/处置警告包括有关实例的信息
起源。

单声道配置目录
如果设置,此变量将覆盖默认系统配置目录
($前缀/等)。 它用于定位 machine.config 文件。

MONO_COM
设置 COM 互操作的样式。 如果此变量的值为“MS” Mono 将使用
来自 liboleaut32 的 BSTR 类型库的字符串编组例程,任何
其他值将使用单内置 BSTR 字符串编组。

单声道配置
如果设置,此变量将覆盖默认的运行时配置文件
($PREFIX/etc/mono/config)。 --config 命令行选项覆盖
环境变量。

MONO_CPU_ARCH
覆盖自动 CPU 检测机制。 目前仅用于手臂。 这
值的格式如下:

“armvV [拇指[2]]”

其中 V 是架构编号 4、5、6、7,选项当前可以是
“拇指”或“拇指2”。 例子:

MONO_CPU_ARCH="armv4 thumb" 单声道 ...

MONO_ARM_FORCE_SOFT_FLOAT
当 Mono 在 ARM 上使用软浮点回退构建并且此变量设置为
“1”,Mono 将始终发出软浮点代码,即使检测到 VFP 单元。

MONO_DISABLE_AIO
如果设置,则告诉单声道不要尝试使用本机异步 I/O 服务。 在那里面
在这种情况下,使用默认的选择/轮询实现。 目前只有 epoll() 是
支持的。

MONO_DISABLE_MANAGED_COLLATION
如果此环境变量为“是”,则运行时使用非托管归类(即
实际上意味着没有文化敏感的排序规则)。 它在内部禁用托管
通过 System.Globalization.CompareInfo 的成员调用的整理功能
班级。 默认情况下启用排序规则。

MONO_DISABLE_SHM
仅限 Unix:如果设置,则禁用用于跨进程句柄的共享内存文件:
进程只有私有句柄。 这意味着进程和线程句柄是
不可用于其他进程、命名互斥体、命名事件和命名
信号量在进程之间不可见。 这也可以通过
默认通过传递“--disable-shared-handles”选项来配置。 这是
从单声道 2.8 开始默认。

MONO_DISABLE_SHARED_AREA
仅限 Unix:如果设置,则禁用共享内存以暴露性能
柜台。 这意味着不可能同时从外部读取性能
来自该进程的计数器或读取外部进程的计数器。

MONO_DNS
设置后,启用使用完全托管的 DNS 解析器而不是常规的
libc 函数。 当运行多个查询时,此解析器的性能要好得多
平行。

需要注意的是 /etc/nsswitch.conf 将被忽略。

单声道EGD_套接字
对于没有其他方式获取随机字节的平台,这可以
设置为 egd 或 prngd 守护进程所在的文件系统套接字的名称
听。

MONO_ENABLE_SHM
仅限 Unix:启用对跨进程句柄的支持。 跨进程句柄是
用于公开进程句柄、线程句柄、命名互斥体、命名事件和
跨 Unix 进程的命名信号量。

MONO_ENV_OPTIONS
此环境变量允许您将命令行参数传递给 Mono
通过环境的过程。 这很有用,例如强制您的所有
Mono 处理使用 LLVM 或 SGEN,而无需修改任何启动脚本。

MONO_ENV_OPTIONS
用于在运行时将额外选项传递给调试器代理,因为它们是
使用 --debugger-agent= 传递。

MONO_EVENTLOG_TYPE
设置要使用的事件日志提供程序的类型(对于 System.Diagnostics.EventLog)。
可能的值为:

本地[:路径]
将事件日志和条目保留到本地文件系统。 目录在
可以指定哪些来持久化事件日志、事件源和条目
作为价值的一部分。 如果未明确设置路径,则默认为
unix 上的“/var/lib/mono/eventlog”和 Windows 上的“%APPDATA%no\ventlog”。

win32 使用 本地人 win32 API 事件 寄存器 活动 日志 活动
注册表中的来源。 这仅在 Windows 上可用。 在 Unix 上,
单个事件日志和事件源目录的目录权限
设置为 777(带 +t 位)允许每个人读取和写入事件日志
条目,而只允许条目被用户删除
创造了它们。

静默丢弃任何事件。

在 Unix(以及 NT 之前的 Windows 版本)上默认为“null”,在 Unix 上默认为“win32”
Windows NT(及更高版本)。

单声道外部编码
如果设置,则包含以冒号分隔的文本编码列表,以在转动时尝试
外部生成的文本(例如命令行参数或文件名)转换为 Unicode。
编码名称来自 iconv 提供的列表,特殊情况
“default_locale” 指的是当前语言环境的默认编码。

读取外部生成的文本字符串时,首先尝试 UTF-8,然后是这个
list 按顺序尝试,第一个成功转换结束搜索。
当写入外部文本(例如新文件名或新进程的参数)时,
使用此列表中的第一项,如果未设置环境变量,则使用 UTF-8。

使用 MONO_EXTERNAL_ENCODINGS 处理文件的问题在于
导致一个问题:虽然它可能获得正确的文件名,但它不是
一定有可能打开文件。 一般来说,如果你有问题
文件名中的编码,您应该使用“convmv”程序。

MONO_GC_PARAMS
当 Mono 与 SGen 垃圾收集器一起使用时,此变量控制多个
采集器参数变量的值是逗号分隔的列表
话。

苗圃大小=尺寸
设置托儿所的大小。 大小以字节为单位指定,并且必须是
两个的力量。 后缀“k”、“m”和“g”可用于指定公斤、
分别为兆字节和千兆字节。 托儿所是第一代(
二)。 较大的托儿所通常会加快程序,但显然会
使用更多内存。 默认苗圃大小为 4 MB。

专业=集电极 指定要使用的主要收集器。
选项是 Mark&Sweep 收集器的“marksweep”和“marksweep-conc”
用于并发标记和扫描。 非并发 Mark&Sweep 收集器是
默认。

软堆限制=尺寸
一旦堆大小变得大于这个大小,忽略默认的主要内容
收集触发指标说并且只允许四个托儿所大小的专业
主要集合之间的堆增长。

疏散阈值=门槛
以百分比设置疏散阈值。 此选项仅适用于
Mark&Sweep 的主要收藏家。 该值必须是范围内的整数
0 到 100。默认为 66。如果集合的扫描阶段发现
特定堆块类型的占用率小于此
百分比,它将在下一个块类型中进行复制集合
主要收藏,从而使入住率恢复到接近 100%。 一种
值 0 关闭疏散。

(no-)懒惰的扫描
为 Mark&Sweep 收集器启用或禁用延迟扫描。 如果启用,
每当
需要出现,通常是在苗圃收集期间。 已启用懒惰扫描
默认情况下。

(无)并发扫描
为 Mark&Sweep 收集器启用或禁用并发扫描。 如果
启用,所有主要块的迭代以确定哪些可以
释放以及哪些必须保留和清除,与
正在运行的程序。 默认情况下启用并发扫描。

堆栈标记=标记模式
指定应如何扫描应用程序线程。 选项是“精确”的
和`保守`。 精确的标记让收集者知道什么值
堆栈上是引用,什么不是。 保守标记威胁所有
值作为潜在的引用并保持不变。 精准打标
减少漂浮垃圾,加速托儿所收集和分配
率,它的缺点是每个需要大量额外内存
编译方法。 不幸的是,正确的选择需要实验。

保存目标比率=
指定主要收集器的目标保存率。 收藏家让
由于未成年人需要从托儿所提升一定数量的内存
在触发主要收集之前收集。 该金额基于
它期望释放多少内存。 它表示为大小的比率
主要收集后的堆。 有效值介于 0.1 和 2.0 之间。
默认值为 0.5。 较小的值将使主堆大小更小
但会触发更多的主要收藏。 同样,更大的值将使用
更多的内存并导致主要集合的频率降低。 这个选项是
实验性的,所以它可能会在以后的单声道版本中消失。

默认津贴比率=
指定计算大小过大时的默认分配限额
小的。 分配余量是收集器允许的内存量
在引发重大收藏之前推广。 是托儿所的比例
尺寸。 有效值介于 1.0 和 10.0 之间。 默认值为 4.0。 较小
值导致较小的堆和更频繁的主要集合。 同样地,
更大的值将使堆增长得更快,但在它出现时使用更多的内存
达到稳定的大小。 此选项是实验性的,因此它可能会消失
在单声道的更高版本中。

次要=小收藏家
指定要使用的次要收集器。 选项是“简单的”,促进
所有对象从托儿所直接到老年代并“分裂”
这让对象在提升之前在托儿所停留的时间更长。

分配比率=
指定分配空间要使用的托儿所的内存比率。
这只能与拆分次要收集器一起使用。 有效值为
1 到 100 之间的整数。默认值为 60。

晋升年龄=年龄
指定对象在托儿所内必须达到的所需年龄
被提升到老一代。 这只能与
拆分次要收集器。 有效值为 1 到 14 之间的整数。默认值
是2。

(无)水泥
启用或禁用固井。 这可以大大缩短托儿所
一些参考固定对象的基准测试的收集时间
从主要堆。

MONO_GC_DEBUG
将 Mono 与 SGen 垃圾收集器一起使用时,此环境变量可以是
用于开启收集器的各种调试功能。 这的价值
变量是逗号分隔的单词列表。 不要使用这些选项
生产。

将调试级别设置为指定的数字。

印刷津贴
在每个主要集合之后打印之前和之后的内存消耗
小收藏家的收藏和津贴,即有多少
允许堆在下一个主要集合之前从次要集合增长
收集被触发。

印刷别针
收集对象被固定在托儿所中的类的统计信息
并为其添加全局 remset 条目。 打印这些统计信息时
关闭。

先收集再分配

检查小集合
这对次要集合执行一致性检查,并清除
收集时的托儿所,而不是默认值,当缓冲区为
已分配 (clear-at-gc)。 一致性检查确保没有
主要到不在记忆集中的次要参考。

模块联合一致性检查
每次完成前检查 mod-union cardtable 是否一致
主要收集暂停。 此检查仅适用于并发专业
收藏家。

复选标记位
检查主堆中的标记位在每个结束时是否一致
主要收藏。 一致的标记位意味着如果一个对象被标记,
它所引用的所有对象也必须被标记。

检查托儿所固定
在托儿所收集之后,在开始并发收集之前,检查
是否所有托儿所对象都固定或不固定 - 取决于
语境。 使用拆分苗圃收集器时不执行任何操作。

xdomain-检查
执行检查以确保没有引用留给卸载的
应用程序域。

清晰的实验室创建
当线程本地分配缓冲区时,增量清除 Nursery
(TLAB) 创建。 默认设置在 GC 时清除整个 Nurseries
时间。

在创建时调试清除
当线程本地分配缓冲区时,增量清除 Nursery
(TLAB) 被创建,但在 GC 时用字节“0xff”填充它,它
如果`clear-at-tlab-creation`没有,应该会更快地导致崩溃
好好工作。

清除在 gc
这会在 GC 时清除 Nurseries 而不是在线程本地时执行
创建分配缓冲区 (TLAB)。 默认是在以下时间清除托儿所
TLAB 创建时间。

禁用未成年人
不要做小收藏。 如果托儿所已满,则主要收集
改为触发,除非它也被禁用。

禁用主要
不要做大集合。

保守堆栈标记
强制 GC 保守地扫描堆栈,即使是精确扫描
可用。

无管理分配器
禁用托管分配器。

检查扫描开始
如果设置,则在每次之前和之后对 scan_starts 进行合理性检查
采集

验证-托儿所-at-minor-gc
如果设置,则在每次开始时对托儿所进行完整的对象遍历
小收藏。

转储托儿所在次要 gc
如果设置,则在每个未成年人开始时转储托儿所的内容
收藏。 需要设置 verify-nursery-at-minor-gc。

堆转储=文件
将堆内容转储到指定文件。 为了形象化
信息,使用 mono-heapviz 工具。

二进制协议=文件
将调试输出输出到指定文件。 为此,Mono
需要使用 sgen-gc.c 上的 BINARY_PROTOCOL 定义进行编译。 你可以
然后使用此命令探索输出
sgen-grep-binprot 0x1234 0x5678 < 文件

托儿所金丝雀
如果设置,则在托儿所中分配的对象后缀为金丝雀(守卫)
word,在每个小集合上检查。 可用于检测/调试
堆损坏问题。

不敲定
如果启用,终结器将不会运行。 其他一切都不会受到影响:
可终结对象仍将被放入终结队列中
生存,直到他们预定完成。 一旦他们不在队列中
它们将被定期收集。

日志终结器
详细记录完成过程以帮助调试。

MONO_GAC_PREFIX
提供运行时用于查找全局程序集缓存的前缀。 目录
由平台路径分隔符(unix 上的冒号)分隔。 MONO_GAC_PREFIX
应该指向前缀安装的顶级目录。 或者到目录
gacutil /gacdir 命令中提供。 例子:
/home/用户名/.mono:/usr/local/mono/

单声道IOMAP
启用某些文件名重写支持以帮助编写错误的应用程序
硬编码 Windows 路径。 设置为以冒号分隔的“驱动器”列表以剥离驱动器
字母,或“大小写”在一个目录中的每个目录中进行不区分大小写的文件匹配
小路。 “all”启用所有重写方法。 (反斜杠总是映射到
如果此变量设置为有效选项,则为斜线)。
例如,这将在 shell 中工作:

MONO_IOMAP=驱动器:案例
导出 MONO_IOMAP

如果您使用 mod_mono 来托管您的 Web 应用程序,您可以使用 单IOMAP
指令代替,像这样:

单IOMAP 全部

参见 模组单声道(8) 了解更多详情。

此外。 Mono 包括一个分析器模块,它允许人们跟踪什么
调整 IOMAP 代码需要做的文件路径。 跟踪代码报告
进行 IOMAP 调用的托管位置(完整堆栈跟踪),以及
进程退出,在托管中创建所有 IOMAP 字符串的位置
代码。 后一个报告只是近似值,因为并非总是可以
估计创建字符串的实际位置。 代码使用简单
启发式 - 它分析导致字符串分配位置的堆栈跟踪
并忽略 GAC 中安装的程序集中的所有托管代码
就像在 Mono 附带的类库中一样(因为它们被假定为没有
区分大小写的问题)。 然后它报告用户代码中的第一个位置 -
在大多数情况下,这将是分配字符串的地方或非常接近
那个地点。 报告代码作为自定义分析器模块实现(请参阅
“PROFILING”部分)并且可以通过以下方式加载:

单声道--profile=iomap yourapplication.exe

但是请注意,Mono 当前一次仅支持一个分析器模块。

MONO_LLVM
当 Mono 使用 LLVM 代码生成后端时,您可以使用此环境
将代码生成选项传递给 LLVM 编译器的变量。

MONO_MANAGED_WATCHER
如果设置为“禁用”,System.IO.FileSystemWatcher 将使用文件观察器
默默地忽略所有观看请求的实现。 如果设置为任何
其他值,System.IO.FileSystemWatcher 将使用默认托管
实施(缓慢)。 如果未设置,mono 将尝试使用 inotify、FAM、Gamin、kevent
在 Unix 系统和 Windows 上的本机 API 调用下,回退到托管
错误的执行。

MONO_MESSAGING_PROVIDER
Mono 支持一个插件模型来实现 System.Messaging
可能支持各种消息传递实现(例如 AMQP、ActiveMQ)。
要指定要使用哪个消息传递实现,请使用 evironement 变量
需要设置为提供者的完整类名。 例如使用 RabbitMQ
基于 AMQP 实现的变量应设置为:

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

MONO_NO_SMP 单声道
如果设置导致单进程绑定到单个处理器。 这可能是
在调试或解决竞争条件时很有用。

MONO_NO_TLS
禁用线程本地访问的内联。 如果出现段错误,请尝试设置此项
在mono的早期执行。

单路径
提供运行时的搜索路径,在其中查找库
文件。 这是一个方便调试应用程序的工具,但是
不应由已部署的应用程序使用,因为它会破坏程序集
装载机以微妙的方式。
目录由平台路径分隔符(unix 上的冒号)分隔。 例子:
/home/用户名/lib:/usr/local/mono/lib
相对路径是根据启动时当前目录解析的。
MONO_PATH 的替代解决方案包括:将库安装到
全局程序集缓存(请参阅 加库利(1)) 或有受抚养人
库与主可执行文件并排。
有关推荐的应用实践的完整描述
部署,见
http://www.mono-project.com/docs/getting-started/application-deployment/

单声道实时时钟
统计分析器中的实验性 RTC 支持:如果用户有
许可,收集更准确的统计数据。 MONO_RTC
值必须限制在 Linux rtc 允许的范围内:XNUMX 的幂
从 64 到 8192 赫兹。 要启用更高的频率,例如 4096 Hz,请以 root 身份运行:

回声 4096 > /proc/sys/dev/rtc/max-user-freq

例如:

MONO_RTC=4096 单声道--profiler=default:stat program.exe

MONO_SHARED_DIR 目录
如果将其设置为存储“.wapi”句柄状态的目录。 这是
Windows I/O 仿真层存储其共享状态数据的目录
(文件、事件、互斥体、管道)。 默认情况下 Mono 将存储“.wapi”目录
在用户的主目录中。

MONO_SHARED_HOSTNAME
使用此变量的字符串值作为主机名的替代
在“.wapi”目录中创建文件名。 如果您的主机名
当单声道应用程序正在运行或者您有一个
.wapi 目录在几台不同的计算机之间共享。 Mono 通常使用
用于创建用于在多个 Mono 之间共享状态的文件的主机名
过程。 这样做是为了支持可能通过以下方式共享的主目录
网络。

MONO_STRICT_IO_EMULATION
如果设置,则在 IO 操作期间进行额外检查。 目前,这仅包括
围绕文件写入的咨询锁。

MONO_主题
Windows.Forms 要使用的主题的名称。 今天可用的主题包括
“clearlooks”、“nice”和“win32”。 默认值为“win32”。

MONO_TLS_SESSION_CACHE_TIMEOUT
SSL/TLS 会话缓存将保留其条目以避免的时间(以秒为单位)
客户端和服务器之间的新协商。 谈判很CPU
密集,因此特定于应用程序的自定义值可能证明对小型
嵌入式系统。 默认值为 180 秒。

MONO_THREADS_PER_CPU
一般线程池中的最小线程数为
MONO_THREADS_PER_CPU * CPU 数量。 此变量的默认值为 1。

MONO_XMLSERIALIZER_THS
控制 XmlSerializer 的阈值以生成自定义序列化程序
给定的类而不是使用基于反射的解释器。 可能的值
是“no”以禁用自定义序列化程序的使用或数字以指示何时
XmlSerializer 应该开始序列化。 默认值为 50,这意味着
自定义序列化程序将在第 50 次使用时生成。

MONO_X509_REVOCATION_MODE
设置验证 X509 证书链 (https,
ftps、smtps...)。 默认值为“nocheck”,它在以下位置不执行吊销检查
全部。 其他可能的值是 'offline',它执行 CRL 检查(不是
尚未实施)和“在线”,它使用 OCSP 和 CRL 来验证吊销
状态(尚未实现)。

环境 变数 用于 调试


MONO_ASPNET_NODELETE
如果设置为任何值,ASP.NET 支持类生成的临时源文件
不会被删除。 它们将保存在用户的临时目录中。

单声道调试
如果设置,则启用对调试有用的运行时的某些功能。 这个变量
应该包含一个逗号分隔的调试选项列表。 目前,该
支持以下选项:

未经证实的中断
如果设置了这个变量,当 Mono VM 遇到验证问题时,
它不会抛出异常,而是闯入调试器。 这是
在调试验证器问题时很有用

施放 此选项可用于从 InvalidCast 获取更多详细信息
例外,它将提供有关所涉及类型的信息。

收集页面错误统计信息
收集有关页面错误的信息。 这在内部用于跟踪
为加载元数据而产生的页面错误数。 要显示这个
您必须将此选项与“--stats”命令行选项一起使用。

非免费域名
这是针对多 AppDomain 应用程序的优化(最常见的是
ASP.NET 应用程序)。 由于内部限制 Mono,默认为 Mono
不在多应用程序域应用程序上使用类型化分配,因为它们可以
卸载域时泄漏内存。 虽然这是一个很好的默认值,但对于
大量使用 AppDomain 以外的应用程序(例如,ASP.NET
应用程序)值得用小泄漏换取增加
性能(此外,因为 ASP.NET 应用程序不太可能
卸载生产系统上的应用程序域,值得使用
此功能)。

动态运行时调用
指示运行时尝试使用通用运行时调用包装器代替
创建一个调用包装器。

GDB 相当于设置 MONO_XDEBUG 变量,这会将符号发出到一个
共享库,因为代码是 JITed,可以加载到 GDB 中进行检查
符号。

基因序列点
自动生成 IL 堆栈为空的序列点。 这些
是调试器可以设置断点的地方。

显式空检查
使 JIT 对变量取消引用生成显式 NULL 检查
而不是依赖操作系统来引发 SIGSEGV 或其他
访问无效内存位置时的陷阱事件形式。

句柄签名
捕获中断信号 (Control-C) 并在以下情况下显示堆栈跟踪
按下。 用于找出程序在给定位置执行的位置
观点。 这仅显示单个线程的堆栈跟踪。

初始化堆栈
指示运行时使用一些已知值 (0x2a
在 x86-64 上)在帮助调试 JIT 引擎的方法的开始。

保留代表
此选项将泄漏不再引用为的委托蹦床
向用户提供有关委托滥用的更多信息。
基本上可以创建一个委托实例,传递给非托管代码,
并且没有引用保留在托管代码中,这将垃圾收集代码。
使用此选项可以追踪问题的根源。

反向调用异常
此选项将导致单声道在期间中止并显示描述性消息
在异常到达本机堆栈帧后堆栈展开。 这个
当托管委托传递给本机代码时发生,并且托管委托
委托抛出异常。 Mono 通常会尝试将堆栈展开到
第一个(托管)异常处理程序,它将跳过任何本机堆栈
过程中的帧。 这会导致未定义的行为(因为 mono 没有
知道如何处理本机帧)、泄漏和可能的崩溃。

没有-gdb-回溯
此选项将禁用运行时发出的 GDB 回溯
非托管代码中的 SIGSEGV 或 SIGABRT。

sigsegv 挂起
当收到本机 SIGSEGV 时,此选项将挂起程序。
这对于调试不会在 gdb 下发生的崩溃很有用,因为
实时进程包含比核心文件更多的信息。

检查pinvoke-callconv
此选项会导致运行时检查调用约定不匹配
使用 pinvoke 时,即混合 cdecl/stdcall。 它仅适用于 Windows。 如果
检测到不匹配,则抛出 ExecutionEngineException。

单声道_日志_级别
日志记录级别,可能的值为“错误”、“严重”、“警告”、“消息”、
“信息”和“调试”。 有关更多详细信息,请参阅调试部分。

MONO_LOG_MASK
控制将应用日志记录的 Mono 运行时的域。 如果设置,则
日志掩码更改为设置值。 可能的值是“asm”(程序集加载器),
“type”、“dll”(本地库加载器)、“gc”(垃圾收集器)、“cfg”(配置文件)
loader)、“aot”(预编译器)、“security”(例如 Moonlight CoreCLR 支持)和
“全部”。 默认值为“全部”。 更改掩码值允许您显示
仅针对某个组件的消息。 您可以通过逗号使用多个掩码
将它们分开。 例如查看配置​​文件消息和程序集加载器
消息将您的掩码设置为“asm,cfg”。

MONO_TRACE
用于方法调用的运行时跟踪。 逗号分隔的跟踪格式
选项是:

[-]M:方法名
[-]N:命名空间
[-]T:类名
[-]全部
[-]程序
禁用 跟踪输出在启动时关闭。

您可以打开/关闭向程序发送 SIGUSR2 信号的跟踪输出。

MONO_TRACE_Listener
如果设置,则启用 System.Diagnostics.DefaultTraceListener,它将打印
System.Diagnostics Trace 和 Debug 类的输出。 它可以设置为
文件名,然后到 Console.Out 或 Console.Error 以将输出显示到标准输出
或标准误差,分别。 如果它设置为 Console.Out 或 Console.Error 你
可以附加一个可选前缀,在编写这样的消息时将使用该前缀:
控制台错误:我的程序名称。 请参阅 System.Diagnostics.DefaultTraceListener
文档以获取更多信息。

MONO_WCF_TRACE
这通过简单地输出所有日志消息来简化 WCF 诊断功能
WCF 引擎将“stdout”、“stderr”或任何文件传递给此环境变量。
日志格式与通常的诊断输出相同。

MONO_X异常
这在遇到 X11 错误时抛出异常; 默认情况下,消息是
显示但继续执行

MONO_XMLSERIALIZER_DEBUG
将此值设置为 1 以防止序列化程序删除临时文件
为快速序列化而创建的; 这在调试时可能很有用。

MONO_XSYNC 单声道
当与 X11 一起运行时,这在 System.Windows.Forms 实现中使用
后端。 这用于调试 Windows.Forms 中的问题,因为它强制所有
命令发送到 X11 服务器以同步完成。 默认模式为
操作是异步的,这使得很难隔离某些根
问题。

MONO_GENERIC_SHARING
此环境变量控制所使用的通用共享类型。 这个变量
由内部 JIT 开发人员使用,不应在生产中更改。 不要
用它。 变量控制哪些类将具有通用代码共享
启用。 允许的值为:

所有 所有生成的代码都可以共享。

收藏
只有 System.Collections.Generic 中的类才会共享其代码
(这是默认值)。

科利布 只有 corlib 中的代码才会共享其代码。

没有 不会执行通用代码共享。
默认情况下,通用代码共享仅适用于集合。 默认情况下的 Mono JIT
打开这个。

MONO_XDEBUG
当设置 MONO_XDEBUG 环境变量时,会发出 JITted 代码的调试信息
到共享库,可加载到 gdb。 例如,这使您能够查看托管
gdb 回溯上的帧名称。

MONO_VERBOSE_METHOD
为指定的方法启用最大 JIT 详细程度。 这很有帮助
诊断特定方法的错误编译问题。

MONO_VERBOSE_HWCAP
如果设置,则使 JIT 输出有关检测到的 CPU 功能(例如 SSE、
CMOV、FCMOV 等)到标准输出。

MONO_CONSERVATIVE_HWCAP
如果设置,JIT 将不执行任何硬件能力检测。 这可能是
有助于查明 JIT 问题的原因。 这是 Mono 构建时的默认设置
作为 AOT 交叉编译器,因此生成的代码可以在大多数硬件上运行。

瓦尔格林


如果你想使用 Valgrind,你会发现文件 `mono.supp' 很有用,它包含了
触发不正确警告的 GC 抑制。 像这样使用它:
valgrind --suppressions=mono.supp 单...

数据跟踪


在某些平台上,Mono 可以公开一组 DTrace 探针(也称为用户空间
静态定义,USDT 探针)。

它们在文件`mono.d'中定义。

ves-init-开始, ves-init-结束
运行时初始化的开始和结束。

方法编译开始, 方法编译结束
方法编译的开始和结束。 探针参数是类名、方法
名称和签名,以及在方法编译结束成功或失败的情况下
汇编。

gc-开始, GC结束
垃圾收集的开始和结束。

要验证探针的可用性,请运行:
dtrace -P mono'$target' -l -c mono

PERMISSIONS


Mono 用于检测网络可达性的 Ping 实现可以创建 ICMP 数据包
本身不需要系统 ping 命令来完成这项工作。 如果你想启用
在 Linux 上,对于非 root 用户,您需要授予 Mono 二进制特殊权限。

以 root 身份运行以下命令:
# setcap cap_net_raw=+ep /usr/bin/mono

使用 onworks.net 服务在线使用单声道


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    联合转速
    联合转速
    加入我们的 Gitter!
    https://gitter.im/unitedrpms-people/Lobby
    启用 URPMS 存储库
    系统-
    https://github.com/UnitedRPMs/unitedrpms.github.io/bl...
    下载 unitrpms
  • 2
    Boost C++ 库
    Boost C++ 库
    Boost 提供免费便携
    同行评审的 C++ 库。 这
    重点是便携式图书馆
    与 C++ 标准库配合良好。
    参见http://www.bo...
    下载 Boost C++ 库
  • 3
    虚拟GL
    虚拟GL
    VirtualGL 重定向 3D 命令
    Unix/Linux OpenGL 应用程序
    服务器端 GPU 并转换
    将 3D 图像渲染为视频流
    与...
    下载虚拟GL
  • 4
    libusb
    libusb
    启用用户空间的库
    与之通信的应用程序
    USB 设备。 受众:开发人员,结束
    用户/桌面。 编程语言:C。
    分类...
    下载 libusb
  • 5
    斯威格
    斯威格
    SWIG 是一种软件开发工具
    连接用 C 编写的程序和
    C++ 具有各种高级
    编程语言。 SWIG 用于
    不同的...
    下载痛饮
  • 6
    WooCommerce Nextjs 反应主题
    WooCommerce Nextjs 反应主题
    React WooCommerce 主题,构建于
    Next JS、Webpack、Babel、Node 和
    Express,使用 GraphQL 和 Apollo
    客户。 React 中的 WooCommerce 商店(
    包含:产品...
    下载 WooCommerce Nextjs React 主题
  • 更多 ”

Linux 命令

Ad