-
Notifications
You must be signed in to change notification settings - Fork 358
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
Debug symbols settings are different between local and official builds #2833
Comments
This behavior is intentional. The comment wording is outdated but the comment is still valid. We use embedded symbols in PR validation builds so that crash dumps captured on these builds are easily debuggable (note that PR validation builds do not publish the symbols to any symbol server). As the comment also says the local builds have embedded PDBs enabled so that they are the same as PR validation build. |
BTW, Arcade currently does not support snupkgs. Once it does it will account for this difference and not produce snupkgs locally. |
I'm not convinced this should be the default behavior. IMO it is very surprising for arcade to change things that are defaulted in the official product
Can you link to the work item for this? It is working for my repo by just setting: <IncludeSymbols>true</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat> And of course overwriting
This is just compounding the problem IMO. What started out as a little difference is making waves even further out. Why is it acceptable for local builds and official builds to be so different that some produced assets aren't even possible to get on a local build? |
Yes, you can generate them. But the publishing logic is not ready for snupkgs.
"We use embedded symbols in PR validation builds so that crash dumps captured on these builds are easily debuggable" |
Why do you care for snupkgs in local builds? They are useless. The only purpose of snupkgs is to deliver symbols to NuGet.org when packages are published. |
I would have thought that this goal could be achieved by other means. Perhaps the crash dump process could load/store the symbols while creating the dump. Or whomever is capturing the dump could also capture the symbols in PR validation. This doesn't seem to be an isolated issue just for projects using arcade.
I care that the outputs of my build are as consistent as possible. That way I can ensure my build is doing what I expect it to be doing without having to submit official builds to test it.
Not necessarily - If I give someone a locally built .nupkg for testing/evaluation, how would I give them the symbols that go with it? |
They are as consistent as possible, but not more than that :). There is certainly a trade-off in certain aspects like (symbol) publishing, signing, etc.
It would certainly be possible but it would require major changes in
Indeed. I would recommend everyone using embedded PDBs everywhere, except for when they are building official packages that need to be optimized for size.
That's the best part - you don't need to give them separate symbol package because the PDBs are embedded in the DLLs that are in the main package. Debugging will just work. |
@eerhardt - thoughts on next steps for this issue? |
Doesn't sound like this is something that will be changed. |
Local builds should be as similar as possible to official builds. That way we can get consistent behavior and we can reproduce locally when official builds break.
However, this isn't the case w.r.t.
DebugType
:arcade/src/Microsoft.DotNet.Arcade.Sdk/tools/ProjectDefaults.props
Lines 31 to 38 in c306937
You can see above that
DebugType=embedded
when it isn't an official build, and the comments around it refer to Jenkins (which is no longer being used).We should have this to always have
portable
be the defaultDebugType
whether this is a dev build, CI, or official build. That way people (like me) who are usingsnupkg
packages aren't confused when their.snupkg
files are empty and don't contain any symbol files./cc @tmat @markwilkie @safern
The text was updated successfully, but these errors were encountered: