Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 7 additions & 13 deletions docs/project/linux-performance-tracing.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down