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.