ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

OnWorks favicon

mono - ອອນລາຍໃນຄລາວ

ແລ່ນ mono ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ mono ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


mono - ເຄື່ອງສ້າງລະຫັດເດີມຂອງ ECMA-CLI ຂອງ Mono (ພຽງແຕ່ໃນເວລາ ແລະກ່ອນເວລາ)

ສະຫຼຸບສັງລວມ


mono [ທາງເລືອກ] ເອກະສານ [ການໂຕ້ຖຽງ ...]

mono-sgen [ທາງເລືອກ] ເອກະສານ [ການໂຕ້ຖຽງ ...]

ລາຍລະອຽດ


mono ແມ່ນການປະຕິບັດການແລ່ນເວລາຂອງໂຄງສ້າງພື້ນຖານພາສາທົ່ວໄປ ECMA. ນີ້ສາມາດເປັນ
ໃຊ້ເພື່ອແລ່ນແອັບພລິເຄຊັນ ECMA ແລະ .NET.

ເວລາແລ່ນປະກອບມີເຄື່ອງສ້າງລະຫັດເດີມທີ່ປ່ຽນຕົວກາງທົ່ວໄປ
ພາສາເຂົ້າໄປໃນລະຫັດພື້ນເມືອງ.

ເຄື່ອງກໍາເນີດລະຫັດສາມາດດໍາເນີນການໃນສອງໂຫມດ: ພຽງແຕ່ໃນເວລາລວບລວມ (JIT) ຫຼືລ່ວງຫນ້າ
ການລວບລວມເວລາ (AOT). ນັບຕັ້ງແຕ່ລະຫັດສາມາດໂຫລດແບບເຄື່ອນໄຫວ, ສະພາບແວດລ້ອມ runtime ແລະ
JIT ແມ່ນມີຢູ່ສະເຫມີ, ເຖິງແມ່ນວ່າລະຫັດຈະຖືກລວບລວມກ່ອນເວລາ.

runtime ໂຫຼດທີ່ກໍານົດໄວ້ ເອກະສານ ແລະທາງເລືອກທີ່ຈະຜ່ານ ກະທູ້ທີ່ ກັບມັນ. ໄດ້ ເອກະສານ
ແມ່ນການປະກອບ ECMA. ປົກກະຕິແລ້ວພວກມັນມີສ່ວນຂະຫຍາຍ .exe ຫຼື .dll.

runtime ໃຫ້ຈໍານວນຂອງທາງເລືອກໃນການຕັ້ງຄ່າສໍາລັບການແລ່ນຄໍາຮ້ອງສະຫມັກ, ສໍາລັບ
ການ​ພັດ​ທະ​ນາ​ແລະ debugging​, ແລະ​ສໍາ​ລັບ​ການ​ທົດ​ສອບ​ແລະ debugging runtime ຕົວ​ມັນ​ເອງ​.

ໄດ້ mono ຄໍາສັ່ງໃຊ້ຕົວເກັບຂີ້ເຫຍື້ອແບບອະນຸລັກ Boehm ໃນຂະນະທີ່ mono-sgen ຄໍາສັ່ງ
ໃຊ້ຕົວເກັບຂີ້ເຫຍື້ອແບບເຄື່ອນທີ່ແລະການຜະລິດ.

ຄວາມເປັນເອກະລາດ


ໃນລະບົບທີ່ອີງໃສ່ Unix, Mono ສະຫນອງກົນໄກເພື່ອເຮັດຕາມການເຂົ້າຫາໄຟລ໌ແບບ Windows,
ນີ້ປະກອບມີການສະຫນອງການເບິ່ງກໍລະນີທີ່ບໍ່ເຂົ້າໃຈຂອງລະບົບໄຟລ໌, ຕົວແຍກໄດເລກະທໍລີ
ການສ້າງແຜນທີ່ (ຈາກ \ ຫາ /) ແລະລອກເອົາຕົວອັກສອນໄດ.

ຟັງຊັນນີ້ຖືກເປີດໃຊ້ໂດຍການຕັ້ງຄ່າ MONO_IOMAP ສິ່ງ​ແວດ​ລ້ອມ​ຕົວ​ປ່ຽນ​ແປງ​ເປັນ​ຫນຶ່ງ​ໃນ​
ທັງ ໝົດ, ຂັບ ແລະ ກໍລະນີ.

ເບິ່ງຄໍາອະທິບາຍສໍາລັບ MONO_IOMAP ໃນພາກສ່ວນຕົວແປສະພາບແວດລ້ອມສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.

ໄລຍະ OPTIONS


ຕົວເລືອກຕໍ່ໄປນີ້ສາມາດໃຊ້ໄດ້:

--ອອດ, --aot[=ຕົວເລືອກ]
ຕົວເລືອກນີ້ຖືກໃຊ້ເພື່ອປະກອບລະຫັດ CIL ໄວ້ໃນຊຸດທີ່ລະບຸໄວ້ເປັນ native
ລະຫັດ. ລະຫັດທີ່ສ້າງຂຶ້ນຈະຖືກເກັບໄວ້ໃນໄຟລ໌ທີ່ມີນາມສະກຸນ .so. ໄຟລ໌ນີ້
ຈະຖືກເກັບຂຶ້ນໂດຍອັດຕະໂນມັດໂດຍ runtime ເມື່ອການປະກອບໄດ້ຖືກປະຕິບັດ.
ການລວບລວມຂໍ້ມູນລ່ວງຫນ້າແມ່ນເປັນປະໂຫຍດທີ່ສຸດຖ້າທ່ານໃຊ້ມັນປະສົມປະສານກັບ
-O=all,-shared flag ເຊິ່ງເຮັດໃຫ້ການເພີ່ມປະສິດທິພາບທັງໝົດໃນຕົວສ້າງລະຫັດ
ໄດ້​ຮັບ​ການ​ປະ​ຕິ​ບັດ​. ບາງສ່ວນຂອງການເພີ່ມປະສິດທິພາບເຫຼົ່ານັ້ນບໍ່ແມ່ນການປະຕິບັດສໍາລັບການພຽງແຕ່ໃນເວລາ
ການລວບລວມນັບຕັ້ງແຕ່ພວກເຂົາອາດຈະໃຊ້ເວລາຫຼາຍ. ບໍ່ເຫມືອນກັບ .NET Framework,
ການລວບລວມຂໍ້ມູນລ່ວງໜ້າຈະບໍ່ສ້າງລະຫັດເອກະລາດຂອງໂດເມນ: ມັນສ້າງ
ລະຫັດດຽວກັນກັບ Just-in-Time compiler ຈະຜະລິດ. ນັບຕັ້ງແຕ່ຫຼາຍທີ່ສຸດ
ແອັບພລິເຄຊັນໃຊ້ໂດເມນດຽວ, ນີ້ແມ່ນດີ. ຖ້າທ່ານຕ້ອງການທີ່ຈະເພີ່ມປະສິດທິພາບ
ລະຫັດທີ່ສ້າງຂຶ້ນເພື່ອໃຊ້ໃນແອັບພລິເຄຊັນຫຼາຍໂດເມນ, ພິຈາລະນາໃຊ້ -O=shared
ທຸງ. ນີ້ pre-compiles ວິທີການ, ແຕ່ການປະກອບຕົ້ນສະບັບແມ່ນຍັງຕ້ອງການ
ເພື່ອປະຕິບັດຍ້ອນວ່າອັນນີ້ປະກອບດ້ວຍ metadata ແລະຂໍ້ມູນຂໍ້ຍົກເວັ້ນທີ່ບໍ່ແມ່ນ
ມີຢູ່ໃນໄຟລ໌ທີ່ສ້າງຂຶ້ນ. ໃນເວລາທີ່ precompiling ລະຫັດ, ທ່ານອາດຈະຕ້ອງການ compile
ດ້ວຍການເພີ່ມປະສິດທິພາບທັງໝົດ (-O=all). ລະຫັດກ່ອນການລວບລວມແມ່ນລະຫັດເອກະລາດຕໍາແຫນ່ງ.
Pre compilation ແມ່ນພຽງແຕ່ກົນໄກການຫຼຸດຜ່ອນເວລາເລີ່ມຕົ້ນ, ເພີ່ມການແບ່ງປັນລະຫັດ
ໃນທົ່ວຂະບວນການ mono ຫຼາຍແລະຫຼີກເວັ້ນການເລີ່ມຕົ້ນໂຄງການລວບລວມພຽງແຕ່ໃນເວລາດຽວ
ຄ່າ​ໃຊ້​ຈ່າຍ​. ການປະກອບຕົ້ນສະບັບຍັງຈະຕ້ອງມີຢູ່, ເນື່ອງຈາກວ່າ metadata ແມ່ນມີຢູ່
ຢູ່ທີ່ນັ້ນ. ປົກກະຕິແລ້ວລະຫັດ AOT ບໍ່ສາມາດຍ້າຍຈາກຄອມພິວເຕີເຄື່ອງຫນຶ່ງໄປອີກ (CPU-
ການເພີ່ມປະສິດທິພາບສະເພາະທີ່ກວດພົບໃນເວລາແລ່ນ) ດັ່ງນັ້ນທ່ານບໍ່ຄວນພະຍາຍາມຍ້າຍ
ສະພາແຫ່ງການຜະລິດກ່ອນຫຼືການຫຸ້ມຫໍ່ຂອງສະພາແຫ່ງກ່ອນການຜະລິດສໍາລັບການ
ການນຳໃຊ້. ທາງເລືອກບໍ່ຫຼາຍປານໃດແມ່ນມີຢູ່ໃນຕົວກໍານົດການ --ອອດ ເສັ້ນຄໍາສັ່ງ
ທາງເລືອກ. ທາງ​ເລືອກ​ແມ່ນ​ຖືກ​ແຍກ​ອອກ​ດ້ວຍ​ເຄື່ອງ​ໝາຍ​ຈຸດ, ແລະ​ມີ​ຫຼາຍ​ກວ່າ​ອັນ​ທີ່​ສາ​ມາດ​ລະ​ບຸ​ໄດ້:

autoreg
AOT compiler ຈະປ່ອຍຕົວເລີ່ມຕົ້ນຫ້ອງສະຫມຸດ (ELF ເທົ່ານັ້ນ) ໂດຍອັດຕະໂນມັດ
ລົງທະບຽນໂມດູນ aot ລວບລວມກັບເວລາແລ່ນ. ນີ້ແມ່ນພຽງແຕ່ເປັນປະໂຫຍດໃນ
ໂໝດສະຖິດ

ຢ່າງດຽວກັນ
ແນະນໍາຜູ້ລວບລວມຂໍ້ມູນ AOT ໃຫ້ອອກລະຫັດການປະກອບແທນທີ່ຈະເປັນວັດຖຸ
ຍື່ນ.

bind-to-runtime-version
ຖ້າລະບຸ, ບັງຄັບໃຫ້ໄຟລ໌ AOT ທີ່ສ້າງຂຶ້ນຕ້ອງຜູກມັດກັບເວລາແລ່ນ
ສະບັບຂອງການລວບລວມ Mono. ນີ້ຈະປ້ອງກັນບໍ່ໃຫ້ໄຟລ໌ AOT ຈາກການເປັນ
ບໍລິໂພກໂດຍຊ່ວງເວລາ Mono ທີ່ແຕກຕ່າງກັນ. ຢ່າງເຕັມທີ່ ນີ້ແມ່ນປະຈຸບັນ
ລັກສະນະການທົດລອງຍ້ອນວ່າມັນບໍ່ສົມບູນ. ອັນນີ້ສັ່ງໃຫ້ Mono
precompile ລະ​ຫັດ​ທີ່​ບໍ່​ໄດ້​ປະ​ຫວັດ​ສາດ​ທີ່​ບໍ່​ໄດ້​ຖືກ precompiled ກັບ AOT​.

ຮ້ອງໂດຍກົງ
ເມື່ອຕົວເລືອກນີ້ຖືກລະບຸ, P/Invoke method ຈະຖືກເອີ້ນໂດຍກົງແທນ
ໂດຍຜ່ານການດໍາເນີນການຄົ້ນຫາສັນຍາລັກຂອງລະບົບປະຕິບັດການ.

llvm-path=
ດຽວກັນກັບເຄື່ອງມື llvm 'opt' ແລະ 'llc'.

mtriple=
ໃຊ້ເປົ້າໝາຍແບບ GNU triple ເພື່ອກໍານົດການສ້າງລະຫັດບາງຢ່າງ
ທາງເລືອກ, ເຊັ່ນ --mtriple=armv7-linux-gnueabi ຈະສ້າງລະຫັດທີ່ເປົ້າຫມາຍ
ARMv7. ໃນປັດຈຸບັນນີ້ພຽງແຕ່ສະຫນັບສະຫນູນໂດຍ backend ARM. ໃນ​ຮູບ​ແບບ LLVM​,
triple ນີ້ຖືກສົ່ງໄປຫາ LLVM llc compiler.

nimt-trampolines=[ຈໍານວນ]
ເມື່ອລວບລວມຢູ່ໃນໂຫມດ aot ເຕັມ, trampolines IMT ຕ້ອງຖືກສ້າງຂື້ນໃນ
ຮູບ​ພາບ AOT​. ທ່ານສາມາດເພີ່ມ trampolines ວິທີການເພີ່ມເຕີມດ້ວຍນີ້
ການໂຕ້ຖຽງ. ຄ່າເລີ່ມຕົ້ນເປັນ 128.

nodebug
ແນະນຳໃຫ້ຜູ້ລວບລວມຂໍ້ມູນ AOT ບໍ່ໃຫ້ອອກຂໍ້ມູນການແກ້ບັນຫາໃດໆ.

ບໍ່ມີການໂທໂດຍກົງ
ນີ້ປ້ອງກັນບໍ່ໃຫ້ຜູ້ລວບລວມຂໍ້ມູນ AOT ຈາກການສ້າງການໂທໂດຍກົງໄປຫາວິທີການ.
AOT compiler ປົກກະຕິແລ້ວສ້າງການໂທໂດຍກົງສໍາລັບວິທີການສະເພາະໃດຫນຶ່ງທີ່ເຮັດ
ບໍ່ຈໍາເປັນຕ້ອງຜ່ານ PLT (ຕົວຢ່າງ, ວິທີການທີ່ຮູ້ຈັກ
ບໍ່ຮຽກຮ້ອງໃຫ້ມີ hook ເຊັ່ນ constructor static) ຫຼືໂທຫາພາຍໃນງ່າຍດາຍ
ໂທ.

dwarfdebug
ແນະນໍາຜູ້ລວບລວມຂໍ້ມູນ AOT ໃຫ້ປ່ອຍຂໍ້ມູນການດີບັກ DWARF. ເມື່ອໃຊ້
ຮ່ວມກັບທາງເລືອກ nodebug, ພຽງແຕ່ຂໍ້ມູນການດີບັກ DWARF ແມ່ນ
ປ່ອຍອອກມາ, ແຕ່ບໍ່ແມ່ນຂໍ້ມູນທີ່ສາມາດຖືກນໍາໃຊ້ໃນເວລາແລ່ນ.

nrgctx-trampolines=[ຈໍານວນ]
ເມື່ອລວບລວມຢູ່ໃນໂຫມດ aot ເຕັມ, trampolines ການແບ່ງປັນທົ່ວໄປຕ້ອງເປັນ
precreated ໃນຮູບ AOT. ທ່ານສາມາດເພີ່ມ trampolines ວິທີການເພີ່ມເຕີມທີ່ມີ
ການໂຕ້ຖຽງນີ້. ຄ່າເລີ່ມຕົ້ນເປັນ 1024.

ntrampolines=[ຈໍານວນ]
ເມື່ອລວບລວມຢູ່ໃນໂຫມດ aot ເຕັມ, trampolines ວິທີການຕ້ອງຖືກສ້າງຂື້ນກ່ອນ
ໃນຮູບ AOT. ທ່ານສາມາດເພີ່ມ trampolines ວິທີການເພີ່ມເຕີມດ້ວຍນີ້
ການໂຕ້ຖຽງ. ຄ່າເລີ່ມຕົ້ນເປັນ 1024.

outfile=[ຊື່ໄຟລ໌]
ແນະນໍາຜູ້ລວບລວມຂໍ້ມູນ AOT ເພື່ອບັນທຶກຜົນຜະລິດເຂົ້າໃນໄຟລ໌ທີ່ກໍານົດໄວ້.

ພິມ-ຂ້າມ-ວິທີການ
ຖ້າ AOT compiler ບໍ່ສາມາດລວບລວມວິທີການສໍາລັບເຫດຜົນໃດກໍ່ຕາມ, ເຮັດໃຫ້ມັນເປັນໄປໄດ້
ທຸງຈະສົ່ງອອກວິທີການຂ້າມໄປຫາ console.

readonly-value=namespace.typename.fieldname=type/value
ລົບລ້າງຄ່າຂອງຊ່ອງຂໍ້ມູນແບບອ່ານເທົ່ານັ້ນແບບຄົງທີ່. ປົກກະຕິແລ້ວ, ໃນໄລຍະ JIT
ການລວບລວມ, constructor static ແມ່ນແລ່ນຢ່າງກະຕືລືລົ້ນ, ດັ່ງນັ້ນມູນຄ່າຂອງ static
ພາກສະຫນາມ readonly ແມ່ນເປັນທີ່ຮູ້ຈັກໃນເວລາລວບລວມແລະ compiler ສາມາດເຮັດຕົວເລກໄດ້
ຂອງການເພີ່ມປະສິດທິພາບໂດຍອີງໃສ່ມັນ. ໃນລະຫວ່າງ AOT, ແທນທີ່ຈະ, ຜູ້ກໍ່ສ້າງຄົງທີ່
ບໍ່ສາມາດແລ່ນໄດ້, ດັ່ງນັ້ນທາງເລືອກນີ້ສາມາດໃຊ້ເພື່ອກໍານົດຄ່າຂອງຊ່ອງຂໍ້ມູນດັ່ງກ່າວ
ແລະເປີດໃຊ້ຊຸດການເພີ່ມປະສິດທິພາບດຽວກັນ. ປະເພດສາມາດເປັນໃດໆຂອງ i1, i2, i4 ສໍາລັບ
ຈຳນວນເຕັມຂອງຂະໜາດຕາມລຳດັບ (ເປັນໄບຕ໌). ໃຫ້ສັງເກດວ່າໄດ້ເຊັນ / ບໍ່ໄດ້ເຊັນ
ຕົວເລກບໍ່ສໍາຄັນຢູ່ທີ່ນີ້, ພຽງແຕ່ຂະຫນາດການເກັບຮັກສາ. ທາງເລືອກນີ້ສາມາດເປັນ
ກໍານົດຫຼາຍຄັ້ງແລະມັນບໍ່ໄດ້ປ້ອງກັນ constructor static ສໍາລັບ
ປະເພດກໍານົດພາກສະຫນາມເພື່ອປະຕິບັດກັບກົດລະບຽບປົກກະຕິໃນເວລາແລ່ນ
(ເພາະສະນັ້ນອາດຈະຄິດໄລ່ຄ່າທີ່ແຕກຕ່າງກັນສໍາລັບພາກສະຫນາມ).

save-temps, keep-temps
ແນະນໍາໃຫ້ຜູ້ລວບລວມຂໍ້ມູນ AOT ເກັບຮັກສາໄຟລ໌ຊົ່ວຄາວ.

soft-debug
ນີ້ສັ່ງໃຫ້ compiler ສ້າງການກວດສອບຈຸດລໍາດັບທີ່ອະນຸຍາດໃຫ້
ຕົວດີບັກອ່ອນຂອງ Mono ເພື່ອດີບັກແອັບພລິເຄຊັນຕ່າງໆ ເຖິງແມ່ນວ່າຢູ່ໃນລະບົບທີ່ມັນບໍ່ແມ່ນ
ເປັນ​ໄປ​ໄດ້​ທີ່​ຈະ​ກໍາ​ນົດ breakpoints ຫຼື​ຂັ້ນ​ຕອນ​ດຽວ (ຮາດ​ແວ​ສະ​ເພາະ​ໃດ​ຫນຶ່ງ​
ການຕັ້ງຄ່າເຊັ່ນ: ໂທລະສັບມືຖື ແລະຄອນໂຊເກມວີດີໂອ).

ໄຟຟ້າສະຖິດ ສ້າງໄຟລ໌ວັດຖຸ ELF (.o) ຫຼື .s ທີ່ສາມາດເຊື່ອມຕໍ່ແບບຄົງທີ່
ເຂົ້າໄປໃນການປະຕິບັດໃນເວລາທີ່ຝັງ mono runtime. ໃນເວລາທີ່ທາງເລືອກນີ້ແມ່ນ
ຖືກນໍາໃຊ້, ໄຟລ໌ວັດຖຸຈໍາເປັນຕ້ອງໄດ້ລົງທະບຽນກັບ runtime ຝັງໂດຍໃຊ້
ຟັງຊັນ mono_aot_register_module ເຊິ່ງໃຊ້ເວລາເປັນການໂຕ້ຖຽງຂອງມັນ
mono_aot_module_ _info ສັນຍາລັກທົ່ວໂລກຈາກໄຟລ໌ວັດຖຸ:

extern void *mono_aot_module_hello_info;

mono_aot_register_module (mono_aot_module_hello_info);

ສະຖິຕິ ພິມສະຖິຕິຕ່າງໆທີ່ເກັບກໍາໃນລະຫວ່າງການລວບລວມ AOT.

ກະທູ້=[ຕົວເລກ]
ນີ້ແມ່ນທາງເລືອກທົດລອງສໍາລັບ AOT compiler ທີ່ຈະນໍາໃຊ້ຫຼາຍ threads
ເມື່ອລວບລວມວິທີການ.

tool-prefix=
Prepends ກັບຊື່ຂອງເຄື່ອງມືທີ່ດໍາເນີນການໂດຍ AOT compiler, ie
'ເປັນ'/'ld'. ຕົວຢ່າງ, --tool=prefix=arm-linux-gnueabi- ຈະເຮັດໃຫ້ AOT
ແລ່ນ compiler

ຂຽນ - ສັນ​ຍາ​ລັກ​
ແນະນໍາຜູ້ລວບລວມຂໍ້ມູນ AOT ໃຫ້ປ່ອຍຂໍ້ມູນສັນຍາລັກດີບັກ.

ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບ AOT, ເບິ່ງ: http://www.mono-project.com/docs/advanced/aot/

--attach=[ຕົວເລືອກ]
ໃນປັດຈຸບັນທາງເລືອກດຽວທີ່ສະຫນັບສະຫນູນໂດຍການໂຕ້ຖຽງເສັ້ນຄໍາສັ່ງນີ້ແມ່ນ ປິດການໃຊ້ວຽກ ທີ່
ປິດການທໍາງານຂອງໄຟລ໌ແນບ.

--config ຊື່​ເອ​ກະ​ສານ
ໂຫລດໄຟລ໌ການຕັ້ງຄ່າທີ່ລະບຸໄວ້ແທນທີ່ຈະເປັນຄ່າເລີ່ມຕົ້ນ. ຄ່າເລີ່ມຕົ້ນ
ໄຟລ໌ແມ່ນ /etc/mono/config ແລະ ~/.mono/config ຫຼືໄຟລ໌ທີ່ລະບຸໄວ້ໃນ
ຕົວປ່ຽນແປງສະພາບແວດລ້ອມ MONO_CONFIG, ຖ້າຕັ້ງ. ເບິ່ງ mono-config(5) man page for
ລາຍລະອຽດກ່ຽວກັບຮູບແບບຂອງໄຟລ໌ນີ້.

--debugger-agent=[ຕົວເລືອກ]
ອັນນີ້ສັ່ງໃຫ້ Mono runtime ເລີ່ມຕົວແທນການດີບັກພາຍໃນເວລາແລ່ນ Mono
ແລະເຊື່ອມຕໍ່ມັນກັບການໂຕ້ຕອບຜູ້ໃຊ້ລູກຄ້າຈະຄວບຄຸມຂະບວນການ Mono. ນີ້
ທາງເລືອກແມ່ນຖືກນໍາໃຊ້ໂດຍ IDEs, ເຊັ່ນ MonoDevelop IDE.

ການ​ຕັ້ງ​ຄ່າ​ແມ່ນ​ໄດ້​ລະ​ບຸ​ໄວ້​ໂດຍ​ນໍາ​ໃຊ້​ຫນຶ່ງ​ໃນ​ຫຼາຍ​ທາງ​ເລືອກ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​:

address=host:ພອດ
ໃຊ້ຕົວເລືອກນີ້ເພື່ອລະບຸທີ່ຢູ່ IP ບ່ອນທີ່ລູກຂ່າຍດີບັກຂອງເຈົ້າຢູ່
ຟັງ.

loglevel=LEVEL
ລະບຸລະດັບບັນທຶກການວິເຄາະສໍາລັບ

logfile=ຊື່ໄຟລ໌
ໃຊ້ເພື່ອລະບຸໄຟລ໌ທີ່ບັນທຶກຈະຖືກເກັບໄວ້, ມັນຈະເປັນຄ່າເລີ່ມຕົ້ນ
ຜົນຜະລິດມາດຕະຖານ.

server=[y/n]
ຄ່າເລີ່ມຕົ້ນທີ່ຈະບໍ່ມີ, ດ້ວຍຕົວເລືອກເລີ່ມຕົ້ນ Mono ຈະເຊື່ອມຕໍ່ຢ່າງຈິງຈັງກັບ
ໂຮດ / ພອດທີ່ຖືກຕັ້ງຄ່າດ້ວຍ ທີ່ຢູ່ ທາງເລືອກ. ຖ້າທ່ານຕັ້ງມັນເປັນ 'y', ມັນ
ແນະນຳ Mono runtime ເພື່ອເລີ່ມການດີບັກໃນໂໝດເຊີບເວີ, ບ່ອນທີ່ Mono
ລໍຖ້າຢ່າງຫ້າວຫັນສຳລັບຕົວດີບັກດ້ານໜ້າເພື່ອເຊື່ອມຕໍ່ກັບຂະບວນການ Mono.
Mono ຈະພິມອອກເພື່ອ stdout ທີ່ຢູ່ IP ແລະພອດບ່ອນທີ່ມັນກໍາລັງຟັງ.

setpgid=[y/n]
ຖ້າຕັ້ງເປັນແມ່ນ, Mono ຈະໂທຫາ setpgid(0, 0) on ເລີ່ມຕົ້ນ, if ທີ່ ຫນ້າທີ່ is
ມີ on ໄດ້ ລະບົບ. ນີ້ is ທີ່ເປັນປະໂຫຍດ ສໍາລັບການ ຮັບປະກັນ ທີ່ ສັນຍານ ຈັດສົ່ງ
to a ຂະບວນການ ທີ່ is ການປະຕິບັດ ໄດ້ ດີບັກ ມີ ບໍ່ ຂະຫຍາຍພັນດ້ວຍ to ໄດ້
ດີບັກ, ຕົວຢ່າງ: ໃນເວລາທີ່ Ctrl-C ສົ່ງ ເຊັນເຂົ້າ to ໄດ້ sdb ເຄື່ອງມື.

suspend=[y/n]
ຄ່າເລີ່ມຕົ້ນແມ່ນແມ່ນ, ດ້ວຍຕົວເລືອກເລີ່ມຕົ້ນ Mono ຈະໂຈະ vm ໃນການເລີ່ມຕົ້ນ
ຈົນ​ກ​່​ວາ​ມັນ​ເຊື່ອມ​ຕໍ່​ສົບ​ຜົນ​ສໍາ​ເລັດ​ກັບ​ການ​ດີ​ບັກ​ດ້ານ​ຫນ້າ​. ຖ້າເຈົ້າຕັ້ງມັນເປັນ
'n', ສົມທົບກັບ server=y, ມັນສັ່ງໃຫ້ Mono runtime ແລ່ນເປັນ
ປົກກະຕິ, ໃນຂະນະທີ່ເກັບຂໍ້ມູນ metadata ເພື່ອສົ່ງໄປທີ່ debugger front end on
ການ​ເຊື່ອມ​ຕໍ່..

transport=transport_name
ອັນນີ້ໃຊ້ເພື່ອລະບຸການຂົນສົ່ງທີ່ຕົວດີບັກຈະໃຊ້
ຕິດຕໍ່ສື່ສານ. ມັນຕ້ອງໄດ້ຮັບການລະບຸໄວ້ແລະປະຈຸບັນຮຽກຮ້ອງໃຫ້ມີນີ້
'dt_socket'.

--ເດັສທັອບ
ກຳນົດຄ່າເຄື່ອງສະເໝືອນໃຫ້ເໝາະສົມກັບແອັບພລິເຄຊັນເດັສທັອບ.
ໃນປັດຈຸບັນນີ້ກໍານົດລະບົບ GC ເພື່ອຫຼີກເວັ້ນການຂະຫຍາຍ heap ຫຼາຍເທົ່າທີ່ເປັນໄປໄດ້
ໃນຄ່າໃຊ້ຈ່າຍຂອງການຊ້າລົງການເກັບຂີ້ເຫຍື້ອເລັກນ້ອຍ.

--ເຕັມທີ່
ນີ້ແມ່ນທຸງທົດລອງທີ່ສັ່ງໃຫ້ Mono runtime ບໍ່ສ້າງອັນໃດ
ລະຫັດໃນເວລາແລ່ນແລະຂຶ້ນກັບລະຫັດທີ່ສ້າງຂຶ້ນຈາກການໃຊ້ mono
--aot=ເຕັມກ່ອນໜ້ານີ້. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບເວທີທີ່ບໍ່ອະນຸຍາດໃຫ້ເຄື່ອນໄຫວ
ການສ້າງລະຫັດ. ສັງ​ເກດ​ວ່າ​ຄຸນ​ສົມ​ບັດ​ນີ້​ຈະ​ຍົກ​ເລີກ​ການ​ປະ​ຕິ​ບັດ​ໃນ​ເວ​ລາ​ແລ່ນ​ຖ້າ​ຫາກ​ວ່າ a
codepath ໃນໂຄງການຂອງທ່ານ, ຫຼືຫ້ອງສະຫມຸດຫ້ອງຮຽນຂອງ Mono ພະຍາຍາມສ້າງລະຫັດ
ແບບເຄື່ອນໄຫວ. ທ່ານຄວນທົດສອບຊອບແວຂອງທ່ານລ່ວງຫນ້າແລະໃຫ້ແນ່ໃຈວ່າທ່ານບໍ່ໄດ້ເຮັດ
ໃຊ້ຄຸນສົມບັດແບບເຄື່ອນໄຫວໃດໆ.

--gc=boehm, --gc=sgen
ເລືອກເຄື່ອງຈັກເກັບຂີ້ເຫຍື້ອສໍາລັບ Mono ໃຊ້, Boehm ຫຼື SGen. ໃນປັດຈຸບັນ
ນີ້ພຽງແຕ່ຮັບປະກັນວ່າທ່ານກໍາລັງແລ່ນບໍ່ວ່າຈະ mono or mono-sgen ຄຳ ສັ່ງ.
ທຸງນີ້ສາມາດຖືກຕັ້ງຢູ່ໃນ MONO_ENV_OPTIONS ສິ່ງ​ແວດ​ລ້ອມ​ຕົວ​ປ່ຽນ​ແປງ​ທີ່​ຈະ​ບັງ​ຄັບ​ທັງ​ຫມົດ​ຂອງ​
ລູກຂອງທ່ານຂະບວນການທີ່ຈະໃຊ້ GC ປະເພດຫນຶ່ງໂດຍສະເພາະກັບ Mono runtime.

- ຊ່ວຍ, -h
ສະແດງຄຳແນະນຳການນຳໃຊ້.

--llvm ຖ້າ Mono runtime ໄດ້ຖືກລວບລວມດ້ວຍການສະຫນັບສະຫນູນ LLVM (ບໍ່ມີຢູ່ໃນທັງຫມົດ
configurations), Mono ຈະໃຊ້ການເພີ່ມປະສິດທິພາບ LLVM ແລະເຄື່ອງຈັກສ້າງລະຫັດເພື່ອ
JIT ຫຼື AOT ລວບລວມ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ປຶກສາຫາລື: http://www.mono-
project.com/docs/advanced/mono-llvm/

--nollvm
ເມື່ອໃຊ້ Mono ທີ່ຖືກລວບລວມດ້ວຍການສະຫນັບສະຫນູນ LLVM, ມັນບັງຄັບໃຫ້ Mono
ກັບຄືນໄປຫາເຄື່ອງຈັກ JIT ຂອງມັນແລະບໍ່ໃຊ້ backend LLVM.

--optimize=MODE, -O=MODE
MODE ແມ່ນລາຍການການປັບແຕ່ງທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ. ພວກເຂົາເຈົ້າຍັງອະນຸຍາດໃຫ້ການເພີ່ມປະສິດທິພາບ
ຖືກປິດໂດຍການໃສ່ຊື່ການເພີ່ມປະສິດທິພາບດ້ວຍເຄື່ອງຫມາຍລົບ. ໂດຍ​ທົ່ວ​ໄປ,
Mono ໄດ້ຖືກປັບໃຫ້ໃຊ້ທຸງທີ່ກໍານົດໄວ້ໃນຕອນຕົ້ນ, ກ່ອນທີ່ຈະໃຊ້ທຸງເຫຼົ່ານີ້ສໍາລັບ a
ການ​ຕັ້ງ​ຄ່າ​ການ​ນໍາ​ໃຊ້​, ທ່ານ​ອາດ​ຈະ​ຕ້ອງ​ການ​ຕົວ​ຈິງ​ເພື່ອ​ວັດ​ແທກ​ຜົນ​ປະ​ໂຫຍດ​ຂອງ​ການ​ນໍາ​ໃຊ້​ໃຫ້​ເຂົາ​ເຈົ້າ​.
ທຸງການເພີ່ມປະສິດທິພາບຕໍ່ໄປນີ້ຖືກປະຕິບັດຢູ່ໃນເຄື່ອງຈັກຫຼັກ:
abcrem Array bound ການກວດສອບການໂຍກຍ້າຍ
ທັງໝົດເປີດການປັບແຕ່ງທັງໝົດ
aot ການ​ນໍາ​ໃຊ້​ຂອງ​ກ່ອນ​ຫນ້າ​ຂອງ​ທີ່​ໃຊ້​ເວ​ລາ​ລະ​ຫັດ​ທີ່​ສັງ​ລວມ​
ການເພີ່ມປະສິດທິພາບຂອງສາຂາສາຂາ
cfold ການພັບຄົງທີ່
cmov ການຍ້າຍຕາມເງື່ອນໄຂ [arch-dependency]
deadce ການກໍາຈັດລະຫັດຕາຍ
consprop ການຂະຫຍາຍພັນຢ່າງຕໍ່ເນື່ອງ
copyprop ການຂະຫຍາຍພັນ
fcmov Fast x86 FP ປຽບທຽບ [arch-dependency]
float32 ປະຕິບັດເລກເລກລອຍແບບ 32-bit ໂດຍໃຊ້ຄຳສັ່ງ 32-bit
gshared ເປີດໃຊ້ການແບ່ງປັນລະຫັດທົ່ວໄປ.
ການໂທດ້ວຍວິທີການ inline inline
intrins ການປະຕິບັດວິທີການພາຍໃນ
Linear Linear scan ການຈັດສັນ reg ທົ່ວໂລກ
ການເພີ່ມປະສິດທິພາບຂອງຂັ້ນຕອນຂອງໃບ
ການເພີ່ມປະສິດທິພາບທີ່ກ່ຽວຂ້ອງກັບ loop loop
ຕູ້ໄປສະນີ Peephole
precomp precompile ວິທີການທັງຫມົດກ່ອນທີ່ຈະດໍາເນີນການ Main
sched ຕາຕະລາງການສອນ
ແບ່ງປັນລະຫັດ Emit ຕໍ່ໂດເມນ
sse2 ຄໍາແນະນໍາ SSE2 ກ່ຽວກັບ x86 [arch-dependency]
tailc ຫາງ recursion ແລະການໂທຫາງ
ສໍາລັບຕົວຢ່າງ, ເພື່ອເຮັດໃຫ້ການເພີ່ມປະສິດທິພາບທັງຫມົດແຕ່ການກໍາຈັດລະຫັດຕາຍແລະ inlining,
ທ່ານສາມາດໃຊ້:
-O=ທັງໝົດ,-deadce,-inline
ທຸງທີ່ມີທຸງທີ່ມີ [arch-dependency] ຊີ້ບອກວ່າທາງເລືອກທີ່ໃຫ້ if
ການ​ນໍາ​ໃຊ້​ໃນ​ການ​ປະ​ສົມ​ປະ​ສານ​ກັບ Ahead of Time compilation (--aot flag) ຈະ​ຜະ​ລິດ​ຕະ​ພັນ​ກ່ອນ​.
ລະຫັດທີ່ລວບລວມທີ່ຈະຂຶ້ນກັບ CPU ໃນປັດຈຸບັນແລະອາດຈະບໍ່ຖືກຍ້າຍໄປຢ່າງປອດໄພ
ຄອມພິວເຕີອື່ນ.

ການເພີ່ມປະສິດທິພາບຕໍ່ໄປນີ້ແມ່ນສະຫນັບສະຫນູນ

ລອຍ32
ຮ້ອງຂໍໃຫ້ runtime ດໍາເນີນການ 32-bit floating point ໂດຍໃຊ້
ພຽງແຕ່ 32-bits. ຕາມຄ່າເລີ່ມຕົ້ນ Mono runtime ພະຍາຍາມໃຊ້ສູງສຸດ
ຄວາມແມ່ນຍໍາທີ່ມີຢູ່ສໍາລັບການດໍາເນີນການຈຸດລອຍ, ແຕ່ໃນຂະນະທີ່ນີ້ອາດຈະ
ໃຫ້ຜົນໄດ້ຮັບທີ່ດີກວ່າ, ລະຫັດອາດຈະເຮັດວຽກຊ້າລົງ. ທາງ​ເລືອກ​ນີ້​ຍັງ​
ຜົນກະທົບຕໍ່ລະຫັດທີ່ສ້າງຂຶ້ນໂດຍ backend LLVM.

inline ຄວບຄຸມວ່າເວລາແລ່ນຄວນພະຍາຍາມຢູ່ໃນແຖວ (ຄ່າເລີ່ມຕົ້ນ), ຫຼືບໍ່
inline ການ​ຮຽກ​ຮ້ອງ​ວິ​ທີ​ການ​

--runtime=VERSION
Mono ຮອງຮັບລຸ້ນ runtime ທີ່ແຕກຕ່າງກັນ. ຮຸ່ນທີ່ໃຊ້ແມ່ນຂຶ້ນກັບໂຄງການ
ທີ່ກໍາລັງດໍາເນີນການຫຼືຢູ່ໃນໄຟລ໌ການຕັ້ງຄ່າຂອງມັນ (ຊື່ program.exe.config). ນີ້
ທາງ​ເລືອກ​ສາ​ມາດ​ຖືກ​ນໍາ​ໃຊ້​ເພື່ອ override ການ​ກວດ​ສອບ​ອັດ​ຕະ​ໂນ​ມັດ​ດັ່ງ​ກ່າວ​, ໂດຍ​ການ​ບັງ​ຄັບ​ໃຊ້​ເວ​ລາ​ທີ່​ແຕກ​ຕ່າງ​ກັນ​
ສະ​ບັບ​ທີ່​ຈະ​ນໍາ​ໃຊ້​. ກະລຸນາຮັບຊາບວ່າອັນນີ້ຄວນຈະຖືກໃຊ້ເພື່ອເລືອກອັນທີ່ເຂົ້າກັນໄດ້ໃນພາຍຫຼັງເທົ່ານັ້ນ
ເວີຊັ່ນ runtime ຫຼາຍກວ່າອັນທີ່ໂປຣແກມຖືກລວບລວມຕໍ່ກັບ. ການ​ນໍາ​ໃຊ້​ປົກ​ກະ​ຕິ​ແມ່ນ​
ສໍາ​ລັບ​ການ​ແລ່ນ​ໂຄງ​ການ 1.1 ໃນ​ສະ​ບັບ 2.0​:
mono --runtime=v2.0.50727 program.exe

-- ຄວາມປອດໄພ, --security=mode
ເປີດໃຊ້ຕົວຈັດການຄວາມປອດໄພ, ຄຸນສົມບັດທົດລອງປະຈຸບັນໃນ Mono ແລະມັນແມ່ນ
ປິດຕາມຄ່າເລີ່ມຕົ້ນ. ຕົວຢືນຢັນລະຫັດໃໝ່ສາມາດຖືກເປີດໃຊ້ດ້ວຍຕົວເລືອກນີ້ເຊັ່ນກັນ.

ການນໍາໃຊ້ຄວາມປອດໄພໂດຍບໍ່ມີພາລາມິເຕີແມ່ນເທົ່າກັບການໂທຫາມັນດ້ວຍ "cas"
ພາລາມິເຕີ.

ຮູບ​ແບບ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​ແມ່ນ​ສະ​ຫນັບ​ສະ​ຫນູນ​:

ຫຼັກ-clr
ເປີດໃຊ້ລະບົບຄວາມປອດໄພຫຼັກ-clr, ໂດຍປົກກະຕິແລ້ວໃຊ້ສໍາລັບ
ຄໍາຮ້ອງສະຫມັກ Moonlight/Silverlight. ມັນສະຫນອງຄວາມປອດໄພທີ່ງ່າຍດາຍຫຼາຍ
ລະບົບກ່ວາ CAS, ເບິ່ງ http://www.mono-project.com/docs/web/moonlight/ ສໍາລັບການ
ລາຍລະອຽດເພີ່ມເຕີມແລະການເຊື່ອມຕໍ່ກັບຄໍາອະທິບາຍຂອງລະບົບໃຫມ່ນີ້.

ຖືກຕ້ອງ
ເປີດໃຊ້ຕົວກວດສອບໃໝ່ ແລະດໍາເນີນການກວດສອບພື້ນຖານສໍາລັບຄວາມຖືກຕ້ອງຂອງລະຫັດ.
ໃນໂໝດນີ້, ລະຫັດທີ່ບໍ່ປອດໄພ ແລະ P/Invoke ແມ່ນອະນຸຍາດ. ຮູບແບບນີ້ສະຫນອງ a
ການຮັບປະກັນຄວາມປອດໄພທີ່ດີກວ່າແຕ່ວ່າມັນຍັງເປັນໄປໄດ້ສໍາລັບລະຫັດການຄຸ້ມຄອງທີ່ຈະ crash
ໂມໂນ.

ຢັ້ງຢືນໄດ້
ເປີດໃຊ້ຕົວກວດສອບໃໝ່ ແລະເຮັດການຢືນຢັນຢ່າງເຕັມທີ່ຂອງລະຫັດ
ປະ​ຕິ​ບັດ​. ມັນພຽງແຕ່ອະນຸຍາດໃຫ້ປະຕິບັດລະຫັດທີ່ສາມາດຢືນຢັນໄດ້. ລະຫັດທີ່ບໍ່ປອດໄພແມ່ນ
ບໍ່ອະນຸຍາດແຕ່ P/Invoke ແມ່ນ. ໂໝດນີ້ບໍ່ຄວນອະນຸຍາດໃຫ້ລະຫັດທີ່ມີການຈັດການ
ໂມໂນ crash. ການກວດສອບບໍ່ເຄັ່ງຄັດເທົ່າກັບມາດຕະຖານ ECMA 335 ໃນຄໍາສັ່ງ
ເພື່ອໃຫ້ເຂົ້າກັນໄດ້ກັບເວລາແລ່ນ MS.

ລະບົບຄວາມປອດໄພປະຕິບັດລະຫັດຜູ້ໃຊ້: ລະຫັດທີ່ມີຢູ່ໃນ mscorlib ຫຼືທົ່ວໂລກ
cache ການປະກອບແມ່ນມີຄວາມໄວ້ວາງໃຈສະເຫມີ.

--ເຊີບເວີ
ກຳນົດຄ່າເຄື່ອງສະເໝືອນໃຫ້ເໝາະສົມກັບການເຮັດວຽກຂອງເຊີບເວີ
(ໃນປັດຈຸບັນ, ອະນຸຍາດໃຫ້ມີການເລີ່ມຕົ້ນ threadpool ຫນັກກວ່າ).

--verify-ທັງໝົດ
ຢືນຢັນ mscorlib ແລະການປະກອບໃນ cache ສະພາແຫ່ງທົ່ວໂລກສໍາລັບ IL ທີ່ຖືກຕ້ອງ, ແລະທັງຫມົດ
ລະຫັດຜູ້ໃຊ້ສໍາລັບການຢັ້ງຢືນ IL.

ນີ້ແມ່ນແຕກຕ່າງຈາກ -- ຄວາມປອດໄພ's verifiable ຫຼື validil ໃນທາງເລືອກເຫຼົ່ານີ້
ພຽງແຕ່ກວດເບິ່ງລະຫັດຜູ້ໃຊ້ແລະຂ້າມ mscorlib ແລະສະພາແຫ່ງທີ່ມີຢູ່ໃນທົ່ວໂລກ
cache ການປະກອບ.

-V, - ການປ່ຽນແປງ
ພິມຂໍ້ມູນສະບັບ JIT (ການຕັ້ງຄ່າລະບົບ, ຈໍານວນການປ່ອຍແລະສາຂາ
ຊື່ຖ້າມີ).

ການພັດທະນາ OPTIONS


ຕົວເລືອກຕໍ່ໄປນີ້ແມ່ນໃຊ້ເພື່ອຊ່ວຍໃນການພັດທະນາແອັບພລິເຄຊັນ JITed.

--debug, --debug=OPTIONS
ເປີດໂໝດດີບັກໃນເວລາແລ່ນ. ຖ້າ​ຫາກ​ວ່າ​ກອງ​ປະ​ຊຸມ​ໄດ້​ຖືກ​ສັງ​ລວມ​ກັບ​
debugging ຂໍ້ມູນ, ມັນຈະຜະລິດຂໍ້ມູນຈໍານວນເສັ້ນສໍາລັບການຕິດຕາມ stack.

ອາກິວເມັນ OPTIONS ທາງເລືອກແມ່ນບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຕົວເລືອກການດີບັກ.
ທາງເລືອກເຫຼົ່ານີ້ຖືກປິດໄວ້ໂດຍຄ່າເລີ່ມຕົ້ນນັບຕັ້ງແຕ່ພວກມັນສ້າງຂະຫນາດໃຫຍ່ແລະຊ້າກວ່າ
ລະຫັດໃນເວລາແລ່ນ.

ທາງ​ເລືອກ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​ແມ່ນ​ສະ​ຫນັບ​ສະ​ຫນູນ​:

ສຽງໂຫວດທັງຫມົດ ຜະລິດຄວາມຜິດພາດລາຍລະອຽດໃນເວລາທີ່ຖິ້ມ InvalidCastException. ນີ້
ທາງເລືອກຕ້ອງໄດ້ຮັບການເປີດໃຊ້ງານເພາະວ່ານີ້ສ້າງລະຫັດ verbose ຫຼາຍຂຶ້ນໃນເວລາປະຕິບັດ
ເວລາ.

mdb-optimizations
ປິດການທໍາງານການເພີ່ມປະສິດທິພາບ JIT ບາງອັນທີ່ປົກກະຕິແລ້ວຖືກປິດພຽງແຕ່ໃນເວລາທີ່ແລ່ນ
ພາຍໃນຕົວດີບັກ. ນີ້ສາມາດເປັນປະໂຫຍດຖ້າຫາກວ່າທ່ານຕ້ອງການທີ່ຈະຕິດກັບ
ຂະບວນການແລ່ນດ້ວຍ mdb.

gdb ສ້າງ ແລະລົງທະບຽນຂໍ້ມູນການດີບັກດ້ວຍ gdb. ນີ້ແມ່ນພຽງແຕ່ສະຫນັບສະຫນູນ
ໃນບາງເວທີ, ແລະພຽງແຕ່ເມື່ອໃຊ້ gdb 7.0 ຫຼືຫຼັງຈາກນັ້ນ.

--profile[=profile[:profiler_args]]
ເປີດການສ້າງໂປຣໄຟລ໌. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຄໍາຮ້ອງສະຫມັກ profileing ແລະລະຫັດ
ການຄຸ້ມຄອງເບິ່ງພາກສ່ວນ "PROFILING" ແລະ "CODE COVERAGE" ຂ້າງລຸ່ມນີ້.

ທາງເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ຫຼາຍຄັ້ງ, ແຕ່ລະຄັ້ງຈະໂຫລດ
profiler ເພີ່ມເຕີມ. ນີ້ອະນຸຍາດໃຫ້ນັກພັດທະນາໃຊ້ໂມດູນທີ່ຂະຫຍາຍ JIT
ຜ່ານການໂຕ້ຕອບ Mono profile.

--trace[=expression]
ສະແດງຊື່ວິທີການທີ່ພວກມັນຖືກເອີ້ນ. ໂດຍຄ່າເລີ່ມຕົ້ນວິທີການທັງຫມົດແມ່ນຕິດຕາມ. ໄດ້
ການຕິດຕາມສາມາດຖືກປັບແຕ່ງເພື່ອປະກອບມີຫຼືຍົກເວັ້ນວິທີການ, ຫ້ອງຮຽນຫຼືການປະກອບ. ກ
trace expression ແມ່ນລາຍການເປົ້າໝາຍທີ່ແຍກກັນດ້ວຍເຄື່ອງໝາຍຈຸດ, ແຕ່ລະເປົ້າໝາຍສາມາດຖືກນຳໜ້າໄດ້
ດ້ວຍເຄື່ອງໝາຍລົບເພື່ອປິດເປົ້າໝາຍໃດໜຶ່ງ. ຄໍາວ່າ 'ໂຄງການ', 'ທັງຫມົດ' ແລະ
'ພິການ' ມີຄວາມຫມາຍພິເສດ. 'ໂຄງການ' ຫມາຍເຖິງໂຄງການຕົ້ນຕໍ
ປະຕິບັດ, ແລະ 'ທັງຫມົດ' ຫມາຍຄວາມວ່າວິທີການໂທຫາທັງຫມົດ. ທາງເລືອກ 'ພິການ' ຖືກນໍາໃຊ້ເພື່ອ
ເລີ່ມຕົ້ນດ້ວຍການປິດການຕິດຕາມ. ມັນສາມາດຖືກເປີດໃຊ້ໃນຈຸດຕໍ່ມາໃນເວລາໃນ
ໂຄງ​ການ​ໂດຍ​ການ​ສົ່ງ​ສັນ​ຍານ SIGUSR2 ກັບ runtime​. ການປະກອບແມ່ນກໍານົດໂດຍ
ຕົວຢ່າງ, ຊື່ຂອງພວກເຂົາເພື່ອຕິດຕາມການໂທທັງໝົດໃນລະບົບ, ໃຫ້ໃຊ້:

mono --trace=ລະບົບ app.exe

ຫ້ອງຮຽນຖືກລະບຸດ້ວຍ T: prefix. ສໍາ​ລັບ​ຕົວ​ຢ່າງ​, ເພື່ອ​ຕິດ​ຕາມ​ການ​ໂທ​ທັງ​ຫມົດ​ທີ່​
ຫ້ອງຮຽນ System.String, ໃຊ້:

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

ແລະວິທີການສ່ວນບຸກຄົນແມ່ນອ້າງອີງດ້ວຍ M: ຄໍານໍາຫນ້າ, ແລະວິທີການມາດຕະຖານ
ຫມາຍເຫດ:

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

ຂໍ້ຍົກເວັ້ນຍັງສາມາດຕິດຕາມໄດ້, ມັນຈະເຮັດໃຫ້ເກີດການຕີພິມ stack ທຸກໆຄັ້ງ
ຂໍ້ຍົກເວັ້ນຂອງປະເພດທີ່ລະບຸແມ່ນຖືກຖິ້ມ. ປະເພດຂໍ້ຍົກເວັ້ນສາມາດຖືກກໍານົດ
ໂດຍມີ ຫຼືບໍ່ມີ namespace, ແລະເພື່ອຕິດຕາມການຍົກເວັ້ນທັງໝົດ, ໃຫ້ລະບຸ 'ທັງໝົດ' ເປັນ
ພິມຊື່.

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

ດັ່ງທີ່ໄດ້ລະບຸໄວ້ກ່ອນຫນ້ານີ້, ກົດລະບຽບຕ່າງໆສາມາດຖືກກໍານົດໃນເວລາດຽວ:

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

ທ່ານສາມາດຍົກເວັ້ນຕ່ອນ, ຕົວຢ່າງຕໍ່ໄປຕາມຮອຍໂທຫາ System.String ຍົກເວັ້ນ
the System.String:Concat method.

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

ທ່ານ​ສາ​ມາດ​ຕິດ​ຕາມ​ການ​ຄຸ້ມ​ຄອງ​ການ​ປ່ຽນ​ແປງ​ທີ່​ບໍ່​ມີ​ການ​ຄຸ້ມ​ຄອງ​ໂດຍ​ການ​ນໍາ​ໃຊ້ wrapper qualifier​:

mono --trace=wrapper app.exe

ສຸດທ້າຍ, namespaces ສາມາດຖືກກໍານົດໂດຍໃຊ້ N: prefix:

mono --trace=N:System.Xml

--no-x86-stack-align
ຢ່າຈັດວາງ stack frames ຢູ່ໃນສະຖາປັດຕະຍະກໍາ x86. ໂດຍຄ່າເລີ່ມຕົ້ນ, Mono ຈັດວາງ stack
ກອບເປັນ 16 bytes ໃນ x86, ດັ່ງນັ້ນຈຸດລອຍທ້ອງຖິ່ນແລະຕົວແປ SIMD ສາມາດເປັນ
ສອດຄ່ອງຢ່າງຖືກຕ້ອງ. ຕົວເລືອກນີ້ປິດການຈັດຮຽງ, ເຊິ່ງປົກກະຕິແລ້ວຈະຊ່ວຍປະຢັດອັນຫນຶ່ງ
intruction ຕໍ່ໂທ, ແຕ່ອາດຈະເຮັດໃຫ້ຈຸດທີ່ເລື່ອນໄດ້ຕ່ໍາຢ່າງຫຼວງຫຼາຍແລະ
ປະສິດທິພາບ SIMD.

--jitmap
ສ້າງແຜນທີ່ວິທີການ JIT ໃນໄຟລ໌ /tmp/perf-PID.map. ໄຟລ໌ນີ້ຖືກນໍາໃຊ້ຫຼັງຈາກນັ້ນ, ສໍາລັບ
ຕົວຢ່າງ, ໂດຍເຄື່ອງມື perf ລວມຢູ່ໃນ kernels Linux ທີ່ຜ່ານມາ. ແຕ່ລະແຖວໃນໄຟລ໌
ມີ:

ຊື່ວິທີການ HEXADDR HEXSIZE

ໃນປັດຈຸບັນທາງເລືອກນີ້ແມ່ນສະຫນັບສະຫນູນຢູ່ໃນ Linux ເທົ່ານັ້ນ.

JIT ຜູ້ຮັກສາ OPTIONS


ຕົວເລືອກການຮັກສາແມ່ນໃຊ້ໂດຍຜູ້ທີ່ພັດທະນາ runtime ຕົວມັນເອງ, ແລະບໍ່ແມ່ນ
ປົກກະຕິແລ້ວມີຄວາມສົນໃຈກັບຜູ້ໃຊ້ runtime ຫຼືນັກພັດທະນາ.

--ຢຸດ ວິທີການ
ແຊກຈຸດຢຸດກ່ອນວິທີການທີ່ມີຊື່ແມ່ນ 'ວິທີການ'
(namespace.class:methodname). ໃຊ້ 'ຫຼັກ' ເປັນຊື່ວິທີການເພື່ອໃສ່ຈຸດຢຸດ
ວິທີການຕົ້ນຕໍຂອງຄໍາຮ້ອງສະຫມັກ. ທ່ານສາມາດນໍາໃຊ້ມັນກັບ generics, ສໍາລັບການຍົກຕົວຢ່າງ
"System.Collections.Generic.Queue`1:Peek"

--breakonex
ແຊກຈຸດຢຸດກ່ຽວກັບການຍົກເວັ້ນ. ນີ້ອະນຸຍາດໃຫ້ທ່ານເພື່ອ debug ຄໍາຮ້ອງສະຫມັກຂອງທ່ານກັບ
ເຄື່ອງດີບັ໊ກພື້ນເມືອງເມື່ອຂໍ້ຍົກເວັ້ນຖືກຖິ້ມ.

--ລວບລວມ ຊື່
ນີ້ລວບລວມວິທີການ (namespace.name:methodname), ນີ້ແມ່ນໃຊ້ສໍາລັບການທົດສອບ
ການປະຕິບັດການລວບລວມຫຼືກວດເບິ່ງຜົນຜະລິດຂອງເຄື່ອງກໍາເນີດລະຫັດ.

--compileall
ລວບລວມວິທີການທັງຫມົດໃນສະພາແຫ່ງ. ນີ້ແມ່ນໃຊ້ເພື່ອທົດສອບ compiler
ການປະຕິບັດຫຼືກວດເບິ່ງຜົນຜະລິດຂອງເຄື່ອງກໍາເນີດລະຫັດ

--graph=TYPE ວິທີການ
ນີ້ສ້າງໄຟລ໌ postscript ທີ່ມີເສັ້ນສະແດງທີ່ມີລາຍລະອຽດກ່ຽວກັບທີ່ກໍານົດໄວ້
method (namespace.name:methodname). ອັນນີ້ຕ້ອງການ 'ຈຸດ' ແລະ ghostview ເປັນ
ຕິດຕັ້ງ (ມັນຄາດວ່າ Ghostview ຈະຖືກເອີ້ນວ່າ "gv"). ເສັ້ນສະແດງຕໍ່ໄປນີ້ແມ່ນ
ມີ:
cfg ຕາຕະລາງການໄຫຼຂອງການຄວບຄຸມ (CFG)
dtree ຕົ້ນໄມ້ Dominator
ລະຫັດ CFG ສະແດງລະຫັດ
ssa CFG ສະແດງລະຫັດຫຼັງຈາກການແປ SSA
optcode CFG ສະແດງລະຫັດຫຼັງຈາກການເພີ່ມປະສິດທິພາບ IR
ກຣາບບາງອັນຈະສາມາດໃຊ້ໄດ້ພຽງແຕ່ຖ້າການເພີ່ມປະສິດທິພາບບາງຢ່າງຖືກເປີດໃຊ້.

--ncompile
ແນະນໍາ runtime ກ່ຽວກັບຈໍານວນເວລາທີ່ວິທີການກໍານົດໂດຍ --compile
(ຫຼືວິທີການທັງຫມົດຖ້າ --compileall ຖືກນໍາໃຊ້) ທີ່ຈະລວບລວມ. ນີ້ແມ່ນໃຊ້ສໍາລັບ
ການທົດສອບປະສິດທິພາບເຄື່ອງກໍາເນີດລະຫັດ.

--ສະຖິຕິ
ສະແດງຂໍ້ມູນກ່ຽວກັບການເຮັດວຽກທີ່ເຮັດໂດຍ runtime ໃນລະຫວ່າງການປະຕິບັດການ
ຄໍາຮ້ອງສະຫມັກ.

--wapi=hps|semdel
ປະຕິບັດການບໍາລຸງຮັກສາຂະບວນການແບ່ງປັນຂໍ້ມູນ. semdel ຈະລຶບທົ່ວໂລກ
ປະເພດ. hps ຈະລາຍຊື່ຕົວຈັບທີ່ໃຊ້ໃນປັດຈຸບັນ.

-v, -- verbose
ເພີ່ມລະດັບ verbosity, ແຕ່ລະຄັ້ງທີ່ມີລາຍຊື່, ເພີ່ມ verbosity
ລະດັບທີ່ຈະປະກອບມີຂໍ້ມູນເພີ່ມເຕີມ (ລວມທັງ, ສໍາລັບການຍົກຕົວຢ່າງ, disassembly ຂອງ
ລະຫັດພື້ນເມືອງທີ່ຜະລິດ, ຂໍ້ມູນຕົວເລືອກລະຫັດແລະອື່ນໆ).

ແນບ ສະຫນັບສະຫນູນ


Mono runtime ອະນຸຍາດໃຫ້ຂະບວນການພາຍນອກຕິດກັບຂະບວນການແລ່ນແລະການໂຫຼດ
ປະກອບເຂົ້າໃນໂຄງການແລ່ນ. ເພື່ອຕິດກັບຂະບວນການ, ໂປໂຕຄອນພິເສດແມ່ນ
ປະຕິບັດຢູ່ໃນສະພາ Mono.Management.

ດ້ວຍການສະຫນັບສະຫນູນນີ້ມັນເປັນໄປໄດ້ທີ່ຈະໂຫລດອຸປະກອນທີ່ມີຈຸດເຂົ້າ (ພວກເຂົາແມ່ນ
ສ້າງດ້ວຍ -target:exe ຫຼື -target:winexe) ເພື່ອໂຫລດແລະປະຕິບັດໃນຂະບວນການ Mono.

ລະຫັດຖືກໂຫລດເຂົ້າໄປໃນໂດເມນຮາກ, ແລະມັນຈະເລີ່ມຕົ້ນການປະຕິບັດໃນເວລາພິເສດ
ຄັດຕິດກະທູ້. ໂຄງການທີ່ຕິດຄັດມາຄວນສ້າງກະທູ້ຂອງຕົນເອງແລະກັບຄືນຫຼັງຈາກນັ້ນ
ຄຳຮຽກຮ້ອງ.

ສະຫນັບສະຫນູນນີ້ອະນຸຍາດໃຫ້ສໍາລັບຕົວຢ່າງ debugging ຄໍາຮ້ອງສະຫມັກໂດຍການມີ cshell shell ຕິດ
ກັບຂະບວນການແລ່ນ.

ການປະກອບຂໍ້ມູນ


mono runtime ປະກອບມີ profiler ທີ່ສາມາດຖືກນໍາໃຊ້ເພື່ອຄົ້ນຫາປະສິດທິພາບຕ່າງໆ
ບັນຫາທີ່ກ່ຽວຂ້ອງໃນຄໍາຮ້ອງສະຫມັກຂອງທ່ານ. profiler ຖືກເປີດໃຊ້ໂດຍການຖ່າຍທອດ --profile
ການໂຕ້ຖຽງແຖວຄໍາສັ່ງກັບ Mono runtime, ຮູບແບບແມ່ນ:

--profile[=profile[:profiler_args]]

Mono ມີຕົວສ້າງ profiler ທີ່ເອີ້ນວ່າ 'default' (ແລະຍັງເປັນຄ່າເລີ່ມຕົ້ນຖ້າບໍ່ມີການໂຕ້ຖຽງ.
ລະບຸໄວ້), ແຕ່ນັກພັດທະນາສາມາດຂຽນ profilers ແບບກຳນົດເອງ, ເບິ່ງພາກ "Custom PROFILERS"
ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.

ຖ້າຫາກວ່າເປັນ ໂປຣໄຟລ ບໍ່​ໄດ້​ລະ​ບຸ​ໄວ້​, profiler ໄວ້​ໃນ​ຕອນ​ຕົ້ນ​ແມ່ນ​ໄດ້​ຖືກ​ນໍາ​ໃຊ້​. ໄດ້ profiler_args ເປັນ
ຕົວເລືອກສະຕຣິງສະເພາະ profiler ສໍາລັບ profiler ຕົວຂອງມັນເອງ. profiler ເລີ່ມຕົ້ນຍອມຮັບ
ທາງ​ເລືອກ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້ 'ຈັດສັນ' ການ​ບໍ​ລິ​ໂພກ​ຄວາມ​ຊົງ​ຈໍາ profile ໂດຍ​ຄໍາ​ຮ້ອງ​ສະ​ຫມັກ​; 'ເວລາ' ກັບ
profile ທີ່ໃຊ້ເວລາໃຊ້ເວລາໃນແຕ່ລະປົກກະຕິ; 'jit' ເພື່ອເກັບກໍາເວລາທີ່ໃຊ້ວິທີການລວບລວມ JIT
ແລະ 'stat' ເພື່ອປະຕິບັດຕົວຢ່າງສະຖິຕິສະຖິຕິ. ຖ້າບໍ່ມີທາງເລືອກທີ່ສະຫນອງໃຫ້
ຄ່າເລີ່ມຕົ້ນແມ່ນ 'ຈັດສັນ, ເວລາ, jit'.

ໂດຍຄ່າເລີ່ມຕົ້ນ, ຂໍ້ມູນໂປຣໄຟລ໌ຈະຖືກພິມອອກເປັນ stdout: ເພື່ອປ່ຽນອັນນີ້, ໃຫ້ໃຊ້ 'file=filename'
ທາງ​ເລືອກ​ທີ່​ຈະ​ອອກ​ຂໍ້​ມູນ​ກັບ​ຊື່​ໄຟລ​໌​. ຍົກ​ຕົວ​ຢ່າງ:

mono --profile program.exe

ທີ່ຈະດໍາເນີນການໂຄງການທີ່ມີ profiler ເລີ່ມຕົ້ນແລະຈະເຮັດທີ່ໃຊ້ເວລາແລະການຈັດສັນ
ການສ້າງໂປຣໄຟລ໌.

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

