getsentry / getsentry/sentry-dotnet
.NET Profiling for client apps (Desktop/CLI/Mobile)
- Dominant language
- C#
- Stars
- 770
- Forks
- 248
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 49
Description
Follow up from: [https://github.com/getsentry/sentry-dotnet/issues/1955]()
Goals:
- [X] Done on our fork: ~~Fix the overhead until ~~[~~https://github.com/microsoft/perfview/issues/1829~~]()~~ is addressed can be a blocker. We need to document this clearly while in beta, and address this with a fork or another approach to bypass file writing.~~
- [X] Add `SentryOptions.ProfilesSampleRate`
- [ ] Add Benchmarks to validate the overhead is at about 5% (or whatever target we have right now)
- [ ] Dogfood with Symbol Collector CLI
- [ ] Documentation
- [ ] [https://github.com/getsentry/sentry-dotnet/issues/2314]() (we'll punt this until we GA profiling)
Followups from: [https://github.com/getsentry/sentry-dotnet/pull/2206]()
Some notes:
- We should support the lowest .NET version possible **but for as long as we have no friction to do so**. If supporting .NET 6 is the simplest/what we get OOTB, we should take that route. It's a new feature and we expect new customers/those upgrading to take advantage of. in other words: No .NET Framework or unsupported .NET Core as a goal.
- [ ] mark threads that don't run any user code as in-app=false
- [ ] ~~should we filter-out sentry-specific/profiling-specific samples?~~ marked as in-app=false
- [ ] provide `debug_meta` images if we want to show line numbers - this may need to be opt-in as it will likely add some runtime overhead
- [ ] [it may be possible]() to handle GCstart & GCend events to show garbage collection
- [ ] Figure out thread names (we only have native thread IDs though so it seems to be a problem)
- [ ] Mobile/MAUI is a stretch goal (see: [filipnavara/maui-sentry-profile]())
Contributor guide
Assessment
This issue has not been assessed yet.