mprof-report(1)

πŸ’– mprof-report β€” the report generator for Mono's log profiler πŸ’–

okay bestie, so this is mprof-report(1), from the General Commands Manual β€” it's a command-line tool, and it's literally the moment your profiler data stops being a mystery blob and starts being a whole report. πŸŽ€


✨ SYNOPSIS ✨

mprof-report [option]... file.mlpd

🌸 DESCRIPTION 🌸

mprof-report is the report generator for Mono's log profiler. It reads the MLPD log files that the log profiler produces and generates a report based on whatever options you passed it. The output is built out of individual reports, and you can turn each one on or off like little light switches. By default, all reports are generated in summary form β€” aka non-verbose output, aka the chill version, not the unhinged detail version. πŸ¦‹

ngl, one of the cutest things about it: mprof-report can read both normal and gzip(1)-compressed log files transparently. You don't have to decompress anything, it just handles it. periodt. πŸ’…

Wanna know how to actually use the log profiler with a program? Go read the mono-profilers(1) page, under the LOG PROFILER</> section. iykyk. πŸ‘‘


✨ OPTIONS ✨

The following options are available, bestie β€” collect them all:

  • --help β€” Displays usage instructions. the classic "help me pls" move 🫢
  • *--out=file* β€” Write the report output to file instead of standard output. yes, you can yeet it into a file instead of letting it scroll forever in your terminal 😭
  • --traces β€” Show backtraces in reports when available. the receipts!! πŸ’€
  • *--maxframes=num* β€” Limit backtraces to num frames. because sometimes 4000 frames is not the vibe πŸ“
  • --reports=reports β€” Generate *only the specified reports. *reports is a comma-separated list of reports. See the REPORTS</> section below, boo. ✨
  • *--method-sort=mode* β€” Sort methods according to mode, which can be one of:
    • total (default) β€” Sort by the total amount of time spent in a method and its callees. the whole squad counts πŸ’œ
    • self β€” Sort by the amount of time spent only within a method itself. main character energy, no entourage πŸ‘‘
    • calls β€” Sort by the total amount of calls made to a method. how many times did we text them fr fr πŸ“±
  • *--alloc-sort=mode* β€” Sort allocations according to mode, which can be one of:
    • bytes (default) β€” Sort by the amount of heap bytes occupied by all allocated objects of a type. chunky = important 🌈
    • count β€” Sort by the total amount of allocations of a type. quantity over quality, lowkey
  • *--counters-sort=mode* β€” Sort counters according to mode. This alters how the counters</> report is presented. It can be one of:
    • time (default) β€” Present a list of samples, each containing a list of counter name-value pairs. sample first, then the deets 🧚
    • category β€” Present a list of counter names, each containing a list of sampled values. name first, then the receipts ⭐
    • > heads up: this option has no effect unless --verbose is passed. so don't come crying to me when nothing changes, bestie πŸ™ˆ
  • *--track=objects* β€” Track what happens to the specified objects. objects is a comma-separated list of object addresses. it's giving surveillance but make it debugging πŸ•΅οΈ
  • *--find=spec* β€” Find and track what happens to objects matching spec, which can have one of these forms:
    • S:minimum_size β€” Look for objects that are at least minimum_size bytes in size.
    • T:name_fragment β€” Look for objects whose type name contain name_fragment.
    • > cute detail: both an S and a T spec can be given by passing the option twice. two options, one icon πŸ’…
  • *--thread=tid* β€” Consider only events from the thread with ID tid. one thread only, we're being exclusive today πŸ’–
  • *--time=span* β€” Consider only events occurring in the specified time span. span must be of the form from-to where from and to are seconds since the program started. time travel but legally πŸ¦‹
  • --verbose β€” Print verbose output. the unhinged version, as promised 😌
  • --debug β€” Print extremely detailed debug output. Most users should not use this option. I'm serious bestie, this one is a lot. it's giving firehose πŸ’€

🌟 REPORTS 🌟

The following reports are available β€” mix and match with --reports, mwah πŸ’‹:

  • header β€” Program startup and profiler version and operational information.
  • jit β€” JIT compiler statistics.
  • gc β€” Garbage collection and handle statistics.
  • sample β€” Flat statistical sampling profile.
  • alloc β€” Per-class GC allocation statistics and backtraces.
  • call β€” Method call statistics and backtraces.
  • metadata β€” Loaded images and assemblies.
  • exception β€” Exception statistics and backtraces.
  • monitor β€” Monitor lock statistics and backtraces.
  • thread β€” Managed thread names.
  • domain β€” Loaded application domains.
  • context β€” Loaded remoting contexts.
  • heapshot β€” Heap snapshot information.
  • counters β€” Performance counter samples.

πŸ‘€ SEE ALSO πŸ‘€


okay that's the whole thing, you ate that 🫢 go profile something and come back with a slay report. this was mprof-report, section 1 of the General Commands Manual β€” sending you love, stay hydrated, and remember: verbose output is a lifestyle πŸ’–βœ¨πŸŽ€