ຈະເຮັດຕົວຢ່າງສະຖິຕິສະຖິຕິແລະການຈັດສັນໂປຣໄຟລ໌ກ່ຽວກັບ program.exe. ໂປຣໄຟລ໌
ຂໍ້ມູນຖືກໃສ່ໃນ prof.out. ໃຫ້ສັງເກດວ່າ profiler ສະຖິຕິມີ overhead ຕ່ໍາຫຼາຍແລະ
ຄວນເປັນ profiler ທີ່ຕ້ອງການໃຊ້ (ເພື່ອໃຫ້ຜົນຜະລິດທີ່ດີກວ່າໃຊ້ເສັ້ນທາງເຕັມໄປຫາ mono
binary ໃນເວລາທີ່ແລ່ນແລະໃຫ້ແນ່ໃຈວ່າທ່ານໄດ້ຕິດຕັ້ງ addr2line utility ທີ່ມາຈາກ
ຊຸດ binutils).

LOG ໂປຣໄຟລ


ນີ້ແມ່ນ profiler ທີ່ກ້າວຫນ້າທີ່ສຸດ.

ໂມໂນ log profiler ສາມາດຖືກນໍາໃຊ້ເພື່ອເກັບກໍາຂໍ້ມູນຈໍານວນຫລາຍກ່ຽວກັບໂຄງການທີ່ເຮັດວຽກ
ໃນເວລາແລ່ນ Mono. ຂໍ້​ມູນ​ນີ້​ສາ​ມາດ​ຖືກ​ນໍາ​ໃຊ້ (ທັງ​ໃນ​ຂະ​ນະ​ທີ່​ຂະ​ບວນ​ການ​ແມ່ນ​ແລ່ນ​ແລະ​ພາຍ​ຫຼັງ​)
ເພື່ອ​ເຮັດ​ການ​ວິ​ເຄາະ​ພຶດ​ຕິ​ກໍາ​ຂອງ​ໂຄງ​ການ​, ການ​ກໍາ​ນົດ​ການ​ນໍາ​ໃຊ້​ຊັບ​ພະ​ຍາ​ກອນ​, ບັນ​ຫາ​ການ​ປະ​ຕິ​ບັດ​ຫຼື​
ເຖິງແມ່ນວ່າຊອກຫາຮູບແບບການປະຕິບັດໂດຍສະເພາະ.

ນີ້ແມ່ນສໍາເລັດໂດຍການບັນທຶກເຫດການທີ່ສະຫນອງໃຫ້ໂດຍ Mono runtime ຜ່ານ
ການໂຕ້ຕອບ profileing ແລະແຕ່ລະໄລຍະການຂຽນໃຫ້ເຂົາເຈົ້າກັບໄຟລ໌ທີ່ສາມາດກວດສອບໄດ້ຕໍ່ມາ
ກັບ ບົດລາຍງານ mprof(1) ເຄື່ອງມື.

ຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບວິທີການນໍາໃຊ້ log profiler ແມ່ນມີຢູ່ໃນ ບົດລາຍງານ mprof(1​)
ຫນ້າ.

CUSTOM ໂປຣໄຟລ


Mono ໃຫ້ກົນໄກການໂຫຼດໂມດູນ profile ອື່ນເຊິ່ງໃນຮູບແບບການແບ່ງປັນ
ຫ້ອງສະໝຸດ. ໂມດູນໂປຣໄຟລ໌ເຫຼົ່ານີ້ສາມາດເຊື່ອມຕໍ່ກັບພາກສ່ວນຕ່າງໆຂອງ Mono runtime ກັບ
ລວບລວມຂໍ້ມູນກ່ຽວກັບລະຫັດທີ່ຖືກປະຕິບັດ.

ເພື່ອໃຊ້ profiler ພາກສ່ວນທີສາມທ່ານຕ້ອງສົ່ງຊື່ profiler ກັບ Mono, ເຊັ່ນນີ້:

mono --profile=ໂປຣແກມແບບກຳນົດເອງ.exe

ໃນຕົວຢ່າງຂ້າງເທິງ Mono ຈະໂຫລດ profiler ທີ່ກໍານົດຂອງຜູ້ໃຊ້ຈາກຫ້ອງສະຫມຸດທີ່ແບ່ງປັນ
`mono-profiler-custom.so'. ໂມດູນໂປຣໄຟລ໌ນີ້ຈະຕ້ອງຢູ່ໃນຫ້ອງສະໝຸດຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວຂອງທ່ານ
ເສັ້ນທາງ

ບັນຊີລາຍຊື່ຂອງໂປລແກລມພາກສ່ວນທີສາມອື່ນໆແມ່ນມີຢູ່ໃນເວັບໄຊທ໌ຂອງ Mono (www.mono-
project.com/docs/advanced/performance-tips/)

ໂປຣໄຟລ໌ແບບກຳນົດເອງຖືກຂຽນເປັນຫ້ອງສະໝຸດທີ່ແບ່ງປັນ. ຫໍສະໝຸດທີ່ໃຊ້ຮ່ວມກັນຕ້ອງເອີ້ນວ່າ `mono-
profiler-NAME.so' ບ່ອນທີ່ `NAME' ແມ່ນຊື່ຂອງ profiler ຂອງທ່ານ.

ສໍາ​ລັບ​ຕົວ​ຢ່າງ​ຂອງ​ວິ​ທີ​ການ​ຂຽນ profiler ຂອງ​ຕົນ​ເອງ​ເບິ່ງ​ໃນ​ຕົ້ນ​ໄມ້ Mono ແຫຼ່ງ​ສໍາ​ລັບ​ການ​ໃນ​
ຕົວຢ່າງ/profiler.c.

CODE COVERAGE


ເຮືອ Mono ທີ່ມີໂມດູນການຄຸ້ມຄອງລະຫັດ. ໂມດູນນີ້ຖືກເປີດໃຊ້ໂດຍການໃຊ້ Mono
--profile=cov ທາງເລືອກ. ຮູບແບບແມ່ນ: --profile=cov[:assembly-name[/namespace]] ທົດ​ສອບ
suite.exe

ໂດຍ​ການ​ປົກ​ຫຸ້ມ​ຂອງ​ລະ​ຫັດ​ໃນ​ຕອນ​ຕົ້ນ​ຈະ​ເປັນ​ຄ່າ​ເລີ່ມ​ຕົ້ນ​ຂອງ​ການ​ປະ​ກອບ​ທັງ​ຫມົດ​ທີ່​ໂຫຼດ​, ທ່ານ​ສາ​ມາດ​ຈໍາ​ກັດ​ໂດຍ​ການ​ນີ້​
ການ​ລະ​ບຸ​ຊື່​ການ​ປະ​ກອບ​, ສໍາ​ລັບ​ການ​ຍົກ​ຕົວ​ຢ່າງ​ເພື່ອ​ປະ​ຕິ​ບັດ​ການ​ຄຸ້ມ​ຄອງ​ລະ​ຫັດ​ໃນ​ການ​ປົກ​ກະ​ຕິ​ຂອງ​ທ່ານ​
ການນໍາໃຊ້ໂຄງການ, ສໍາລັບຕົວຢ່າງ, ເສັ້ນຄໍາສັ່ງຕໍ່ໄປນີ້ຈໍາກັດການຄຸ້ມຄອງລະຫັດເປັນປະຈໍາ
ໃນ "ສາທິດ" ສະພາແຫ່ງ:

mono --profile=cov:demo demo.exe

ສັງເກດເຫັນວ່າ assembly-ຊື່ ບໍ່ລວມເອົາການຂະຫຍາຍ.

ທ່ານ​ສາ​ມາດ​ຈໍາ​ກັດ​ຕື່ມ​ອີກ​ການ​ອອກ​ຂອງ​ລະ​ຫັດ​ການ​ຄຸ້ມ​ຄອງ​ໂດຍ​ການ​ລະ​ບຸ namespace​:

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

ເຊິ່ງຈະປະຕິບັດພຽງແຕ່ການຄຸ້ມຄອງລະຫັດໃນການປະກອບແລະ namespace ທີ່ກໍານົດໄວ້.

ຜົນຜະລິດປົກກະຕິເບິ່ງຄືວ່າ:

ບໍ່ຄອບຄຸມ: ໝວດ:.ctor ()
ບໍ່ຄອບຄຸມ: ຊັ້ນ: A ()
ບໍ່ຄອບຄຸມ: ຄົນຂັບ:.ctor ()
ບໍ່ຄອບຄຸມ: ຄົນຂັບ: ວິທີການ ()
ການຄຸ້ມຄອງບາງສ່ວນ: ຄົນຂັບລົດ: ຫຼັກ ()
ຊົດເຊີຍ 0x000a

ການຊົດເຊີຍທີ່ສະແດງແມ່ນ IL offsets.

ເຄື່ອງມືຄຸ້ມຄອງທີ່ມີປະສິດທິພາບກວ່າແມ່ນມີຢູ່ໃນໂມດູນ 'monocov'. ເບິ່ງ ໂມໂນໂຄ(1​)
ຫນ້າຜູ້ຊາຍສໍາລັບລາຍລະອຽດ.

ກຳ ລັງດີບັກ ໂລກເອດສ


ເພື່ອແກ້ບັນຫາແອັບພລິເຄຊັນທີ່ມີການຈັດການ, ທ່ານສາມາດນໍາໃຊ້ໄດ້ mdb ຄໍາສັ່ງ, debugger ເສັ້ນຄໍາສັ່ງ.

ມັນເປັນໄປໄດ້ທີ່ຈະໄດ້ຮັບການຕິດຕາມ stack ຂອງກະທູ້ທີ່ໃຊ້ວຽກທັງຫມົດໃນ Mono ໂດຍການສົ່ງ
QUIT ສັນ​ຍານ​ກັບ Mono​, ທ່ານ​ສາ​ມາດ​ເຮັດ​ໄດ້​ຈາກ​ບັນ​ຊີ​ຄໍາ​ສັ່ງ​, ເຊັ່ນ​ນີ້​:

ຂ້າ -QUIT pid

ບ່ອນທີ່ pid ເປັນ Process ID ຂອງຂະບວນການ Mono ທີ່ທ່ານຕ້ອງການກວດສອບ. ຂະບວນການຈະ
ສືບຕໍ່ແລ່ນຕໍ່ໄປ, ແຕ່ລັດຂອງມັນບໍ່ໄດ້ຮັບການຮັບປະກັນ.

ທີ່ສໍາຄັນ: ນີ້​ແມ່ນ​ເປັນ​ກົນ​ໄກ​ການ​ແກ້​ໄຂ​ສຸດ​ທ້າຍ​ສໍາ​ລັບ​ຄໍາ​ຮ້ອງ​ສະ​ຫມັກ debugging ແລະ​ບໍ່​ຄວນ​ຈະ​ເປັນ​
ໃຊ້ເພື່ອຕິດຕາມ ຫຼື ກວດສອບແອັບພລິເຄຊັນການຜະລິດ. ຄວາມສົມບູນຂອງ runtime ຫຼັງຈາກ
ການ​ສົ່ງ​ສັນ​ຍານ​ນີ້​ບໍ່​ໄດ້​ຮັບ​ການ​ຮັບ​ປະ​ກັນ​ແລະ​ຄໍາ​ຮ້ອງ​ສະ​ຫມັກ​ອາດ​ຈະ​ຂັດ​ຫຼື​ຢຸດ​ຢູ່​ໃນ​ໃດໆ​
ຈຸດ​ທີ່​ໄດ້​ຮັບ​ຫຼັງ​ຈາກ​ນັ້ນ​.

ໄດ້ --debug=casts ທາງ​ເລືອກ​ສາ​ມາດ​ຖືກ​ນໍາ​ໃຊ້​ເພື່ອ​ເອົາ​ຂໍ້​ມູນ​ລະ​ອຽດ​ເພີ່ມ​ເຕີມ​ສໍາ​ລັບ​ການ Cast ທີ່​ບໍ່​ຖືກ​ຕ້ອງ​
ການດໍາເນີນງານ, ມັນຈະສະຫນອງຂໍ້ມູນກ່ຽວກັບປະເພດທີ່ກ່ຽວຂ້ອງ.

ທ່ານສາມາດນໍາໃຊ້ຕົວແປສະພາບແວດລ້ອມ MONO_LOG_LEVEL ແລະ MONO_LOG_MASK ເພື່ອຮັບ verbose
debugging output ກ່ຽວກັບການປະຕິບັດຄໍາຮ້ອງສະຫມັກຂອງທ່ານພາຍໃນ Mono.

ໄດ້ MONO_LOG_LEVEL ຕົວປ່ຽນແປງສະພາບແວດລ້ອມຖ້າຕັ້ງ, ລະດັບການບັນທຶກຈະຖືກປ່ຽນເປັນຊຸດ
ຄ່າ. ຄ່າທີ່ເປັນໄປໄດ້ແມ່ນ "ຄວາມຜິດພາດ", "ສໍາຄັນ", "ຄໍາເຕືອນ", "ຂໍ້ຄວາມ", "ຂໍ້ມູນ", "ດີບັກ". ໄດ້
ຄ່າເລີ່ມຕົ້ນແມ່ນ "ຄວາມຜິດພາດ". ຂໍ້ຄວາມທີ່ມີລະດັບການບັນທຶກສູງກວ່າ ຫຼືເທົ່າກັບບັນທຶກ
ລະດັບຈະຖືກພິມເປັນ stdout/stderr.

ໃຊ້ "ຂໍ້ມູນ" ເພື່ອຕິດຕາມການໂຫຼດແບບເຄື່ອນໄຫວຂອງສະພາແຫ່ງ.

ການນໍາໃຊ້ MONO_LOG_MASK ຕົວປ່ຽນແປງສະພາບແວດລ້ອມເພື່ອຈໍາກັດຂອບເຂດຂອງຂໍ້ຄວາມທີ່ທ່ານໄດ້ຮັບ: ຖ້າ
ທີ່ກໍານົດໄວ້, ຫນ້າກາກບັນທຶກຖືກປ່ຽນເປັນຄ່າທີ່ກໍານົດໄວ້. ຄ່າທີ່ເປັນໄປໄດ້ແມ່ນ "asm" (assembly
loader), "type", "dll" (ຕົວໂຫຼດຫ້ອງສະຫມຸດພື້ນເມືອງ), "gc" (ຕົວເກັບຂີ້ເຫຍື້ອ), "cfg" (config
file loader), "aot" (precompiler), "ຄວາມປອດໄພ" (ເຊັ່ນ: Moonlight CoreCLR ສະຫນັບສະຫນູນ) ແລະ "ທັງຫມົດ".
ຄ່າເລີ່ມຕົ້ນແມ່ນ "ທັງຫມົດ". ການປ່ຽນແປງມູນຄ່າຫນ້າກາກອະນຸຍາດໃຫ້ທ່ານສະແດງຂໍ້ຄວາມເທົ່ານັ້ນ
ສໍາລັບອົງປະກອບສະເພາະໃດຫນຶ່ງ. ທ່ານ​ສາ​ມາດ​ນໍາ​ໃຊ້​ຫຼາຍ​ຫນ້າ​ກາກ​ໂດຍ​ການ​ເຄື່ອງ​ຫມາຍ​ຈຸດ​ແຍກ​ພວກ​ເຂົາ​. ຍົກ​ຕົວ​ຢ່າງ
ເພື່ອເບິ່ງຂໍ້ຄວາມ config ແລະຂໍ້ຄວາມ loader ປະກອບທີ່ທ່ານຕັ້ງຫນ້າກາກເປັນ "asm,cfg".

ຕໍ່ໄປນີ້ແມ່ນການນໍາໃຊ້ທົ່ວໄປເພື່ອຕິດຕາມບັນຫາກັບ P/Invoke:

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

ກຳ ລັງດີບັກ ກັບ LLDB


ຖ້າທ່ານກໍາລັງໃຊ້ LLDB, ທ່ານສາມາດນໍາໃຊ້ mono.py script ເພື່ອພິມຂໍ້ມູນພາຍໃນບາງຢ່າງ
ໂຄງສ້າງກັບມັນ. ເພື່ອໃຊ້ມັນ, ເພີ່ມອັນນີ້ໃສ່ຂອງເຈົ້າ $HOME/.lldbinit file:
ນຳເຂົ້າສະຄຣິບຄຳສັ່ງ $PREFIX/lib/mono/lldb/mono.py

ບ່ອນທີ່ $PREFIX ແມ່ນຄ່ານຳໜ້າທີ່ທ່ານໃຊ້ເມື່ອທ່ານກຳນົດຄ່າ Mono (ໂດຍປົກກະຕິ / usr).

ເມື່ອອັນນີ້ສຳເລັດແລ້ວ, ທ່ານສາມາດກວດສອບໂຄງສ້າງຂໍ້ມູນ Mono Runtime ບາງອັນ, ຕົວຢ່າງ:
(lldb) p ວິທີການ

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

SERIALIZATION


ເຄື່ອງຈັກ serialization XML ຂອງ Mono ໂດຍຄ່າເລີ່ມຕົ້ນຈະໃຊ້ວິທີການສະທ້ອນກັບ
serialize ທີ່ອາດຈະຊ້າສໍາລັບການປະມວນຜົນຢ່າງຕໍ່ເນື່ອງ (ຄໍາຮ້ອງສະຫມັກການບໍລິການເວັບໄຊຕ໌). ໄດ້
ເຄື່ອງຈັກ serialization ຈະກໍານົດເວລາທີ່ຫ້ອງຮຽນຕ້ອງໃຊ້ serializer ທີ່ປັບດ້ວຍມືໂດຍອີງໃສ່
ຕົວກໍານົດການຈໍານວນຫນ້ອຍຫນຶ່ງແລະຖ້າຈໍາເປັນມັນຈະຜະລິດ C# serializer ປັບແຕ່ງສໍາລັບປະເພດຂອງທ່ານ
ໃນເວລາແລ່ນ. ນີ້ serializer ປັບແຕ່ງຫຼັງຈາກນັ້ນໄດ້ຮັບການໂຫຼດແບບເຄື່ອນໄຫວເຂົ້າໄປໃນຂອງທ່ານ
ຄໍາຮ້ອງສະຫມັກ.

ທ່ານສາມາດຄວບຄຸມອັນນີ້ດ້ວຍຕົວແປສະພາບແວດລ້ອມ MONO_XMLSERIALIZER_THS.

ຄຸນຄ່າທີ່ເປັນໄປໄດ້ແມ່ນ `ບໍ່' ເພື່ອປິດການນຳໃຊ້ C# customizer serializer, ຫຼື an
integer ທີ່ເປັນຈໍານວນຕໍາ່ສຸດທີ່ຂອງການນໍາໃຊ້ກ່ອນທີ່ຈະ runtime ຈະຜະລິດ custom
serializer (0 ຈະຜະລິດ serializer custom ໃນການເຂົ້າເຖິງຄັ້ງທໍາອິດ, 50 ຈະຜະລິດ a
serializer ໃນການນໍາໃຊ້ທີ 50). Mono ຈະກັບຄືນໄປຫາ serializer ທີ່ຖືກຕີຄວາມ ໝາຍ ຖ້າ
ການຜະລິດ serializer somehow ລົ້ມເຫລວ. ພຶດຕິກໍານີ້ສາມາດຖືກປິດໃຊ້ງານໄດ້ໂດຍການຕັ້ງຄ່າທາງເລືອກ
`nofallback' (ຕົວຢ່າງ: MONO_XMLSERIALIZER_THS=0,nofallback).

ENVIRONMENT ຄວາມຮັບຜິດຊອບ


GC_DONT_GC
ປິດການເກັບຂີ້ເຫຍື້ອໃນ Mono. ອັນນີ້ຄວນຈະຖືກໃຊ້ສໍາລັບການດີບັກເທົ່ານັ້ນ
ຈຸດປະສົງ

LVM_COUNT
ເມື່ອ Mono ຖືກລວບລວມດ້ວຍການສະຫນັບສະຫນູນ LLVM, ນີ້ສັ່ງໃຫ້ runtime ຢຸດໃຊ້
LLVM ຫຼັງຈາກຈໍານວນທີ່ກໍານົດຂອງວິທີການແມ່ນ JITed. ນີ້ແມ່ນເຄື່ອງມືທີ່ໃຊ້ໃນ
ການວິນິດໄສເພື່ອຊ່ວຍແຍກບັນຫາໃນ backend ການສ້າງລະຫັດ. ຍົກ​ຕົວ​ຢ່າງ
LLVM_COUNT=10 ຈະລວບລວມພຽງແຕ່ 10 ວິທີການກັບ LLVM ແລະຫຼັງຈາກນັ້ນປ່ຽນເປັນ Mono
ເຄື່ອງຈັກ JIT. LLVM_COUNT=0 ຈະປິດການໃຊ້ງານເຄື່ອງຈັກ LLVM ທັງຫມົດ.

MONO_AOT_CACHE
ຖ້າຕັ້ງ, ຕົວແປນີ້ຈະສັ່ງໃຫ້ Mono ລວບລວມການປະກອບໃຫມ່ລ່ວງໜ້າ
ຕ້ອງການແລະເກັບຮັກສາຜົນໄດ້ຮັບເຂົ້າໄປໃນ cache ໃນ ~/.mono/aot-cache.

