-
-
Notifications
You must be signed in to change notification settings - Fork 206
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Sentry support for .NET debug symbols (portable pdbs) to unblock app distribution to customer devices without pdbs. #193
Comments
Hoping to tackle this very soon. This might be ok to base things on, but likely is too slow because python (also GPL): |
One thing I would like to note is that future VS and mono versions will have an option to generate |
Any update on this? Would be great to see the source code within Sentry's stack trace! |
Related tools from msft: https://github.com/Microsoft/microsoft-pdb |
Any news on this? |
@getsentry/team, @dcramer: Ping? |
We did not forget. Sorry for the lack of progress on that front. We're currently completely revamping our symbol handling for the only platform we provide this at the moment (iOS) and we're planning on taking those lessons to then hopefully make better progress on other platforms. Ideally we can reuse some of the infrastructure we are building there to also cover C# and other platforms. |
This probably isn't what people want to hear but what I've personally done this the following: Obfuscated source code with confuserex and generated reversible naming map file. Uploading naming map to your api server. Send all sentry reports via your API and de-obfuscate the callstack/etc. Its a bit ugly but if you want full debugging info in your app without someone being able to open it up in dnspy etc its the only way I could figure out to do it with sentry currently. |
Any status updates on this? |
I noticed the following page in the docs recently: https://docs.sentry.io/cli/dif/pdb/ I haven't had chance to try it yet but it looks promising. |
even better @bruno-garcia is there's really nice SourceLink ability to step into code really easy, in dotnet core.
simple. |
Hi @PureKrome! Thanks for chipping in! On the SDK side, we've got SourceLink support from beginning: That is to help you debug through the SDK code if you need, and also for a tool like Sentry to display source context if it's involved in a crash. Which is what I think you meant. The goal of this issue is to allow customers upload their .NET This would allow what many desktop apps would want: not release their PDBs with their binaries. Sometimes because of the size constraints (less of an issue with portable PDBs which are ~30% of the size of the binary) but also to make reverse engineering harder. Right now, if you don't have the PDBs in the client, the stack traces would actually have no information and we'd need to symbolicate in the processing pipeline in Sentry. We can't do that right now for .NET PDBs (we've recently added support to Native PDBs though). Sourcelink would allow us to show the code around the affected lines but we'd still need the PDB to symbolicate and also to get the sourcelink data which is embedded in the PDB. And now there are two types of PDBs (old Windows PDB and Portable PDB) so we need to deal with that too :) |
Any status on this? |
@Green7 Sorry but this issue was not addressed yet. A few things we'd like to understand are:
|
|
Any news ? |
@Green7 Unfortunately we don't have this work planned at the moment. We'll be looking into what's next for .NET in the upcoming months though. |
@Green7 We need some data to prioritize this. You mentioned .NET Framework 4.6 and full PDB. |
WinForms. For now we must stay on .Net Framework 4.6 because we still have customers working on Windows Server 2008 or older. |
Now with WinForms and WPF going to .NET Core, I hope we'll set sometime aside to invest in it here at Sentry. Note that this SDK doesn't support .NET Framework 4.6. Only 4.6.1+. Sentry still has its Raven SDK which supports .NET all the way to 3.5. We maintain it for bugfixes but no new feature are added there though. Also, I'm curious what type of WinForms app would run on a server. Could you share some info? |
We using Raven SDK. We create a computer management application and some customers use it on servers. |
Here's my use case:
|
Why PDBs are required to be uploaded to Sentry? As for me if we have AWS ECS endpoint (or any other docker-based) PDB can be included in docker image. |
@Lonli-Lokli I'm unaware of a legitimate use case of not publishing server apps with PDBs. |
Out of interest - is this issue not as relevant any more, now that we have Sourcelink integration? |
@PureKrome sourcelink will help point you to the source (commit hash and path) but it won't help .NET give you the line numbers of a function if there's no |
Any update on this? Does sentry support managed pdb / portable pdbs by now? |
This isn't something we've added yet but I'm bringing this conversation internally to see if we can start planning this. |
I have use cases for both desktop and server apps with sourcelink and non sourcelink pens, full and portable symbols as well as obfuscation where we would have to do a relay filter to deobfuscate as well as non obfuscated stack frames |
@MeikTranel It's unclear that we'll cover all of that, of what combinations. To clarify: Obfuscation is a separate topic (tracked here: #186 please add details there like which obfuscation tool you use). This issue will cover the ability to upload portable PDBs (not Windows PDBs) to Sentry, and .NET stack traces would get symbolicated by it. This will serve Mobile/Desktop use cases (given for server loads it's simpler to embed the pdbs or have them side-by-side since they are tiny). |
@bruno-garcia can you update the thread topic to be more detailed to highlight that this is for mobile/desktop and not about generating pdb's for the sentry nugets (blush) 😄 |
Just chiming in here with my team's use case:
Supporting
|
I wasn't aware there was confusion.
Good point. portable pdbs have been available on Mono, .NET Framework (and obviously .NET Core) for many years now and I'm unaware of blockers for anyone to adopt even when using older versions of the framework. |
@bruno-garcia would that allow for uploading of "source bundles" as well? I'm currently shipping serverside code with PDBs, so I get line numbers in stack traces but to have the full experience my team would like to see source code as well. AFAIK I can't use sentry-cli to upload source bundles because it doesn't work with .NET PDBs. |
That's correct, source bundles isn't support yet. We are planning on doing stacktrace linking though: https://docs.sentry.io/product/integrations/source-code-mgmt/github/#stack-trace-linking |
That would be great. Will bitbucket be supported? |
Its already supported https://docs.sentry.io/product/integrations/source-code-mgmt/ |
Let's track this in #1740 going forward. Thanks. |
Spoiler alert: getsentry/symbolic#621 |
If you're subscribed to this, not just PDB support but source context support landed: |
As in getsentry/raven-objc#11, we need to add support for debug symbols in the C# client. This requires back-end support from @dcramer and his team, but as soon as that is in place, we should be able to upload
.pdb
files and have them attached as artifacts to a release.The text was updated successfully, but these errors were encountered: