diff --git a/docs/project/linux-performance-tracing.md b/docs/project/linux-performance-tracing.md index 217bd2d2012330..12b07b436ee447 100644 --- a/docs/project/linux-performance-tracing.md +++ b/docs/project/linux-performance-tracing.md @@ -165,28 +165,22 @@ symbols for these when it converts its data, but ONLY if the symbols for these n the library they are for). There is a global command called [dotnet symbol](https://github.com/dotnet/symstore/blob/master/src/dotnet-symbol/README.md#symbol-downloader-dotnet-cli-extension) which does this. This tool was mostly desiged to download symbols -for debugging, but it works for perfcollect as well. There are three steps to getting the symbols +for debugging, but it works for perfcollect as well. There are two steps to getting the symbols: - 1. Install dotnet symbol + 1. Install dotnet symbol. 2. Download the symbols. - 3. Copy the symbols to the correct place To install dotnet symbol issue the command ``` dotnet tool install -g dotnet-symbol ``` -With that installed download the symbols to a local directory. if your installed version of the .NET Core runtime is -2.1.0 the command to do this is -``` - mkdir mySymbols - dotnet symbol --symbols --output mySymbols /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.0/lib*.so -``` -Now all the symbols for those native dlls are in mySymbols. You then have to copy them (as super user next to the -dlls that they are for. + +To download symbols for **all native libraries** (including .NET runtime/framework as well as any other installed frameworks like ASP.NET) and store them next to them: + ``` - sudo cp mySymbols/* /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.0 + sudo dotnet symbol --recurse-subdirectories --symbols '/usr/share/dotnet/*.so' ``` -After this, you should get symbolic names for the native dlls when you run perfcollect. + ## Collecting in a Docker Container ## Perfcollect can be used to collect data for an application running inside a Docker container. The main thing to know is that collecting a trace requires elevated privileges because the [default seccomp profile](https://docs.docker.com/engine/security/seccomp/) blocks a required syscall - perf_events_open.