From 1f10c46644e1478d9ae730b374c5f1006bd35843 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Fri, 10 Mar 2023 15:30:14 -0600 Subject: [PATCH] [docs] how to get gc dumps w/ `dotnet-trace` Context: https://github.com/dotnet/maui/pull/13833 Writing down how to do this for future self and others! --- Documentation/guides/tracing.md | 57 ++++++++++++++++++++++++++++ Documentation/images/VS-GC-Dump.png | Bin 0 -> 31645 bytes 2 files changed, 57 insertions(+) create mode 100644 Documentation/images/VS-GC-Dump.png diff --git a/Documentation/guides/tracing.md b/Documentation/guides/tracing.md index 1f8babf6141..3edcc12763b 100644 --- a/Documentation/guides/tracing.md +++ b/Documentation/guides/tracing.md @@ -98,6 +98,63 @@ And the output files should be found in the current directory. You can use the `-o` switch if you would prefer to output them to a specific directory. +## How to get GC memory dumps? + +If running on desktop, you can simply do: + +``` +$ dotnet gcdump collect -p 29096 +``` + +See the [`dotnet-gcdump` documentation][dotnet-gcdump] for details. + +This will connect to a process and save a `*.gcdump` file. You can +open this file in Visual Studio on Windows, for example: + +![Visual Studio GC Heap Dump](../images/VS-GC-Dump.png) + +To get this data from an Android application, you need all the above +setup for `adb shell`, `dsrouter`, etc. except you need to change the +provider for `dotnet-trace`: + +``` +$ dotnet-trace collect --diagnostic-port /tmp/maui-app --providers Microsoft-DotNETRuntimeMonoProfiler:0xC900003:4 +``` + +`0xC900003`, a bitmask, enables the following event types: + +* `GCKeyword` +* `GCHandleKeyword` +* `GCHeapCollectKeyword` +* `GCRootKeyword` + +See the [`Microsoft-DotNETRuntimeMonoProfiler` event types][mono-events] for more info. + +`:4` enables "Informational" verbosity. + +This saves a `.nettrace` file with GC events that are not available +with the default provider. + +To actually view this data, you'll have to use one of: + +* https://github.com/lateralusX/diagnostics-nettrace-samples +* https://github.com/filipnavara/mono-nettrace-gcdump + +Using `mono-nettrace-gcdump`: + +``` +$ dotnet run --project mono-nettrace-gcdump.csproj -- foo.nettrace +``` + +This saves a `foo.gcdump` that you can open in Visual Studio. + +See the [dotnet/runtime documentation][gc-dumps-on-mono] for +additional details. + +[dotnet-gcdump]: https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-gcdump +[mono-events]: https://github.com/dotnet/runtime/blob/c887c92d8af4ce65b19962b777f96ae8eb997a42/src/coreclr/vm/ClrEtwAll.man#L7425 +[gc-dumps-on-mono]: https://github.com/dotnet/runtime/blob/728fd85bc7ad04f5a0ea2ad0d4d8afe371ff9b64/docs/design/mono/diagnostics-tracing.md#collect-gc-dumps-on-monovm + ## How to `dotnet trace` our build? Setting this up is easy, the main issue is there end up being diff --git a/Documentation/images/VS-GC-Dump.png b/Documentation/images/VS-GC-Dump.png new file mode 100644 index 0000000000000000000000000000000000000000..913a54f69018d00010b8a7e6fb6845d05a3d08b2 GIT binary patch literal 31645 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 A=Kufz literal 0 HcmV?d00001