MONO_ASPNET_INHIBIT_SETTINGSMAP
Mono ມີຄຸນສົມບັດທີ່ອະນຸຍາດໃຫ້ແກ້ໄຂການຕັ້ງຄ່າໃນໄຟລ໌ .config
ສົ່ງກັບ Mono ໂດຍໃຊ້ແຜນທີ່ສ່ວນ config. ຜູ້ສ້າງແຜນທີ່ແລະແຜນທີ່
ກົດລະບຽບແມ່ນຖືກກໍານົດໄວ້ໃນໄຟລ໌ $prefix/etc/mono/2.0/settings.map ແລະ, ທາງເລືອກໃນ
ໄຟລ໌ settings.map ທີ່ພົບເຫັນຢູ່ໃນໄດເລກະທໍລີລະດັບສູງສຸດຂອງແອັບພລິເຄຊັນ ASP.NET ຂອງທ່ານ.
ທັງສອງໄຟລ໌ຖືກອ່ານໂດຍ System.Web ໃນການເລີ່ມຕົ້ນແອັບພລິເຄຊັນ, ຖ້າພວກເຂົາຖືກພົບເຫັນຢູ່ທີ່
ຂ້າງເທິງສະຖານທີ່. ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ບໍ່​ຕ້ອງ​ການ​ທີ່​ຈະ​ເຮັດ​ແຜນ​ທີ່​ທີ່​ທ່ານ​ສາ​ມາດ​ຕັ້ງ​ຄ່າ​ນີ້​
ຕົວປ່ຽນແປງໃນສະພາບແວດລ້ອມຂອງທ່ານກ່ອນທີ່ຈະເລີ່ມຕົ້ນຄໍາຮ້ອງສະຫມັກແລະບໍ່ມີການດໍາເນີນການໃດໆ
ປະຕິບັດ.

MONO_ASPNET_WEBCONFIG_CACHESIZE
Mono ມີ cache ຂອງວັດຖຸ ConfigSection ສໍາລັບເລັ່ງ WebConfigurationManager
ສອບຖາມ. ຂະຫນາດເລີ່ມຕົ້ນຂອງມັນແມ່ນ 100 ລາຍການ, ແລະເມື່ອຕ້ອງການລາຍການຫຼາຍ, cache
ການ​ຂັບ​ໄລ່​ເລີ່ມ​ເກີດ​ຂຶ້ນ​. ຖ້າ​ຫາກ​ວ່າ​ການ​ຂັບ​ໄລ່​ແມ່ນ​ເລື້ອຍໆ​ເກີນ​ໄປ, ນີ້​ສາ​ມາດ​ບັງ​ຄັບ
overhead ທີ່ບໍ່ຈໍາເປັນ, ເຊິ່ງສາມາດຫຼີກເວັ້ນໄດ້ໂດຍການໃຊ້ຕົວແປສະພາບແວດລ້ອມນີ້
ຕັ້ງຄ່າຂະຫນາດແຄດທີ່ສູງຂຶ້ນ (ຫຼືຕ້ອງການຄວາມຈໍາຕ່ໍາໂດຍການຫຼຸດຜ່ອນມັນ).

MONO_CAIRO_DEBUG_DISPOSE
ຖ້າຕັ້ງໄວ້, ເຮັດໃຫ້ Mono.Cairo ເກັບກຳຮອຍ stack ເມື່ອວັດຖຸຖືກຈັດສັນ, ດັ່ງນັ້ນ
ວ່າການເຕືອນໄພສຸດທ້າຍ / ການຖິ້ມຂີ້ເຫຍື້ອປະກອບມີຂໍ້ມູນກ່ຽວກັບຕົວຢ່າງ
ຕົ້ນກໍາເນີດ.

MONO_CFG_DIR
ຖ້າຕັ້ງໄວ້, ຕົວແປນີ້ຈະລົບລ້າງໄດເຣັກທໍຣີການຕັ້ງຄ່າລະບົບເລີ່ມຕົ້ນ
($PREFIX/etc). ມັນຖືກນໍາໃຊ້ເພື່ອຊອກຫາໄຟລ໌ machine.config.

MONO_COM
ກໍານົດຮູບແບບຂອງ COM interop. ຖ້າຄ່າຂອງຕົວແປນີ້ແມ່ນ "MS" Mono ຈະໃຊ້
string marhsalling routines ຈາກ liboleaut32 ສໍາລັບຫ້ອງສະຫມຸດປະເພດ BSTR, ໃດກໍ່ຕາມ
ຄ່າອື່ນໆຈະໃຊ້ mono-builtin BSTR string marshalling.

MONO_CONFIG
ຖ້າຕັ້ງ, ຕົວແປນີ້ຈະລົບລ້າງໄຟລ໌ການຕັ້ງຄ່າເວລາແລ່ນເລີ່ມຕົ້ນ
($PREFIX/etc/mono/config). ຕົວເລືອກແຖວຄໍາສັ່ງ --config overrides
environment variable

MONO_CPU_ARCH
ລົບລ້າງກົນໄກການກວດພົບ CPU ອັດຕະໂນມັດ. ປະຈຸບັນໃຊ້ພຽງແຕ່ແຂນ. ໄດ້
ຮູບແບບຂອງມູນຄ່າມີດັ່ງນີ້:

"armvV [ໂປ້[2]]"

ບ່ອນທີ່ V ເປັນເລກສະຖາປັດຕະຍະ 4, 5, 6, 7 ແລະທາງເລືອກສາມາດເປັນປະຈຸບັນ
"ໂປ້" ຫຼື "ໂປ້ມື 2". ຕົວຢ່າງ:

MONO_CPU_ARCH="armv4 ໂປ້" ໂມໂນ ...

MONO_ARM_FORCE_SOFT_FLOAT
ເມື່ອ Mono ຖືກສ້າງຂຶ້ນດ້ວຍຕົວເລື່ອນທີ່ອ່ອນນຸ້ມຢູ່ໃນ ARM ແລະຕົວແປນີ້ຖືກຕັ້ງເປັນ
"1", Mono ຈະປ່ອຍລະຫັດ float ອ່ອນຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າຈະກວດພົບຫນ່ວຍບໍລິການ VFP.

MONO_DISABLE_AIO
ຖ້າຕັ້ງ, ບອກ mono ບໍ່ພະຍາຍາມໃຊ້ການບໍລິການ I/O ແບບບໍ່ຊິ້ງໂຄຣນແບບເດີມ. ໃນ​ນັ້ນ
ກໍ​ລະ​ນີ​, ການ​ປະ​ຕິ​ບັດ​ການ​ເລືອກ / ແບບ​ສໍາ​ຫຼວດ​ໃນ​ຕອນ​ຕົ້ນ​ແມ່ນ​ໄດ້​ຖືກ​ນໍາ​ໃຊ້​. ໃນປັດຈຸບັນມີພຽງແຕ່ epol() ເທົ່ານັ້ນ
ສະຫນັບສະຫນູນ.

MONO_DISABLE_MANAGED_COLLATION
ຖ້າຕົວແປສະພາບແວດລ້ອມນີ້ແມ່ນ 'ແມ່ນ', runtime ໃຊ້ການລວບລວມທີ່ບໍ່ສາມາດຈັດການໄດ້ (ເຊິ່ງ
ຕົວ​ຈິງ​ແລ້ວ​ຫມາຍ​ຄວາມ​ວ່າ​ບໍ່​ມີ​ການ​ເຊື່ອມ​ຕໍ່​ວັດ​ທະ​ນະ​ທໍາ​ທີ່​ລະ​ອຽດ​ອ່ອນ​)​. ມັນພາຍໃນປິດການຈັດການ
ການທໍາງານຂອງ collation ໄດ້ຮຽກຮ້ອງໃຫ້ສະມາຊິກຂອງ System.Globalization.CompareInfo
ຫ້ອງຮຽນ. ການລວບລວມແມ່ນເປີດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ.

MONO_DISABLE_SHM
Unix ເທົ່ານັ້ນ: ຖ້າຕັ້ງ, ປິດການໃຊ້ງານໄຟລ໌ຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນສໍາລັບ handles ຂ້າມຂະບວນການ:
ຂະບວນການມີພຽງແຕ່ handles ສ່ວນຕົວ. ນີ້ຫມາຍຄວາມວ່າຂະບວນການແລະ thread handles ແມ່ນ
ບໍ່ມີຢູ່ໃນຂະບວນການອື່ນໆ, ແລະຕັ້ງຊື່ mutexes, ເຫດການທີ່ມີຊື່ແລະຊື່
Semalt ບໍ່ສັງເກດເຫັນລະຫວ່າງຂະບວນການ. ນີ້ຍັງສາມາດຖືກເປີດໃຊ້ໂດຍ
ຄ່າເລີ່ມຕົ້ນໂດຍການຖ່າຍທອດທາງເລືອກ "--disable-shared-handles" ເພື່ອຕັ້ງຄ່າ. ນີ້​ແມ່ນ
ຄ່າເລີ່ມຕົ້ນຈາກ mono 2.8 ເປັນຕົ້ນໄປ.

MONO_DISABLE_SHARED_AREA
Unix ເທົ່ານັ້ນ: ຖ້າຕັ້ງ, ປິດການໃຊ້ຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນເພື່ອເພີ່ມປະສິດທິພາບການເປີດເຜີຍ
ເຄົາເຕີ. ນີ້ຫມາຍຄວາມວ່າມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະທັງສອງການອ່ານພາຍນອກປະສິດທິພາບ
counters ຈາກຂະບວນການນີ້ຫຼືອ່ານຂະບວນການພາຍນອກ.

MONO_DNS
ເມື່ອຕັ້ງ, ເປີດໃຊ້ຕົວແກ້ໄຂ DNS ທີ່ມີການຈັດການຢ່າງເຕັມທີ່ແທນທີ່ຈະເປັນປົກກະຕິ
ຟັງຊັນ libc. ຕົວແກ້ໄຂນີ້ປະຕິບັດໄດ້ດີຂຶ້ນຫຼາຍເມື່ອມີການສອບຖາມຫຼາຍອັນ
ຂະຫນານ.

ໃຫ້ສັງເກດວ່າ /etc/nsswitch.conf ຈະຖືກລະເລີຍ.

MONO_EGD_SOCKET
ສໍາລັບແພລະຕະຟອມທີ່ບໍ່ມີວິທີທາງທີ່ຈະໄດ້ຮັບ bytes Random ນີ້ສາມາດເຮັດໄດ້
ຖືກຕັ້ງເປັນຊື່ຂອງຊັອກເກັດລະບົບໄຟລ໌ທີ່ egd ຫຼື prngd daemon ແມ່ນ
ຟັງ.

MONO_ENABLE_SHM
Unix ເທົ່ານັ້ນ: ເປີດໃຊ້ການຮອງຮັບຕົວຈັບຂ້າມຂະບວນການ. ຈັບຂ້າມຂະບວນການແມ່ນ
ໃຊ້ເພື່ອເປີດເຜີຍຕົວຈັບຂະບວນການ, ການຈັດການກະທູ້, mutexes ຊື່, ເຫດການທີ່ມີຊື່ແລະ
ຊື່ວ່າ semaphores ໃນທົ່ວຂະບວນການ Unix.

MONO_ENV_OPTIONS
ຕົວແປສະພາບແວດລ້ອມນີ້ອະນຸຍາດໃຫ້ທ່ານຜ່ານ arguments ແຖວຄໍາສັ່ງໄປຫາ Mono
ຂະບວນການຜ່ານສິ່ງແວດລ້ອມ. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບຕົວຢ່າງທີ່ຈະບັງຄັບໃຫ້ທ່ານທັງຫມົດ
ຂະບວນການ Mono ເພື່ອໃຊ້ LLVM ຫຼື SGEN ໂດຍບໍ່ຕ້ອງແກ້ໄຂສະຄຣິບເປີດຕົວໃດໆ.

MONO_ENV_OPTIONS
ໃຊ້ເພື່ອຜ່ານທາງເລືອກພິເສດໃຫ້ກັບຕົວແທນ debugger ໃນ runtime, ດັ່ງທີ່ພວກມັນເປັນ
ຜ່ານໂດຍໃຊ້ --debugger-agent=.

MONO_EVENTLOG_TYPE
ກໍານົດປະເພດຂອງຜູ້ໃຫ້ບໍລິການບັນທຶກເຫດການທີ່ຈະໃຊ້ (ສໍາລັບ System.Diagnostics.EventLog).
ຄ່າທີ່ເປັນໄປໄດ້ແມ່ນ:

ທ້ອງຖິ່ນ[:ເສັ້ນທາງ]
ສືບຕໍ່ບັນທຶກເຫດການ ແລະລາຍການເຂົ້າໃນລະບົບໄຟລ໌ທ້ອງຖິ່ນ. ໄດເລກະທໍລີໃນ
ເພື່ອສືບຕໍ່ບັນທຶກເຫດການ, ແຫຼ່ງເຫດການແລະລາຍການສາມາດຖືກກໍານົດ
ເປັນສ່ວນຫນຶ່ງຂອງມູນຄ່າ. ຖ້າເສັ້ນທາງບໍ່ໄດ້ຖືກກໍານົດຢ່າງຈະແຈ້ງ, ມັນຈະເປັນຄ່າເລີ່ມຕົ້ນ
"/var/lib/mono/eventlog" ໃນ unix ແລະ "%APPDATA%no\ventlog" ໃນ Windows.

win32 ການນໍາໃຊ້ ໄດ້ native win32 API to ຂຽນ ກິດຈະກໍາ ແລະ ທະບຽນ ກໍລະນີ ຂໍ້ມູນບັນທຶກ ແລະ ກໍລະນີ
ແຫຼ່ງຂໍ້ມູນໃນທະບຽນ. ນີ້ມີຢູ່ໃນ Windows ເທົ່ານັ້ນ. ໃນ Unix, ໄດ້
ການອະນຸຍາດໄດເລກະທໍລີສໍາລັບບັນທຶກເຫດການສ່ວນບຸກຄົນແລະໄດເລກະທໍລີແຫຼ່ງເຫດການ
ຖືກກໍານົດເປັນ 777 (ດ້ວຍ +t bit) ອະນຸຍາດໃຫ້ທຸກຄົນສາມາດອ່ານແລະຂຽນບັນທຶກເຫດການ
entries ໃນ ຂະ ນະ ທີ່ ພຽງ ແຕ່ ອະ ນຸ ຍາດ ໃຫ້ ລາຍ ການ ທີ່ ຈະ ຖືກ ລຶບ ໂດຍ ຜູ້ ໃຊ້(s) ວ່າ
ສ້າງໃຫ້ເຂົາເຈົ້າ.

null ຍົກເລີກເຫດການໃດນຶ່ງຢ່າງງຽບໆ.

ຄ່າເລີ່ມຕົ້ນແມ່ນ "null" ໃນ Unix (ແລະຮຸ່ນຂອງ Windows ກ່ອນ NT), ແລະ "win32" ໃນ
Windows NT (ແລະສູງກວ່າ).

MONO_EXTERNAL_ENCODINGS
ຖ້າຕັ້ງ, ປະກອບມີລາຍການທີ່ຂັ້ນດ້ວຍຈໍ້າສອງເມັດຂອງການເຂົ້າລະຫັດຂໍ້ຄວາມເພື່ອລອງປ່ຽນ
ຂໍ້ຄວາມທີ່ສ້າງຂຶ້ນຈາກພາຍນອກ (ເຊັ່ນ: ການໂຕ້ຖຽງແຖວຄໍາສັ່ງ ຫຼືຊື່ໄຟລ໌) ເຂົ້າໄປໃນ Unicode.
ຊື່ການເຂົ້າລະຫັດມາຈາກບັນຊີລາຍຊື່ທີ່ໃຫ້ໂດຍ iconv, ແລະກໍລະນີພິເສດ
"default_locale" ເຊິ່ງຫມາຍເຖິງການເຂົ້າລະຫັດເລີ່ມຕົ້ນຂອງທ້ອງຖິ່ນໃນປະຈຸບັນ.

ເມື່ອອ່ານຂໍ້ຄວາມທີ່ສ້າງຂຶ້ນພາຍນອກ UTF-8 ແມ່ນພະຍາຍາມທໍາອິດ, ແລະຫຼັງຈາກນັ້ນນີ້
ບັນຊີລາຍຊື່ໄດ້ຖືກພະຍາຍາມຕາມລໍາດັບດ້ວຍການປ່ຽນໃຈເຫລື້ອມໃສຄັ້ງທໍາອິດທີ່ສິ້ນສຸດການຄົ້ນຫາ.
ໃນ​ເວ​ລາ​ທີ່​ການ​ຂຽນ​ຂໍ້​ຄວາມ​ພາຍ​ນອກ (ເຊັ່ນ​: ຊື່​ໄຟລ​໌​ໃຫມ່​ຫຼື​ການ​ໂຕ້​ຖຽງ​ກັບ​ຂະ​ບວນ​ການ​ໃຫມ່​) ໄດ້​
ລາຍການທໍາອິດໃນບັນຊີລາຍຊື່ນີ້ຖືກນໍາໃຊ້, ຫຼື UTF-8 ຖ້າຕົວແປສະພາບແວດລ້ອມບໍ່ໄດ້ຕັ້ງ.

ບັນຫາກັບການໃຊ້ MONO_EXTERNAL_ENCODINGS ເພື່ອປະມວນຜົນໄຟລ໌ຂອງທ່ານແມ່ນມັນ
ຜົນໄດ້ຮັບໃນບັນຫາ: ເຖິງແມ່ນວ່າມັນເປັນໄປໄດ້ທີ່ຈະໄດ້ຮັບຊື່ໄຟລ໌ທີ່ຖືກຕ້ອງ, ມັນບໍ່ແມ່ນ
ມີຄວາມຈໍາເປັນທີ່ຈະເປີດໄຟລ໌. ໂດຍທົ່ວໄປຖ້າຫາກວ່າທ່ານມີບັນຫາກັບ
ການເຂົ້າລະຫັດໃນຊື່ໄຟລ໌ຂອງທ່ານທ່ານຄວນໃຊ້ໂຄງການ "convmv".

MONO_GC_PARAMS
ເມື່ອໃຊ້ Mono ກັບຕົວເກັບຂີ້ເຫຍື້ອ SGen ຕົວແປນີ້ຄວບຄຸມຫຼາຍໆຢ່າງ
ຕົວກໍານົດການຂອງຕົວເກັບ. ຄ່າຂອງຕົວແປແມ່ນລາຍການທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ
ຄໍາເວົ້າ.

ຂະຫນາດສວນກ້າ =ຂະຫນາດ
ກໍານົດຂະຫນາດຂອງສວນກ້າ. ຂະໜາດແມ່ນກຳນົດເປັນໄບຕ໌ ແລະຕ້ອງເປັນ a
ພະ​ລັງ​ງານ​ຂອງ​ສອງ​. ຄຳຕໍ່ທ້າຍ `k', `m' ແລະ `g' ສາມາດໃຊ້ເພື່ອລະບຸກິໂລ-,
mega- ແລະ gigabytes, ຕາມລໍາດັບ. ສວນກ້າແມ່ນລຸ້ນທໍາອິດ (ຂອງ
ສອງ). ສວນກ້າໃຫຍ່ກວ່າປົກກະຕິຈະເຮັດໃຫ້ໂຄງການເລັ່ງໄວຂຶ້ນ ແຕ່ຈະເຫັນໄດ້ຊັດເຈນ
ໃຊ້ຄວາມຊົງຈໍາຫຼາຍ. ຂະໜາດສວນກ້າເລີ່ມຕົ້ນ 4 MB.

ຫຼັກ=ຜູ້ເກັບຂອງ ລະບຸຕົວເກັບຂໍ້ມູນຫຼັກທີ່ຈະໃຊ້.
ທາງເລືອກແມ່ນ 'marksweep' ສໍາລັບເຄື່ອງເກັບ Mark&Sweep, ແລະ 'marksweep-conc'
ສໍາລັບ Mark&Sweep ພ້ອມກັນ. ຕົວເກັບ Mark&Sweep ທີ່ບໍ່ພ້ອມກັນແມ່ນ
Default

soft-heap-limit=ຂະຫນາດ
ເມື່ອຂະໜາດຂອງ heap ໃຫຍ່ກວ່າຂະໜາດນີ້, ຢ່າສົນໃຈສິ່ງທີ່ເປັນຄ່າເລີ່ມຕົ້ນ
ການເກັບລວບລວມ trigger metric ເວົ້າວ່າແລະພຽງແຕ່ອະນຸຍາດໃຫ້ສີ່ຂະຫນາດສວນກ້າຂອງທີ່ສໍາຄັນ
heap ການຂະຫຍາຍຕົວລະຫວ່າງການເກັບກໍາທີ່ສໍາຄັນ.

evacuation-threshold=threshold
ກໍານົດຂອບເຂດການຍົກຍ້າຍເປັນເປີເຊັນ. ທາງເລືອກນີ້ແມ່ນມີພຽງແຕ່ຢູ່ໃນ
Mark&Sweep ນັກສະສົມຫຼັກ. ຄ່າຈະຕ້ອງເປັນຈຳນວນເຕັມໃນຂອບເຂດ
0 ຫາ 100. ຄ່າເລີ່ມຕົ້ນແມ່ນ 66. ຖ້າຫາກວ່າໄລຍະການກວາດລ້າງຂອງການເກັບກໍາພົບເຫັນ
ວ່າການຄອບຄອງຂອງປະເພດ heap block ສະເພາະແມ່ນໜ້ອຍກວ່ານີ້
ເປີເຊັນ, ມັນຈະເຮັດການລວບລວມການຄັດລອກສໍາລັບປະເພດບລັອກນັ້ນໃນຕໍ່ໄປ
ການ​ເກັບ​ກໍາ​ຂໍ້​ມູນ​ທີ່​ສໍາ​ຄັນ​, ສະ​ນັ້ນ​ການ​ຟື້ນ​ຟູ​ການ​ຄອບ​ຄອງ​ໃຫ້​ໃກ້​ກັບ 100 ສ່ວນ​ຮ້ອຍ​. ກ
ຄ່າຂອງ 0 ປິດການຍົກຍ້າຍ.

(ບໍ່-)lazy-ກວາດ
ເປີດໃຊ້ ຫຼືປິດການກວາດຂີ້ອາຍສຳລັບຕົວເກັບ Mark&Sweep. ຖ້າເປີດໃຊ້,
ການກວາດລ້າງທ່ອນໄມ້ heap ທີ່ສໍາຄັນແຕ່ລະອັນແມ່ນເຮັດໄດ້ທຸກຄັ້ງ
ຄວາມຕ້ອງການເກີດຂື້ນ, ໂດຍປົກກະຕິໃນລະຫວ່າງການເກັບສວນກ້າ. Lazy sweeping ຖືກເປີດໃຊ້
ໂດຍຄ່າເລີ່ມຕົ້ນ

