This repository contains the source code for various .NET Core runtime diagnostic tools and documents.
Перейти к файлу
Juan Hoyos 9afb8ece50
Fix flushing of string builder for multi-parameter conditions (#625)
2019-11-19 09:47:59 -08:00
documentation Draft Proposal for Diagnostics Client Library (a.k.a. "Runtime Client Library") (#574) 2019-11-13 15:05:28 -08:00
eng Fix bpmd on Windows and other changes (#622) 2019-11-18 14:59:18 -08:00
src Fix flushing of string builder for multi-parameter conditions (#625) 2019-11-19 09:47:59 -08:00
.gitattributes Add the managed SOS code. 2018-04-26 15:47:59 -07:00
.gitignore Export feature for dotnet-counters (#493) 2019-10-25 13:03:40 -07:00
.vsts-dotnet-ci.yml Revert "Update the docker images used to have a newer version of CMake. (#597)" (#598) 2019-11-06 18:24:12 -08:00
.vsts-dotnet.yml Revert "Update the docker images used to have a newer version of CMake. (#597)" (#598) 2019-11-06 18:24:12 -08:00
Build.cmd Dependent builds, publishing and packaging (#65) 2018-08-24 16:56:12 -07:00
CMakeLists.txt Windows arm32 and Linux arm/arm64 support (#276) 2019-05-21 17:36:17 -07:00
Directory.Build.props Verbose logging for symbol publish, etc. (#495) 2019-09-21 12:32:24 -07:00
LICENSE.TXT Initialize repo 2018-03-21 18:05:51 -07:00
NuGet.config Overall cleanup for build system - part 1 (#247) 2019-05-04 14:31:32 -07:00
README.md Fix bpmd on Windows and other changes (#622) 2019-11-18 14:59:18 -08:00
Restore.cmd Add the PAL and SOS itself. 2018-05-25 16:05:35 -07:00
THIRD-PARTY-NOTICES.TXT Initial commit of dotnet-gcdump 2019-10-25 14:55:32 -07:00
Test.cmd Add the PAL and SOS itself. 2018-05-25 16:05:35 -07:00
build.sh Dependent builds, publishing and packaging (#65) 2018-08-24 16:56:12 -07:00
compileoptions.cmake Add license headers 2018-05-09 17:10:11 -07:00
crossgen.cmake Add the PAL and SOS itself. 2018-05-25 16:05:35 -07:00
debuggees.sln Add webapp debuggees and more SOS commmand tests (#507) 2019-09-30 21:04:32 -07:00
diagnostics.sln Add counters tests to the diagnostics solution file to get it tested on automation (#609) 2019-11-12 15:34:45 -08:00
functions.cmake Dependent builds, publishing and packaging (#65) 2018-08-24 16:56:12 -07:00
global.json Add webapp debuggees and more SOS commmand tests (#507) 2019-09-30 21:04:32 -07:00
restore.sh Add lldbplugin and native build scripts. 2018-05-07 16:26:31 -07:00
test.sh Add lldbplugin and native build scripts. 2018-05-07 16:26:31 -07:00

README.md

.NET Core Diagnostics Repo

This repository contains the source code for various .NET Core runtime diagnostic tools. It currently contains SOS, the managed portion of SOS, the lldb SOS plugin and various global diagnostic tools. The goals of this repo is to build SOS and the lldb SOS plugin for the portable (glibc based) Linux platform (Centos 7) and the platforms not supported by the portable (musl based) build (Centos 6, Alpine, and macOS) and to test across various indexes in a very large matrix: OSs/distros (Centos 6/7, Ubuntu, Alpine, Fedora, Debian, RHEL 7.2), architectures (x64, x86, arm, arm64), lldb versions (3.9 to 9.0) and .NET Core versions (1.1, 2.0.x, 2.1).

Another goal to make it easier to obtain a version of lldb (currently 3.9) with scripts and documentation for platforms/distros like Centos, Alpine, Fedora, etc. that by default provide really old versions.

This repo will also allow out of band development of new SOS and lldb plugin features like symbol server support for the .NET Core runtime and solve the source build problem having SOS.NETCore (managed portion of SOS) in the coreclr repo.

See the GitHub Release tab for notes on SOS and diagnostic tools releases.


Building the Repository

The build depends on Git, CMake, Python and of course a C++ compiler. Once these prerequisites are installed the build is simply a matter of invoking the 'build' script (build.cmd or build.sh) at the base of the repository.

The details of installing the components differ depending on the operating system. See the following pages based on your OS. There is no cross-building across OS (only for ARM, which is built on x64). You have to be on the particular platform to build that platform.

To install the platform's prerequisites and build:

Getting lldb

Getting a version of lldb that works for your platform can be a problem sometimes. The version has to be at least 3.9 or greater because of a bug running SOS on a core dump that was fixed. Some Linux distros like Ubuntu it is easy as sudo apt-get install lldb-3.9 python-lldb-3.9. On other distros, you will need to build lldb. The directions below should give you some guidance.

Installing SOS

Using SOS

Tools

  • dotnet-dump - Dump collection and analysis utility.
  • dotnet-trace - Enable the collection of events for a running .NET Core Application to a local trace file.
  • dotnet-counters - Monitor performance counters of a .NET Core application in real time.

New Features

The bpmd command can now be used before the runtime is loaded. You can load SOS or the sos plugin on Linux and execute bpmd. Always add the module extension for the first parameter.

bpmd SymbolTestApp.dll SymbolTestApp.Program.Main

You can set a source file/line number breakpoint like this (the fully qualified source file path is usually not necessary):

bpmd SymbolTestApp.cs:24

Symbol server support - The setsymbolserver command enables downloading the symbol files (portable PDBs) for managed assemblies during commands like clrstack, etc. See soshelp setsymbolserver for more details.

(lldb) setsymbolserver -ms

Before executing the "bt" command to dump native frames to load the native symbols (for live debugging only):

(lldb) loadsymbols

To add a local directory to search for symbols:

(lldb) setsymbolserver -directory /tmp/symbols

Build Status

Build Status

License

The diagnostics repository is licensed under the MIT license. This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.