(ບໍ່-)ການກວາດພ້ອມກັນ
ເປີດໃຊ້ ຫຼືປິດການກວາດພ້ອມກັນສຳລັບຕົວເກັບ Mark&Sweep. ຖ້າ
ເປີດໃຊ້ງານແລ້ວ, ການເຮັດຊ້ຳຂອງທ່ອນໄມ້ໃຫຍ່ທັງໝົດເພື່ອກໍານົດວ່າອັນໃດສາມາດເປັນໄດ້
ປົດປ່ອຍແລະອັນໃດທີ່ຕ້ອງໄດ້ຮັບການເກັບຮັກສາແລະ swept, ແມ່ນເຮັດພ້ອມກັນກັບ
ໂຄງການແລ່ນ. ການກວາດພ້ອມໆກັນແມ່ນຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ.

stack-mark=ໂໝດເຄື່ອງໝາຍ
ລະບຸວ່າຫົວຂໍ້ແອັບພລິເຄຊັນຄວນຖືກສະແກນແນວໃດ. ຕົວເລືອກແມ່ນ 'ຊັດເຈນ'
ແລະ "ອະນຸລັກ". ເຄື່ອງຫມາຍທີ່ຊັດເຈນເຮັດໃຫ້ຜູ້ລວບລວມຮູ້ວ່າຄຸນຄ່າໃດ
on stack ແມ່ນການອ້າງອີງແລະສິ່ງທີ່ບໍ່ແມ່ນ. ເຄື່ອງຫມາຍການອະນຸລັກນິຍົມຂົ່ມຂູ່ທັງຫມົດ
ຄຸນ​ຄ່າ​ເປັນ​ການ​ອ້າງ​ອີງ​ທີ່​ເປັນ​ໄປ​ໄດ້​ແລະ​ປ່ອຍ​ໃຫ້​ເຂົາ​ເຈົ້າ​ບໍ່​ໄດ້​ສໍາ​ພັດ​. ເຄື່ອງຫມາຍທີ່ຊັດເຈນ
ຫຼຸດຜ່ອນຂີ້ເຫຍື້ອທີ່ເລື່ອນໄດ້ແລະສາມາດເລັ່ງການເກັບແລະຈັດສັນສວນກ້າ
ອັດຕາ, ມັນມີຂໍ້ເສຍຂອງການຮຽກຮ້ອງໃຫ້ມີຫນ່ວຍຄວາມຈໍາພິເສດທີ່ສໍາຄັນຕໍ່
ວິທີການລວບລວມ. ທາງເລືອກທີ່ເຫມາະສົມ, ແຕ່ຫນ້າເສຍດາຍ, ຮຽກຮ້ອງໃຫ້ມີການທົດລອງ.

save-target-ratio=ອັດຕາສ່ວນ
ລະບຸອັດຕາສ່ວນປະຫຍັດເປົ້າໝາຍສຳລັບຜູ້ເກັບລາຍໃຫຍ່. ຜູ້ເກັບໃຫ້
ຈໍາ ນວນ ເງິນ ຂອງ ຄວາມ ຊົງ ຈໍາ ທີ່ ຈະ ໄດ້ ຮັບ ການ ສົ່ງ ເສີມ ຈາກ ສວນ ກ້າ ເນື່ອງ ຈາກ ວ່າ ການ ຄ້າ ຫນ້ອຍ
ການເກັບກໍາກ່ອນທີ່ມັນຈະເຮັດໃຫ້ເກີດການເກັບລວບລວມທີ່ສໍາຄັນ. ຈໍານວນນີ້ແມ່ນອີງໃສ່
ຄວາມຈຳຫຼາຍປານໃດທີ່ຄາດວ່າຈະໃຫ້ຟຣີ. ມັນຖືກສະແດງເປັນອັດຕາສ່ວນຂອງຂະຫນາດ
ຂອງ heap ຫຼັງຈາກການເກັບກໍາທີ່ສໍາຄັນ. ຄ່າທີ່ຖືກຕ້ອງແມ່ນຢູ່ລະຫວ່າງ 0.1 ຫາ 2.0.
ຄ່າເລີ່ມຕົ້ນແມ່ນ 0.5. ຄ່າທີ່ນ້ອຍລົງຈະເຮັດໃຫ້ຂະໜາດ heap ຫຼັກນ້ອຍລົງ
ແຕ່ຈະກະຕຸ້ນໃຫ້ມີການເກັບມ້ຽນຫຼັກຫຼາຍຂຶ້ນ. ເຊັ່ນດຽວກັນ, ມູນຄ່າທີ່ໃຫຍ່ກວ່າຈະໃຊ້
ໜ່ວຍຄວາມຈຳຫຼາຍຂື້ນ ແລະສົ່ງຜົນໃຫ້ມີການເກັບກຳຂໍ້ມູນທີ່ສຳຄັນໜ້ອຍລົງ. ທາງເລືອກນີ້ແມ່ນ
ທົດລອງ, ສະນັ້ນມັນອາດຈະຫາຍໄປໃນໂມໂນລຸ້ນຕໍ່ມາ.

default-allowance-ratio=ອັດຕາສ່ວນ
ລະບຸຄ່າອະນຸຍາດໃຫ້ຈັດສັນເລີ່ມຕົ້ນເມື່ອຂະໜາດທີ່ຄຳນວນແລ້ວເກີນໄປ
ຂະຫນາດນ້ອຍ. ເງິນອຸດໜູນການຈັດສັນແມ່ນຄວາມຈໍາຫຼາຍປານໃດທີ່ຜູ້ເກັບໄດ້ປ່ອຍໃຫ້ເປັນ
ສົ່ງເສີມກ່ອນທີ່ຈະເຮັດໃຫ້ເກີດການເກັບກໍາທີ່ສໍາຄັນ. ມັນເປັນອັດຕາສ່ວນຂອງສວນກ້າ
ຂະໜາດ. ຄ່າທີ່ຖືກຕ້ອງແມ່ນຢູ່ລະຫວ່າງ 1.0 ຫາ 10.0. ຄ່າເລີ່ມຕົ້ນແມ່ນ 4.0. ນ້ອຍກວ່າ
ຄຸນຄ່າເຮັດໃຫ້ heap ຂະຫນາດນ້ອຍກວ່າແລະການເກັບລວບລວມທີ່ສໍາຄັນເລື້ອຍໆ. ເຊັ່ນດຽວກັນ,
ຄ່າທີ່ໃຫຍ່ກວ່າຈະເຮັດໃຫ້ heap ເຕີບໃຫຍ່ໄວຂຶ້ນ ແຕ່ໃຊ້ຄວາມຈຳຫຼາຍຂຶ້ນເມື່ອມັນ
ຮອດຂະໜາດທີ່ໝັ້ນຄົງ. ຕົວເລືອກນີ້ແມ່ນການທົດລອງ, ສະນັ້ນມັນອາດຈະຫາຍໄປ
ໃນລຸ້ນຕໍ່ມາຂອງ mono.

ນ້ອຍ=ຜູ້ເກັບເລັກນ້ອຍ
ລະບຸວ່າຈະໃຊ້ຕົວເກັບເລັກໜ້ອຍໃດ. ທາງເລືອກແມ່ນ 'ງ່າຍດາຍ' ທີ່ສົ່ງເສີມ
ວັດຖຸທັງຫມົດຈາກສວນກ້າໂດຍກົງກັບຄົນລຸ້ນເກົ່າແລະ 'ແຍກ'.
ເຊິ່ງເຮັດໃຫ້ວັດຖຸຢູ່ໃນສວນກ້າດົນກວ່າກ່ອນທີ່ຈະສົ່ງເສີມ.

alloc-ratio=ອັດຕາສ່ວນ
ລະບຸອັດຕາສ່ວນຂອງຄວາມຊົງຈໍາຈາກສວນກ້າທີ່ຈະໃຊ້ໂດຍພື້ນທີ່ຈັດສັນ.
ອັນນີ້ສາມາດໃຊ້ໄດ້ກັບຕົວເກັບເລັກໆນ້ອຍໆທີ່ແບ່ງປັນເທົ່ານັ້ນ. ຄ່າທີ່ຖືກຕ້ອງແມ່ນ
ຈຳນວນເຕັມລະຫວ່າງ 1 ຫາ 100. ຄ່າເລີ່ມຕົ້ນແມ່ນ 60.

promotion-age=ອາຍຸສູງສຸດ
ລະບຸອາຍຸທີ່ຕ້ອງການຂອງວັດຖຸທີ່ຕ້ອງຮອດພາຍໃນສວນກ້າກ່ອນ
ໄດ້​ຮັບ​ການ​ສົ່ງ​ເສີມ​ໃຫ້​ຄົນ​ລຸ້ນ​ອາ​ຍຸ​. ນີ້ພຽງແຕ່ສາມາດຖືກນໍາໃຊ້ກັບ
ແຍກຕົວເກັບເລັກນ້ອຍ. ຄ່າທີ່ຖືກຕ້ອງແມ່ນຈຳນວນເຕັມລະຫວ່າງ 1 ແລະ 14. ຄ່າເລີ່ມຕົ້ນ
ແມ່ນ 2.

(ບໍ່-)ຊີມັງ
ເປີດໃຊ້ ຫຼືປິດການນຳໃຊ້ຊີມັງ. ນີ້ສາມາດເຮັດໃຫ້ການກ້າເບ້ຍສັ້ນລົງຢ່າງຫຼວງຫຼາຍ
ເວລາເກັບກໍາຢູ່ໃນບາງມາດຕະຖານທີ່ວັດຖຸທີ່ຖືກປັກໝຸດຖືກກ່າວເຖິງ
ຈາກ heap ໃຫຍ່.

MONO_GC_DEBUG
ເມື່ອໃຊ້ Mono ກັບຕົວເກັບຂີ້ເຫຍື້ອ SGen, ສະພາບແວດລ້ອມນີ້ສາມາດປ່ຽນແປງໄດ້
ໃຊ້ເພື່ອເປີດໃຊ້ຄຸນສົມບັດການດີບັກຕ່າງໆຂອງຕົວເກັບກຳ. ມູນຄ່າຂອງສິ່ງນີ້
ຕົວແປແມ່ນລາຍການຄຳສັບທີ່ແຍກອອກດ້ວຍເຄື່ອງໝາຍຈຸດ. ຢ່າໃຊ້ທາງເລືອກເຫຼົ່ານີ້ໃນ
ການຜະລິດ.

ຈໍານວນ ຕັ້ງລະດັບດີບັກເປັນຕົວເລກທີ່ລະບຸ.

ພິມເງິນອຸດໜູນ
ຫຼັງ​ຈາກ​ການ​ເກັບ​ກໍາ​ທີ່​ສໍາ​ຄັນ​ແຕ່​ລະ​ຄົນ​ພິມ​ການ​ບໍ​ລິ​ໂພກ​ຫນ່ວຍ​ຄວາມ​ຈໍາ​ສໍາ​ລັບ​ກ່ອນ​ແລະ​ຫຼັງ​
ການເກັບເງິນ ແລະ ເງິນອຸດໜູນສຳລັບຜູ້ເກັບເງິນເລັກນ້ອຍ, ເຊັ່ນວ່າ ເທົ່າໃດ
heap ໄດ້ຖືກອະນຸຍາດໃຫ້ຂະຫຍາຍຕົວຈາກການເກັບກໍາເລັກນ້ອຍກ່ອນທີ່ຈະທີ່ສໍາຄັນຕໍ່ໄປ
ການລວບລວມແມ່ນກະຕຸ້ນ.

ການພິມປັກໝຸດ
ຮວບຮວມສະຖິຕິກ່ຽວກັບຫ້ອງຮຽນທີ່ວັດຖຸຖືກປັກໝຸດຢູ່ໃນສວນກ້າ
ແລະສໍາລັບລາຍການ remset ທົ່ວໂລກແມ່ນເພີ່ມ. ພິມສະຖິຕິເຫຼົ່ານັ້ນເມື່ອ
ປິດລົງ.

ເກັບກ່ອນການຈັດສັນ

ເຊັກ-ຢູ່-ຄໍເລັກຊັນ
ນີ້ດໍາເນີນການກວດສອບຄວາມສອດຄ່ອງກ່ຽວກັບການເກັບເລັກນ້ອຍແລະຍັງລຶບລ້າງ
ສວນກ້າໃນເວລາເກັບກໍາ, ແທນທີ່ຈະເປັນຄ່າເລີ່ມຕົ້ນ, ໃນເວລາທີ່ buffers ແມ່ນ
ຈັດສັນ (clear-at-gc). ການກວດສອບຄວາມສອດຄ່ອງໃຫ້ແນ່ໃຈວ່າບໍ່ມີ
ການອ້າງອີງຫຼັກຫາເລັກນ້ອຍທີ່ບໍ່ໄດ້ຢູ່ໃນຊຸດທີ່ຈື່ໄວ້.

mod-union-consistency-check
ກວດເບິ່ງວ່າບັດ mod-union ແມ່ນສອດຄ່ອງກ່ອນທີ່ຈະສໍາເລັດຮູບແຕ່ລະຄົນ
ຢຸດການເກັບກຳຫຼັກ. ການກວດສອບນີ້ແມ່ນໃຊ້ໄດ້ກັບສາຂາໃຫຍ່ພ້ອມກັນເທົ່ານັ້ນ
ນັກສະສົມ.

check-mark-bits
ການກວດສອບທີ່ຫມາຍ bits ໃນ heap ທີ່ສໍາຄັນແມ່ນສອດຄ່ອງໃນຕອນທ້າຍຂອງແຕ່ລະ
ການເກັບກໍາທີ່ສໍາຄັນ. ບິດເຄື່ອງໝາຍທີ່ສອດຄ່ອງກັນ ໝາຍຄວາມວ່າ ຖ້າວັດຖຸໃດຖືກໝາຍໄວ້,
ວັດຖຸທັງໝົດທີ່ມັນອ້າງເຖິງຈະຕ້ອງຖືກໝາຍໄວ້ນຳ.

check-nursery-pinned
ຫຼັງຈາກການເກັບສວນກ້າ, ແລະກ່ອນທີ່ຈະເລີ່ມການເກັບລວບລວມພ້ອມໆກັນ, ໃຫ້ກວດເບິ່ງ
ບໍ່ວ່າຈະເປັນວັດຖຸສວນກ້າທັງໝົດຖືກປັກໝຸດ, ຫຼືບໍ່ປັກໝຸດ - ຂຶ້ນກັບ
ສະພາບການ. ບໍ່ມີຫຍັງເຮັດໃນເວລາທີ່ເກັບສວນກ້າທີ່ແຕກແຍກຖືກນໍາໃຊ້.

ການກວດສອບ xdomain
ດໍາເນີນການກວດສອບເພື່ອໃຫ້ແນ່ໃຈວ່າບໍ່ມີການອ້າງອິງຖືກປະໄວ້ກັບ unloaded
AppDomain.

clear-at-tlab-creation
ລ້າງສວນກ້າເພີ່ມຂຶ້ນເທື່ອລະກ້າວ ເມື່ອກະທູ້ການຈັດສັນທ້ອງຖິ່ນ buffers
(TLAB) ຖືກສ້າງຂື້ນ. ການຕັ້ງຄ່າເລີ່ມຕົ້ນຈະລຶບລ້າງສວນກ້າທັງໝົດຢູ່ GC
ເວລາ.

debug-clear-at-tlab-creation
ລ້າງສວນກ້າເພີ່ມຂຶ້ນເທື່ອລະກ້າວ ເມື່ອກະທູ້ການຈັດສັນທ້ອງຖິ່ນ buffers
(TLAB) ຖືກສ້າງຂື້ນ, ແຕ່ໃນເວລາ GC ຕື່ມມັນດ້ວຍ byte `0xff`, ເຊິ່ງ
ຄວນສົ່ງຜົນໃຫ້ເກີດການຂັດຂ້ອງໄດ້ໄວຂຶ້ນ ຖ້າ 'clear-at-tlab-creation' ບໍ່ເຮັດ
ເຮັດວຽກຢ່າງຖືກຕ້ອງ.

clear-at-gc
ນີ້ລ້າງສວນກ້າໃນເວລາ GC ແທນທີ່ຈະເຮັດມັນໃນເວລາທີ່ກະທູ້ທ້ອງຖິ່ນ
ການຈັດສັນ buffer (TLAB) ຖືກສ້າງຂື້ນ. ຄ່າເລີ່ມຕົ້ນແມ່ນເພື່ອອະນາໄມສວນກ້າຢູ່
ເວລາສ້າງ TLAB.

ປິດການໃຊ້ງານເລັກນ້ອຍ
ຢ່າເຮັດການເກັບກໍາເລັກນ້ອຍ. ຖ້າສວນກ້າເຕັມ, ການເກັບກໍາທີ່ສໍາຄັນແມ່ນ
triggered ແທນ, ເວັ້ນເສຍແຕ່ວ່າມັນ, ເຊັ່ນດຽວກັນ, ຖືກປິດການໃຊ້ງານ.

ປິດ​ການ​ທໍາ​ງານ​ທີ່​ສໍາ​ຄັນ​
ຢ່າເຮັດການເກັບກໍາທີ່ສໍາຄັນ.

conservative-stack-mark
ບັງຄັບໃຫ້ GC ສະແກນ stack ແບບອະນຸລັກ, ເຖິງແມ່ນວ່າການສະແກນທີ່ຊັດເຈນ
ທີ່ມີຢູ່.

no-managed-alocator
ປິດໃຊ້ງານຜູ້ຈັດສັນທີ່ຄຸ້ມຄອງ.

check-scan-starts
ຖ້າຕັ້ງໄວ້, ການກວດສອບຄວາມເຊື່ອຖືໃນ scan_starts ກ່ອນ ແລະຫຼັງແຕ່ລະອັນ
ເກັບ​ກໍາ​ຂໍ້​ມູນ

verify-nursery-at-minor-gc
ຖ້າຕັ້ງ, ຍ່າງວັດຖຸທີ່ສົມບູນຂອງສວນກ້າໃນຕອນເລີ່ມຕົ້ນຂອງແຕ່ລະຄົນ
ການເກັບກໍາເລັກນ້ອຍ.

dump-nursery-at-minor-gc
ຖ້າຕັ້ງ, ຖິ້ມເນື້ອໃນຂອງສວນກ້າໃນຕອນເລີ່ມຕົ້ນຂອງເດັກນ້ອຍແຕ່ລະຄົນ
ການເກັບກໍາ. ຕ້ອງການ verify-nursery-at-minor-gc ເພື່ອຕັ້ງຄ່າ.

heap-dump=ເອກະສານ
ຖິ້ມເນື້ອໃນຂອງ heap ໄປໃສ່ໄຟລ໌ທີ່ລະບຸໄວ້. ເພື່ອສະແດງພາບ
ຂໍ້ມູນ, ໃຊ້ເຄື່ອງມື mono-heapviz.

binary-protocol=ເອກະສານ
ສົ່ງຜົນການດີບັ໊ກອອກໄປຫາໄຟລ໌ທີ່ລະບຸ. ສໍາລັບການນີ້ເຮັດວຽກ, Mono
ຕ້ອງໄດ້ຮັບການລວບລວມດ້ວຍ BINARY_PROTOCOL ກໍານົດໃນ sgen-gc.c. ເຈົ້າ​ສາ​ມາດ
ຫຼັງຈາກນັ້ນ, ໃຊ້ຄໍາສັ່ງນີ້ເພື່ອຄົ້ນຫາຜົນໄດ້ຮັບ
sgen-grep-binprot 0x1234 0x5678 < ໄຟລ໌

ສວນກ້າ - canaries
ຖ້າຕັ້ງ, ວັດຖຸທີ່ຈັດສັນຢູ່ໃນສວນກ້າຈະຖືກຕໍ່ທ້າຍດ້ວຍ canary (ກອງ)
ຄໍາ, ເຊິ່ງຖືກກວດເບິ່ງໃນແຕ່ລະການເກັບກໍາເລັກນ້ອຍ. ສາ​ມາດ​ຖືກ​ນໍາ​ໃຊ້​ເພື່ອ​ກວດ​ສອບ / debug​
ບັນຫາການສໍ້ລາດບັງຫຼວງ.

do-not-finalize
ຖ້າເປີດໃຊ້, ຜູ້ສຸດທ້າຍຈະບໍ່ຖືກດໍາເນີນການ. ທຸກຢ່າງອື່ນຈະບໍ່ໄດ້ຮັບຜົນກະທົບ:
ວັດຖຸທີ່ສາມາດເຮັດໄດ້ສຸດທ້າຍຈະຍັງຖືກໃສ່ເຂົ້າໄປໃນແຖວສຸດທ້າຍທີ່ພວກມັນ
ຢູ່ລອດຈົນກ່ວາພວກເຂົາຖືກກໍານົດໃຫ້ສໍາເລັດ. ເມື່ອພວກເຂົາບໍ່ໄດ້ຢູ່ໃນແຖວ
ຕໍ່ໄປ, ພວກເຂົາຈະຖືກເກັບເປັນປົກກະຕິ.

log-finalizers
ບັນທຶກ verbosely ປະມານຂະບວນການສຸດທ້າຍເພື່ອຊ່ວຍ debugging.

MONO_GAC_PREFIX
ສະຫນອງຄໍານໍາຫນ້າຂອງ runtime ໃຊ້ເພື່ອຊອກຫາ Global Assembly Caches. ລາຍຊື່
ຖືກແຍກອອກໂດຍຕົວແຍກເສັ້ນທາງເວທີ (ຈໍ້າສອງເມັດໃນ unix). MONO_GAC_PREFIX
ຄວນຊີ້ໄປຫາໄດເລກະທໍລີເທິງສຸດຂອງການຕິດຕັ້ງ prefixed. ຫຼືໄປທີ່ໄດເລກະທໍລີ
ສະຫນອງໃຫ້ຢູ່ໃນຄໍາສັ່ງ gacutil / gacdir. ຕົວຢ່າງ:
/home/username/.mono:/usr/local/mono/

MONO_IOMAP
ເປີດໃຊ້ການຮອງຮັບການຂຽນຄືນຊື່ບາງໄຟລ໌ເພື່ອຊ່ວຍແອັບພລິເຄຊັນທີ່ຂຽນບໍ່ດີນັ້ນ
ເສັ້ນທາງ Windows hard-code. ຕັ້ງເປັນລາຍການທີ່ແຍກອອກຈາກຈໍ້າສອງເມັດຂອງ "drive" ເພື່ອລອກເອົາ drive
ຕົວອັກສອນ, ຫຼື "ກໍລະນີ" ເພື່ອເຮັດການຈັບຄູ່ໄຟລ໌ທີ່ບໍ່ລະອຽດອ່ອນຕົວພິມໃຫຍ່ໃນທຸກໄດເລກະທໍລີໃນ a
ເສັ້ນທາງ. "ທັງໝົດ" ເປີດໃຊ້ວິທີການຂຽນໃໝ່ທັງໝົດ. (Backslashes ແມ່ນສະເຫມີໃນແຜນທີ່
slashes ຖ້າຕົວແປນີ້ຖືກຕັ້ງເປັນທາງເລືອກທີ່ຖືກຕ້ອງ).
ສໍາລັບຕົວຢ່າງ, ນີ້ຈະເຮັດວຽກຈາກແກະ:

MONO_IOMAP=drive:case
ສົ່ງອອກ MONO_IOMAP

ຖ້າທ່ານກໍາລັງໃຊ້ mod_mono ເພື່ອເປັນເຈົ້າພາບຄໍາຮ້ອງສະຫມັກເວັບໄຊຕ໌ຂອງທ່ານ, ທ່ານສາມາດນໍາໃຊ້ MonoIOMAP
ຄໍາສັ່ງແທນທີ່ຈະ, ເຊັ່ນນີ້:

MonoIOMAP ທັງໝົດ

ເບິ່ງ mod_mono(8) ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.

ນອກຈາກນັ້ນ. Mono ປະກອບມີໂມດູນ profiler ທີ່ອະນຸຍາດໃຫ້ຫນຶ່ງຕິດຕາມສິ່ງທີ່
ການປັບປ່ຽນເສັ້ນທາງໄຟລ໌ລະຫັດ IOMAP ຕ້ອງເຮັດ. ລະ​ຫັດ​ຕິດ​ຕາມ​ລາຍ​ງານ​ໄດ້​
ສະຖານທີ່ທີ່ຖືກຈັດການ (ຕິດຕາມ stack ເຕັມ) ຈາກການໂທ IOMAP-ed ແລະ, ໃນ
ອອກຈາກຂະບວນການ, ສະຖານທີ່ບ່ອນທີ່ສາຍສະຕຣິງ IOMAP-ed ທັງໝົດຖືກສ້າງຢູ່ໃນການຈັດການ
ລະຫັດ. ບົດລາຍງານສະບັບສຸດທ້າຍແມ່ນພຽງແຕ່ປະມານຍ້ອນວ່າມັນເປັນໄປບໍ່ໄດ້ສະ ເໝີ ໄປ
ຄາດຄະເນສະຖານທີ່ຕົວຈິງທີ່ສະຕຣິງຖືກສ້າງຂຶ້ນ. ລະຫັດໃຊ້ງ່າຍດາຍ
heuristics - ມັນວິເຄາະ stack trace ນໍາກັບຄືນໄປບ່ອນສະຖານທີ່ຈັດສັນ string
ແລະບໍ່ສົນໃຈລະຫັດທີ່ຖືກຄຸ້ມຄອງທັງຫມົດທີ່ອາໄສຢູ່ໃນອຸປະກອນທີ່ຕິດຕັ້ງຢູ່ໃນ GAC ເຊັ່ນກັນ
ເຊັ່ນດຽວກັບຢູ່ໃນຫ້ອງສະຫມຸດຫ້ອງຮຽນທີ່ສົ່ງກັບ Mono (ນັບຕັ້ງແຕ່ພວກເຂົາສົມມຸດວ່າບໍ່ເສຍຄ່າ
ບັນຫາຄວາມອ່ອນໄຫວຂອງກໍລະນີ). ຫຼັງຈາກນັ້ນມັນລາຍງານສະຖານທີ່ທໍາອິດໃນລະຫັດຂອງຜູ້ໃຊ້ -
ໃນກໍລະນີຫຼາຍທີ່ສຸດ, ນີ້ຈະເປັນບ່ອນທີ່ມີການຈັດແບ່ງສາຍຫຼືຢູ່ໃກ້ກັບຫຼາຍ
ສະຖານທີ່. ລະຫັດການລາຍງານຖືກປະຕິບັດເປັນໂມດູນ profiler ທີ່ກໍາຫນົດເອງ (ເບິ່ງ
ສ່ວນ "PROFILING") ແລະສາມາດໂຫລດໄດ້ຕາມວິທີຕໍ່ໄປນີ້:

mono --profile=iomap yourapplication.exe

ຢ່າງໃດກໍຕາມ, ໃຫ້ສັງເກດວ່າ Mono ປະຈຸບັນສະຫນັບສະຫນູນພຽງແຕ່ຫນຶ່ງໂມດູນ profiler ໃນເວລາ.

MONO_LLVM
ເມື່ອ Mono ກໍາລັງໃຊ້ backend ການສ້າງລະຫັດ LLVM ທ່ານສາມາດນໍາໃຊ້ສະພາບແວດລ້ອມນີ້
ຕົວແປທີ່ຈະຜ່ານທາງເລືອກການສ້າງລະຫັດໄປຫາຜູ້ລວບລວມຂໍ້ມູນ LLVM.

MONO_MANAGED_WATCHER
ຖ້າຕັ້ງເປັນ "ປິດການໃຊ້ງານ", System.IO.FileSystemWatcher ຈະໃຊ້ຕົວເບິ່ງໄຟລ໌
ການປະຕິບັດທີ່ງຽບໆບໍ່ສົນໃຈຄໍາຮ້ອງຂໍການເບິ່ງທັງຫມົດ. ຖ້າຕັ້ງເປັນອັນໃດ
ຄ່າອື່ນໆ, System.IO.FileSystemWatcher ຈະໃຊ້ການຈັດການເລີ່ມຕົ້ນ
ການປະຕິບັດ (ຊ້າ). ຖ້າບໍ່ໄດ້ຕັ້ງ, mono ຈະພະຍາຍາມໃຊ້ inotify, FAM, Gamin, kevent
ພາຍໃຕ້ລະບົບ Unix ແລະການໂທ API ພື້ນເມືອງໃນ Windows, ກັບຄືນໄປຫາການຈັດການ
ການ​ປະ​ຕິ​ບັດ​ຄວາມ​ຜິດ​ພາດ​.

MONO_MESSAGING_PROVIDER
Mono ສະຫນັບສະຫນູນຮູບແບບ plugin ສໍາລັບການປະຕິບັດຂອງ System.Messaging ເຮັດໃຫ້ມັນ
ເປັນໄປໄດ້ເພື່ອຮອງຮັບການປະຕິບັດການສົ່ງຂໍ້ຄວາມຕ່າງໆ (ເຊັ່ນ: AMQP, ActiveMQ).
ເພື່ອລະບຸວ່າການປະຕິບັດການສົ່ງຂໍ້ຄວາມໃດຈະຖືກໃຊ້ຕົວແປ evironement
ຈໍາເປັນຕ້ອງໄດ້ຕັ້ງເປັນຊື່ຊັ້ນຮຽນເຕັມສໍາລັບຜູ້ໃຫ້ບໍລິການ. ເຊັ່ນ: ການນໍາໃຊ້ RabbitMQ
ການຈັດຕັ້ງປະຕິບັດ AMQP ໂດຍອີງໃສ່ຕົວແປຄວນຖືກຕັ້ງເປັນ:

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

MONO_NO_SMP
ຖ້າຕັ້ງເຮັດໃຫ້ຂະບວນການ mono ຖືກຜູກມັດກັບໂປເຊດເຊີດຽວ. ນີ້ອາດຈະເປັນ
ເປັນປະໂຫຍດໃນເວລາທີ່ debugging ຫຼືເຮັດວຽກກ່ຽວກັບສະພາບເຊື້ອຊາດ.

MONO_NO_TLS
ປິດ​ການ​ທໍາ​ງານ inlining ຂອງ​ການ​ເຂົ້າ​ເຖິງ​ທ້ອງ​ຖິ່ນ thread. ລອງຕັ້ງອັນນີ້ຫາກເຈົ້າມີຄວາມຜິດ
ໃນຕອນຕົ້ນຂອງການປະຕິບັດຂອງ mono ໄດ້.

MONO_PATH
ສະຫນອງເສັ້ນທາງຄົ້ນຫາໄປຫາ runtime ບ່ອນທີ່ຊອກຫາຫ້ອງສະຫມຸດ
ໄຟລ໌. ນີ້ແມ່ນເຄື່ອງມືທີ່ສະດວກສໍາລັບຄໍາຮ້ອງສະຫມັກ debugging, ແຕ່
ບໍ່ຄວນຖືກນໍາໃຊ້ໂດຍຄໍາຮ້ອງສະຫມັກທີ່ຖືກນໍາໃຊ້ຍ້ອນວ່າມັນທໍາລາຍການປະກອບ
loader ໃນວິທີການ subtle.
ໄດເລກະທໍລີຖືກແຍກໂດຍຕົວແຍກເສັ້ນທາງແພລະຕະຟອມ (ຈໍ້າສອງເມັດໃນ unix). ຕົວຢ່າງ:
/home/username/lib:/usr/local/mono/lib
ເສັ້ນທາງທີ່ກ່ຽວຂ້ອງຖືກແກ້ໄຂໂດຍອີງໃສ່ໄດເລກະທໍລີປັດຈຸບັນທີ່ໃຊ້ເວລາເປີດຕົວ.
ວິທີແກ້ໄຂທາງເລືອກຂອງ MONO_PATH ປະກອບມີ: ການຕິດຕັ້ງຫ້ອງສະຫມຸດເຂົ້າໄປໃນ
Global Assembly Cache (ເບິ່ງ gacutil(1)) ຫຼືມີການເພິ່ງພາອາໄສ
ຫ້ອງສະຫມຸດຂ້າງຄຽງກັບການປະຕິບັດຕົ້ນຕໍ.
ສໍາລັບລາຍລະອຽດຄົບຖ້ວນສົມບູນຂອງການປະຕິບັດທີ່ແນະນໍາສໍາລັບຄໍາຮ້ອງສະຫມັກ
ການ​ນໍາ​ໃຊ້​, ເບິ່ງ​
http://www.mono-project.com/docs/getting-started/application-deployment/

MONO_RTC
ການທົດລອງສະຫນັບສະຫນູນ RTC ໃນ profiler ສະຖິຕິ: ຖ້າຜູ້ໃຊ້ມີ
ການອະນຸຍາດ, ສະຖິຕິທີ່ຖືກຕ້ອງຫຼາຍແມ່ນເກັບກໍາ. MONO_RTC
ມູນຄ່າຕ້ອງຖືກຈໍາກັດກັບສິ່ງທີ່ Linux rtc ອະນຸຍາດໃຫ້: ພະລັງງານຂອງສອງ
ຈາກ 64 ຫາ 8192 Hz. ເພື່ອເປີດໃຊ້ຄວາມຖີ່ທີ່ສູງຂຶ້ນເຊັ່ນ 4096 Hz, ດໍາເນີນການເປັນຮາກ:

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

ຍົກ​ຕົວ​ຢ່າງ:

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

MONO_SHARED_DIR
ຖ້າຕັ້ງໄດເລກະທໍລີຂອງມັນບ່ອນທີ່ ".wapi" handle state ຖືກເກັບໄວ້. ນີ້​ແມ່ນ
ໄດເຣັກທໍຣີບ່ອນທີ່ຊັ້ນ Emulation Windows I/O ເກັບຂໍ້ມູນລັດທີ່ແບ່ງປັນຂອງມັນ
(ໄຟລ໌, ເຫດການ, mutexes, ທໍ່). ໂດຍຄ່າເລີ່ມຕົ້ນ Mono ຈະເກັບຮັກສາໄດເລກະທໍລີ ".wapi".
ຢູ່ໃນໄດເລກະທໍລີເຮືອນຂອງຜູ້ໃຊ້.

MONO_SHARED_HOSTNAME
ໃຊ້ຄ່າສະຕຣິງຂອງຕົວແປນີ້ແທນຊື່ເຈົ້າພາບເມື່ອ
ການສ້າງຊື່ໄຟລ໌ໃນໄດເລກະທໍລີ ".wapi". ນີ້ຊ່ວຍຖ້າຫາກວ່າຊື່ເຈົ້າພາບຂອງເຈົ້າ
ເຄື່ອງມີແນວໂນ້ມທີ່ຈະມີການປ່ຽນແປງໃນເວລາທີ່ຄໍາຮ້ອງສະຫມັກ mono ກໍາລັງເຮັດວຽກຫຼືຖ້າຫາກວ່າທ່ານມີ
ໄດເລກະທໍລີ .wapi ແບ່ງປັນລະຫວ່າງຄອມພິວເຕີຫຼາຍໆເຄື່ອງ. Mono ປົກກະຕິແລ້ວໃຊ້
hostname ເພື່ອສ້າງໄຟລ໌ທີ່ຖືກນໍາໃຊ້ເພື່ອແບ່ງປັນລັດໃນທົ່ວຫຼາຍ Mono
ຂະບວນການ. ນີ້ແມ່ນເຮັດເພື່ອສະຫນັບສະຫນູນໄດເລກະທໍລີເຮືອນທີ່ອາດຈະຖືກແບ່ງປັນຜ່ານ
ເຄືອຂ່າຍ.

MONO_STRICT_IO_EMULATION
ຖ້າຕັ້ງ, ການກວດສອບເພີ່ມເຕີມແມ່ນເຮັດໃນລະຫວ່າງການປະຕິບັດງານ IO. ໃນປັດຈຸບັນ, ນີ້ປະກອບມີພຽງແຕ່
locks ຄໍາແນະນໍາກ່ຽວກັບການຂຽນໄຟລ໌.

MONO_THEME
ຊື່ຂອງຮູບແບບສີສັນທີ່ຈະໃຊ້ໂດຍ Windows.Forms. ຫົວຂໍ້ທີ່ມີຢູ່ໃນມື້ນີ້ລວມມີ
"clearlooks", "ງາມ" ແລະ "win32". ຄ່າເລີ່ມຕົ້ນແມ່ນ "win32".

MONO_TLS_SESSION_CACHE_TIMEOUT
ເວລາເປັນວິນາທີທີ່ SSL/TLS session cache ຈະຮັກສາມັນໄວ້ເພື່ອຫຼີກເວັ້ນ
ການເຈລະຈາໃຫມ່ລະຫວ່າງລູກຄ້າແລະເຄື່ອງແມ່ຂ່າຍ. ການເຈລະຈາແມ່ນ CPU ຫຼາຍ
ເຂັ້ມຂຸ້ນດັ່ງນັ້ນມູນຄ່າທີ່ກໍາຫນົດເອງຂອງແອັບພລິເຄຊັນສະເພາະອາດຈະເປັນປະໂຫຍດສໍາລັບຂະຫນາດນ້ອຍ
ລະບົບຝັງ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 180 ວິນາທີ.

MONO_THREADS_PER_CPU
ຈໍານວນຕໍາ່ສຸດທີ່ຂອງ threadpool ທົ່ວໄປຈະເປັນ
MONO_THREADS_PER_CPU * ຈຳນວນ CPU. ຄ່າເລີ່ມຕົ້ນຂອງຕົວແປນີ້ແມ່ນ 1.

MONO_XMLSERIALIZER_THS
ຄວບຄຸມເກນສຳລັບ XmlSerializer ເພື່ອຜະລິດ serializer ແບບກຳນົດເອງສຳລັບ a
ຫ້ອງຮຽນທີ່ມອບໃຫ້ ແທນທີ່ຈະໃຊ້ຕົວແປທີ່ອີງໃສ່ການສະທ້ອນ. ຄຸນຄ່າທີ່ເປັນໄປໄດ້
ແມ່ນ 'ບໍ່' ເພື່ອປິດການໃຊ້ serializer ແບບກຳນົດເອງ ຫຼືຕົວເລກເພື່ອຊີ້ບອກເວລາ
XmlSerializer ຄວນເລີ່ມການຈັດລໍາດັບ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 50, ຊຶ່ງຫມາຍຄວາມວ່າ
serializer ກໍານົດເອງຈະຖືກຜະລິດໃນການນໍາໃຊ້ທີ 50.

MONO_X509_REVOCATION_MODE
ກໍານົດຮູບແບບການຖອນຄືນທີ່ໃຊ້ໃນເວລາທີ່ການກວດສອບລະບົບຕ່ອງໂສ້ໃບຢັ້ງຢືນ X509 (https,
ftps, smtps...). ຄ່າເລີ່ມຕົ້ນແມ່ນ 'nocheck', ເຊິ່ງບໍ່ດໍາເນີນການກວດສອບການຖອນຄືນ
ທັງໝົດ. ຄ່າທີ່ເປັນໄປໄດ້ອື່ນໆແມ່ນ 'ອອບໄລນ໌', ເຊິ່ງດໍາເນີນການກວດສອບ CRL (ບໍ່ແມ່ນ
ປະຕິບັດເທື່ອ) ແລະ 'ອອນໄລນ໌' ເຊິ່ງໃຊ້ OCSP ແລະ CRL ເພື່ອກວດສອບການຖອນຄືນ
ສະ​ຖາ​ນະ​ພາບ (ຍັງ​ບໍ່​ໄດ້​ປະ​ຕິ​ບັດ​)​.

ENVIRONMENT ຄວາມຮັບຜິດຊອບ FOR ກຳ ລັງດີບັກ


MONO_ASPNET_NODELETE
ຖ້າຕັ້ງເປັນຄ່າໃດກໍ່ຕາມ, ໄຟລ໌ແຫຼ່ງຊົ່ວຄາວທີ່ສ້າງຂຶ້ນໂດຍຫ້ອງຮຽນສະຫນັບສະຫນູນ ASP.NET
ຈະບໍ່ຖືກໂຍກຍ້າຍ. ພວກມັນຈະຖືກເກັບໄວ້ໃນບັນຊີຊົ່ວຄາວຂອງຜູ້ໃຊ້.

MONO_DEBUG
ຖ້າຕັ້ງໄວ້, ເປີດໃຊ້ຄຸນສົມບັດບາງຢ່າງຂອງເວລາແລ່ນທີ່ມີປະໂຫຍດສຳລັບການດີບັກ. ຕົວແປນີ້
ຄວນມີລາຍການທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຕົວເລືອກການດີບັກ. ໃນປັດຈຸບັນ, ໄດ້
ທາງ​ເລືອກ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​ແມ່ນ​ສະ​ຫນັບ​ສະ​ຫນູນ​:

break-on-unverified
ຖ້າຕົວແປນີ້ຖືກຕັ້ງ, ເມື່ອ Mono VM ແລ່ນເຂົ້າໄປໃນບັນຫາການຢັ້ງຢືນ,
ແທນທີ່ຈະຖິ້ມຂໍ້ຍົກເວັ້ນມັນຈະແຕກເຂົ້າໄປໃນຕົວດີບັກ. ນີ້​ແມ່ນ
ເປັນປະໂຫຍດເມື່ອແກ້ໄຂບັນຫາຕົວກວດສອບ

ສຽງໂຫວດທັງຫມົດ ທາງເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອເອົາຂໍ້ມູນລາຍລະອຽດເພີ່ມເຕີມຈາກ InvalidCast
ຂໍ້ຍົກເວັ້ນ, ມັນຈະໃຫ້ຂໍ້ມູນກ່ຽວກັບປະເພດທີ່ກ່ຽວຂ້ອງ.

ເກັບກຳ-pagefault-stats
ເກັບກໍາຂໍ້ມູນກ່ຽວກັບຄວາມຜິດຂອງຫນ້າ. ນີ້ຖືກນໍາໃຊ້ພາຍໃນເພື່ອຕິດຕາມ
ຈໍານວນຄວາມຜິດຂອງຫນ້າທີ່ຜະລິດເພື່ອໂຫລດ metadata. ເພື່ອສະແດງສິ່ງນີ້
ຂໍ້​ມູນ​ທີ່​ທ່ານ​ຕ້ອງ​ການ​ນໍາ​ໃຊ້​ທາງ​ເລືອກ​ນີ້​ກັບ "--stats​" ທາງ​ເລືອກ​ເສັ້ນ​ຄໍາ​ສັ່ງ​.

dont-free-domains
ນີ້ແມ່ນການເພີ່ມປະສິດທິພາບສໍາລັບຄໍາຮ້ອງສະຫມັກຫຼາຍ AppDomain (ທົ່ວໄປທີ່ສຸດ
ຄໍາຮ້ອງສະຫມັກ ASP.NET). ເນື່ອງຈາກຂໍ້ຈໍາກັດພາຍໃນ Mono, Mono ໂດຍຄ່າເລີ່ມຕົ້ນ
ບໍ່ໄດ້ໃຊ້ການຈັດສັນທີ່ພິມຢູ່ໃນແອັບພລິເຄຊັນ multi-appDomain ເທົ່າທີ່ເຂົາເຈົ້າສາມາດເຮັດໄດ້
ຄວາມຊົງຈໍາຮົ່ວໄຫຼເມື່ອໂດເມນຖືກຍົກເລີກ. ເຖິງແມ່ນວ່ານີ້ແມ່ນຄ່າເລີ່ມຕົ້ນທີ່ດີ, ສໍາລັບ
ແອັບພລິເຄຊັນທີ່ໃຊ້ຫຼາຍກວ່າ AppDomain ຢ່າງຫຼວງຫຼາຍ (ຕົວຢ່າງເຊັ່ນ ASP.NET
applications) ມັນເປັນມູນຄ່າການຊື້ຂາຍປິດການຮົ່ວໄຫຼຂະຫນາດນ້ອຍສໍາລັບການເພີ່ມຂຶ້ນ
ປະສິດທິພາບ (ນອກຈາກນັ້ນ, ເນື່ອງຈາກວ່າຄໍາຮ້ອງສະຫມັກ ASP.NET ແມ່ນບໍ່ເປັນໄປໄດ້
ເພື່ອ unload ໂດເມນຄໍາຮ້ອງສະຫມັກໃນລະບົບການຜະລິດ, ມັນເປັນມູນຄ່າການນໍາໃຊ້
ຄຸນນະສົມບັດນີ້).

dyn-runtime-voke
ແນະນຳ runtime ໃຫ້ລອງໃຊ້ runtime-invoke wrapper ທົ່ວໄປແທນ
ຂອງການສ້າງຫນຶ່ງ invoke wrapper.

gdb ທຽບ​ເທົ່າ​ກັບ​ການ​ຕັ້ງ​ຄ່າ​ MONO_XDEBUG ຕົວແປ, ນີ້ປ່ອຍສັນຍາລັກເຂົ້າໄປໃນ a
ຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນຍ້ອນວ່າລະຫັດແມ່ນ JITed ທີ່ສາມາດໂຫລດເຂົ້າໄປໃນ GDB ເພື່ອກວດສອບ
ສັນຍາລັກ.

gen-seq-ຈຸດ
ສ້າງຈຸດລໍາດັບອັດຕະໂນມັດທີ່ stack IL ຫວ່າງເປົ່າ. ເຫຼົ່ານີ້
ແມ່ນບ່ອນທີ່ຕົວດີບັກສາມາດຕັ້ງຈຸດຢຸດໄດ້.

explicit-null-checks
ເຮັດໃຫ້ JIT ສ້າງການກວດສອບ NULL ຢ່າງຊັດເຈນກ່ຽວກັບ dereferences ຕົວແປ
ແທນທີ່ຈະຂຶ້ນກັບລະບົບປະຕິບັດການເພື່ອຍົກສູງ SIGSEGV ຫຼືອື່ນ
ຮູບແບບຂອງເຫດການກັບດັກໃນເວລາທີ່ສະຖານທີ່ຫນ່ວຍຄວາມຈໍາທີ່ບໍ່ຖືກຕ້ອງຖືກເຂົ້າເຖິງ.

handle-signig
ຈັບສັນຍານລົບກວນ (Control-C) ແລະສະແດງການຕິດຕາມ stack ເມື່ອ
ກົດດັນ. ເປັນປະໂຫຍດເພື່ອຊອກຫາບ່ອນທີ່ໂຄງການກໍາລັງປະຕິບັດຢູ່ໃນທີ່ກໍານົດໄວ້
ຈຸດ. ນີ້ພຽງແຕ່ສະແດງການຕິດຕາມ stack ຂອງກະທູ້ດຽວ.

init-stacks
ແນະນຳເວລາແລ່ນເພື່ອເລີ່ມຕົ້ນ stack ດ້ວຍບາງຄ່າທີ່ຮູ້ຈັກ (0x2a
ໃນ x86-64) ໃນຕອນເລີ່ມຕົ້ນຂອງວິທີການຊ່ວຍໃນການດີບັກເຄື່ອງຈັກ JIT.

ຮັກສາຜູ້ແທນ
ທາງເລືອກນີ້ຈະຮົ່ວ trampolines ຕົວແທນທີ່ບໍ່ໄດ້ອ້າງເຖິງເປັນ
ເພື່ອນໍາສະເຫນີໃຫ້ຜູ້ໃຊ້ມີຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບການນໍາໃຊ້ທີ່ບໍ່ຖືກຕ້ອງຂອງຕົວແທນ.
ໂດຍພື້ນຖານແລ້ວ, ຕົວຢ່າງຕົວແທນອາດຈະຖືກສ້າງຂື້ນ, ຖືກສົ່ງໄປຫາລະຫັດທີ່ບໍ່ສາມາດຈັດການໄດ້,
ແລະບໍ່ມີການອ້າງອິງເກັບຮັກສາໄວ້ໃນລະຫັດທີ່ຖືກຄຸ້ມຄອງ, ເຊິ່ງຈະຂີ້ເຫຍື້ອເກັບກໍາລະຫັດ.
ດ້ວຍທາງເລືອກນີ້ມັນເປັນໄປໄດ້ທີ່ຈະຕິດຕາມແຫຼ່ງຂອງບັນຫາ.

reverse-pinvoke-exceptions
ຕົວເລືອກນີ້ຈະເຮັດໃຫ້ mono ຍົກເລີກດ້ວຍຂໍ້ຄວາມອະທິບາຍໃນເວລາ
stack unwinding ຫຼັງຈາກມີຂໍ້ຍົກເວັ້ນ, ມັນໄປຮອດກອບ stack ພື້ນເມືອງ. ນີ້
ເກີດຂຶ້ນເມື່ອຕົວແທນທີ່ຖືກຄຸ້ມຄອງຖືກສົ່ງກັບລະຫັດພື້ນເມືອງ, ແລະການຄຸ້ມຄອງ
ຜູ້ແທນຖິ້ມຂໍ້ຍົກເວັ້ນ. ປົກກະຕິແລ້ວ Mono ຈະພະຍາຍາມ unwind stack ກັບ
ຕົວຈັດການຂໍ້ຍົກເວັ້ນ (ຈັດການ) ທໍາອິດ, ແລະມັນຈະຂ້າມ stack ພື້ນເມືອງໃດໆ
ກອບໃນຂະບວນການ. ນີ້ນໍາໄປສູ່ພຶດຕິກໍາທີ່ບໍ່ໄດ້ກໍານົດ (ນັບຕັ້ງແຕ່ mono ບໍ່ມີ
ຮູ້​ວິ​ທີ​ການ​ປຸງ​ແຕ່ງ​ເຟຣມ​ພື້ນ​ເມືອງ​)​, ການ​ຮົ່ວ​ໄຫລ​, ແລະ​ອາດ​ຈະ​ເກີດ​ອຸ​ປະ​ສັກ​ເຊັ່ນ​ດຽວ​ກັນ​.

no-gdb-backtrace
ຕົວເລືອກນີ້ຈະປິດການໃຊ້ງານ backtrace GDB ທີ່ປ່ອຍອອກມາໂດຍ runtime ຫຼັງຈາກ a
SIGSEGV ຫຼື SIGABRT ໃນລະຫັດທີ່ບໍ່ສາມາດຈັດການໄດ້.

suspend-on-sigsegv
ຕົວເລືອກນີ້ຈະລະງັບໂຄງການເມື່ອໄດ້ຮັບ SIGSEGV ແບບພື້ນເມືອງ.
ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການດີບັກການຂັດຂ້ອງທີ່ບໍ່ເກີດຂຶ້ນພາຍໃຕ້ gdb, ນັບຕັ້ງແຕ່ a
ຂະບວນການສົດມີຂໍ້ມູນຫຼາຍກວ່າໄຟລ໌ຫຼັກ.

check-pinvoke-callconv
ຕົວເລືອກນີ້ເຮັດໃຫ້ runtime ກວດສອບການໂທຫາບໍ່ກົງກັນຂອງສົນທິສັນຍາ
ເມື່ອໃຊ້ pinvoke, ie mix cdecl/stdcall. ມັນພຽງແຕ່ເຮັດວຽກຢູ່ໃນປ່ອງຢ້ຽມ. ຖ້າ
ກວດພົບບໍ່ກົງກັນ, ExecutionEngineException ຖືກຖິ້ມ.

MONO_LOG_LEVEL
ລະ​ດັບ​ການ​ບັນ​ທຶກ​, ຄຸນ​ຄ່າ​ທີ່​ເປັນ​ໄປ​ໄດ້​ແມ່ນ "ຄວາມ​ຜິດ​ພາດ​"​, "ວິ​ຈານ​"​, "ຄໍາ​ເຕືອນ​"​, "ຂໍ້​ຄວາມ​"​,
'ຂໍ້ມູນ' ແລະ 'ດີບັກ'. ເບິ່ງພາກສ່ວນ DEBUGGING ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.

MONO_LOG_MASK
ຄວບຄຸມໂດເມນຂອງ Mono runtime ທີ່ການບັນທຶກຈະນຳໃຊ້ກັບ. ຖ້າຕັ້ງ, ໄດ້
ຫນ້າກາກບັນທຶກຖືກປ່ຽນເປັນຄ່າທີ່ກໍານົດໄວ້. ຄ່າທີ່ເປັນໄປໄດ້ແມ່ນ "asm" (assembly loader),
"type", "dll" (ຕົວໂຫຼດຫ້ອງສະຫມຸດພື້ນເມືອງ), "gc" (ຕົວເກັບຂີ້ເຫຍື້ອ), "cfg" (ໄຟລ໌ config.
loader), "aot" (precompiler), "ຄວາມປອດໄພ" (ເຊັ່ນ: Moonlight CoreCLR ສະຫນັບສະຫນູນ) ແລະ
"ທັງຫມົດ". ຄ່າເລີ່ມຕົ້ນແມ່ນ "ທັງຫມົດ". ການປ່ຽນແປງມູນຄ່າຫນ້າກາກຊ່ວຍໃຫ້ທ່ານສາມາດສະແດງໄດ້
ພຽງແຕ່ຂໍ້ຄວາມສໍາລັບອົງປະກອບສະເພາະໃດຫນຶ່ງ. ທ່ານສາມາດໃຊ້ໜ້າກາກຫຼາຍອັນໂດຍເຄື່ອງໝາຍຈຸດ
ແຍກເຂົາເຈົ້າ. ຕົວຢ່າງເພື່ອເບິ່ງ config file messages ແລະ assembly loader
ຂໍ້ຄວາມຕັ້ງໃຫ້ທ່ານຫນ້າກາກເປັນ "asm,cfg".

MONO_TRACE
ໃຊ້ສໍາລັບການຕິດຕາມເວລາຂອງການໂທວິທີການ. ຮູບແບບຂອງເຄື່ອງໝາຍຈຸດທີ່ແຍກຕາມຮອຍ
ທາງ​ເລືອກ​ແມ່ນ​:

[-]M​: ຊື່​ວິ​ທີ​ການ​
[-]N:namespace
[-]T:ຊື່ຫ້ອງຮຽນ
[-]ທັງໝົດ
[-]ໂຄງການ
ປິດການນຳໃຊ້ Trace output ເມື່ອເລີ່ມຕົ້ນ.

ທ່ານ​ສາ​ມາດ​ສະ​ຫຼັບ​ຜົນ​ໄດ້​ຮັບ​ການ​ຕິດ​ຕາມ​ເປີດ / ປິດ​ການ​ສົ່ງ​ສັນ​ຍານ SIGUSR2 ກັບ​ໂຄງ​ການ​.

MONO_TRACE_LISTENER
ຖ້າຕັ້ງ, ເປີດໃຊ້ System.Diagnostics.DefaultTraceListener, ເຊິ່ງຈະພິມເອກະສານ.
ຜົນໄດ້ຮັບຂອງຫ້ອງຮຽນ System.Diagnostics Trace ແລະ Debug. ມັນສາມາດຖືກຕັ້ງຄ່າເປັນ
ຊື່ໄຟລ໌, ແລະໄປທີ່ Console.Out ຫຼື Console.Error ເພື່ອສະແດງຜົນອອກເປັນຜົນຜະລິດມາດຕະຖານ
ຫຼືຄວາມຜິດພາດມາດຕະຖານ, ຕາມລໍາດັບ. ຖ້າມັນຖືກຕັ້ງເປັນ Console.Out ຫຼື Console.Error ທ່ານ
ສາມາດຕໍ່ທ້າຍຄຳນຳໜ້າທາງເລືອກທີ່ຈະໃຊ້ໃນເວລາຂຽນຂໍ້ຄວາມແບບນີ້:
Console.Error:MyProgramName. ເບິ່ງ System.Diagnostics.DefaultTraceListener
ເອກະສານສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.

MONO_WCF_TRACE
ນີ້ເຮັດໃຫ້ການທໍາງານການວິນິດໄສ WCF ງ່າຍຂຶ້ນໂດຍພຽງແຕ່ສົ່ງຂໍ້ຄວາມບັນທຶກທັງໝົດຈາກ
ເຄື່ອງຈັກ WCF ໄປຫາ "stdout", "stderr" ຫຼືໄຟລ໌ໃດໆທີ່ຖືກສົ່ງໄປຫາຕົວແປສະພາບແວດລ້ອມນີ້.
ຮູບແບບບັນທຶກແມ່ນຄືກັນກັບຜົນການວິນິດໄສປົກກະຕິ.

MONO_XEXCEPTIONS
ນີ້ຖິ້ມຂໍ້ຍົກເວັ້ນເມື່ອພົບຂໍ້ຜິດພາດ X11; ໂດຍຄ່າເລີ່ມຕົ້ນຂໍ້ຄວາມແມ່ນ
ສະແດງໃຫ້ເຫັນແຕ່ການປະຕິບັດຍັງສືບຕໍ່

MONO_XMLSERIALIZER_DEBUG
ຕັ້ງຄ່ານີ້ເປັນ 1 ເພື່ອປ້ອງກັນບໍ່ໃຫ້ serializer ລົບໄຟລ໌ຊົ່ວຄາວ
ທີ່ຖືກສ້າງຂຶ້ນສໍາລັບການ serialization ໄວ; ນີ້ອາດຈະເປັນປະໂຫຍດໃນເວລາທີ່ດີບັກ.

MONO_XSYNC
ອັນນີ້ຖືກໃຊ້ໃນການປະຕິບັດ System.Windows.Forms ເມື່ອແລ່ນກັບ X11
ດ້ານຫຼັງ. ອັນນີ້ໃຊ້ເພື່ອແກ້ບັນຫາໃນ Windows.Forms ຍ້ອນວ່າມັນບັງຄັບທັງໝົດ
ຄໍາສັ່ງສົ່ງໄປຫາເຄື່ອງແມ່ຂ່າຍ X11 ເພື່ອເຮັດ synchronously. ຮູບແບບເລີ່ມຕົ້ນຂອງ
ການດໍາເນີນງານແມ່ນ asynchronous ເຊິ່ງເຮັດໃຫ້ມັນຍາກທີ່ຈະແຍກຮາກຂອງທີ່ແນ່ນອນ
ບັນຫາ.

MONO_GENERIC_SHARING
ຕົວແປສະພາບແວດລ້ອມນີ້ຄວບຄຸມປະເພດຂອງການແບ່ງປັນທົ່ວໄປທີ່ໃຊ້. ຕົວແປນີ້
ຖືກນໍາໃຊ້ໂດຍນັກພັດທະນາ JIT ພາຍໃນແລະບໍ່ຄວນປ່ຽນແປງໃນການຜະລິດ. ຢ່າ
ໃຊ້​ມັນ. ຕົວແປຄວບຄຸມວ່າຫ້ອງຮຽນໃດຈະມີການແບ່ງປັນລະຫັດທົ່ວໄປ
ເປີດໃຊ້ງານ. ຄ່າທີ່ອະນຸຍາດແມ່ນ:

ທັງຫມົດ ສາມາດແບ່ງປັນລະຫັດທີ່ສ້າງຂຶ້ນທັງໝົດໄດ້.

ຊັນ
ສະເພາະຫ້ອງຮຽນໃນ System.Collections.Generic ເທົ່ານັ້ນທີ່ຈະແບ່ງປັນລະຫັດຂອງມັນ
(ນີ້ແມ່ນຄ່າເລີ່ມຕົ້ນ).

ຄໍລິບ ພຽງແຕ່ລະຫັດໃນ corlib ທີ່ຈະແບ່ງປັນລະຫັດຂອງມັນ.

none ບໍ່ມີການແບ່ງປັນລະຫັດທົ່ວໄປຈະຖືກປະຕິບັດ.
ການແບ່ງປັນລະຫັດທົ່ວໄປຕາມຄ່າເລີ່ມຕົ້ນໃຊ້ກັບຄໍເລັກຊັນເທົ່ານັ້ນ. Mono JIT ໂດຍຄ່າເລີ່ມຕົ້ນ
ເປີດອັນນີ້.

MONO_XDEBUG
ເມື່ອ MONO_XDEBUG env var ຖືກຕັ້ງ, ຂໍ້ມູນການດີບັກສໍາລັບລະຫັດ JITted ຈະຖືກປ່ອຍອອກມາ.
ເຂົ້າໄປໃນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ, ສາມາດໂຫລດເຂົ້າໄປໃນ gdb. ນີ້ເຮັດໃຫ້, ສໍາລັບການຍົກຕົວຢ່າງ, ເພື່ອເບິ່ງການຄຸ້ມຄອງ
ຊື່ກອບໃນ gdb backtraces.

MONO_VERBOSE_METHOD
ເປີດໃຊ້ JIT verbosity ສູງສຸດສໍາລັບວິທີການທີ່ລະບຸ. ອັນນີ້ມີປະໂຫຍດຫຼາຍ
ເພື່ອວິນິດໄສບັນຫາການລວບລວມຜິດຂອງວິທີການສະເພາະ.

MONO_VERBOSE_HWCAP
ຖ້າຕັ້ງ, ເຮັດໃຫ້ຂໍ້ມູນ JIT output ກ່ຽວກັບຄຸນສົມບັດ CPU ທີ່ກວດພົບ (ເຊັ່ນ: SSE,
CMOV, FCMOV, ແລະອື່ນໆ) ເພື່ອ stdout.

MONO_CONSERVATIVE_HWCAP
ຖ້າຕັ້ງ, JIT ຈະບໍ່ປະຕິບັດການກວດສອບຄວາມສາມາດຂອງຮາດແວ. ນີ້ອາດຈະເປັນ
ເປັນປະໂຫຍດເພື່ອຊີ້ໃຫ້ເຫັນສາເຫດຂອງບັນຫາ JIT. ນີ້ແມ່ນຄ່າເລີ່ມຕົ້ນເມື່ອ Mono ຖືກສ້າງຂຶ້ນ
ໃນຖານະທີ່ເປັນ AOT cross compiler, ດັ່ງນັ້ນລະຫັດທີ່ສ້າງຂຶ້ນຈະເຮັດວຽກຢູ່ໃນຮາດແວສ່ວນໃຫຍ່.

VALGRIND


ຖ້າທ່ານຕ້ອງການໃຊ້ Valgrind, ທ່ານຈະພົບເຫັນໄຟລ໌ 'mono.supp' ທີ່ເປັນປະໂຫຍດ, ມັນມີໄຟລ໌
ການສະກັດກັ້ນສໍາລັບ GC ທີ່ເຮັດໃຫ້ເກີດການເຕືອນທີ່ບໍ່ຖືກຕ້ອງ. ໃຊ້ມັນແບບນີ້:
valgrind --suppressions=mono.supp ໂມໂນ ...

DTRACE


ໃນບາງເວທີ, Mono ສາມາດເປີດເຜີຍຊຸດຂອງ DTrace probes (ຍັງເອີ້ນວ່າ user-land
ກໍານົດໂດຍສະຖິຕິ, USDT Probes).

ພວກມັນຖືກກໍານົດໄວ້ໃນໄຟລ໌ `mono.d'.

ves-init-ເລີ່ມຕົ້ນ, ves-init-end
ເລີ່ມຕົ້ນແລະສິ້ນສຸດການເລີ່ມຕົ້ນ runtime.

method-compile-start, method-compile-end
ເລີ່ມຕົ້ນແລະສິ້ນສຸດຂອງການລວບລວມວິທີການ. ການໂຕ້ຖຽງ probe ແມ່ນຊື່ຫ້ອງຮຽນ, ວິທີການ
ຊື່ແລະລາຍເຊັນ, ແລະໃນກໍລະນີຂອງວິທີການ - ລວບລວມ - ສິ້ນສຸດຜົນສໍາເລັດຫຼືຄວາມລົ້ມເຫຼວຂອງ
ການລວບລວມ.

gc-ເລີ່ມຕົ້ນ, gc-end
ເລີ່ມຕົ້ນແລະສິ້ນສຸດການເກັບຂີ້ເຫຍື້ອ.

ເພື່ອກວດສອບຄວາມພ້ອມຂອງ probes, ດໍາເນີນການ:
dtrace -P mono'$target' -l -c mono

ການປະຕິບັດ


ການປະຕິບັດ Ping ຂອງ Mono ສໍາລັບການກວດສອບການເຂົ້າເຖິງເຄືອຂ່າຍສາມາດສ້າງແພັກເກັດ ICMP ໄດ້
ຕົວຂອງມັນເອງໂດຍບໍ່ຈໍາເປັນຕ້ອງມີຄໍາສັ່ງ ping ລະບົບເພື່ອເຮັດວຽກ. ຖ້າທ່ານຕ້ອງການເປີດໃຊ້
ນີ້ຢູ່ໃນ Linux ສໍາລັບຜູ້ໃຊ້ທີ່ບໍ່ແມ່ນຮາກ, ທ່ານຈໍາເປັນຕ້ອງໃຫ້ສິດພິເສດ Mono binary.

ໃນຖານະເປັນຮາກ, ດໍາເນີນການຄໍາສັ່ງນີ້:
# setcap cap_net_raw=+ep /usr/bin/mono

ໃຊ້ mono online ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

Linux ຄຳ ສັ່ງ

Ad