-
Notifications
You must be signed in to change notification settings - Fork 3.8k
[debugger] Enable reading embedded ppdb #18895
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
Conversation
…lot. To fix the issue of enabling embedded pdb everywhere the problem was that when the roslyn tests are compiling sources it creates embedded pdb with source file "", and before enable reading the embedded pdb we don't read this information, and now we read and our StackTrace file written in our corlib doesn't expect a source file "", it's okay if it's NULL but not "". I could fix in corlib or in mono, I prefer to fix on mono because I don't know if there is any other place that doesn't expect source file "".
mcs/build/config-default.make
Outdated
|
|
||
| TEST_HARNESS = $(topdir)/class/lib/$(PROFILE_DIRECTORY)/$(PARENT_PROFILE)nunit-lite-console.exe | ||
| PLATFORM_DEBUG_FLAGS = /debug:portable | ||
| PLATFORM_DEBUG_FLAGS = /debug:embedded |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Be sure to test both/all, not delete one test to add another.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, can these settings be combined -- portable and embedded?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, embedded implies portable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I removed this change, I will do this in another PR.
|
|
||
| $(test_output_dir)/dtest-excfilter.exe: Test/dtest-excfilter.il | $(test_output_dir) | ||
| $(ILASM) -out:$@ /exe /debug Test/dtest-excfilter.il | ||
| $(ILASM) -out:$@ /exe /debug:embedded Test/dtest-excfilter.il |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Be sure to test both/all, not delete one test to add another.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I removed this change, I will do this in another PR.
mono/metadata/debug-mono-ppdb.c
Outdated
|
|
||
| // Temporarily disabled to unblock Roslyn | ||
| #if HOST_WIN32 || HOST_WASM | ||
| #if HOST_WIN32 || HAVE_SYS_ZLIB |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are embedded pdbs always compressed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think yes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't you also need the HOST_WASM here? I thought wasm doesn't have a system zlib?
Changing the way to test strlen because of performance
|
@monojenkins build failed |
mono/metadata/debug-mono-ppdb.c
Outdated
|
|
||
| location = g_new0 (MonoDebugSourceLocation, 1); | ||
| location->source_file = docname; | ||
| if (docname != NULL && docname[0] != 0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cosmetic: if (docname && docname [0])
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
or if (!docname || docname [0])
because replacing null with null is an identity, but maybe that is too subtle.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done!
|
@monojenkins build Linux AArch64 |
CoffeeFlux
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for sorting this out. Figured it would be something silly I missed :(
Might still be worth bringing up with the Roslyn team to see if that's intended behavior? This fix should go in regardless though, given it works in CoreCLR.
mono/metadata/debug-mono-ppdb.c
Outdated
|
|
||
| // Temporarily disabled to unblock Roslyn | ||
| #if HOST_WIN32 || HOST_WASM | ||
| #if HOST_WIN32 || HAVE_SYS_ZLIB |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't you also need the HOST_WASM here? I thought wasm doesn't have a system zlib?
|
This is related to #17209 |
|
@monojenkins build failed |
|
@monojenkins build Linux ARMv5 |
|
Is this getting backported to any current release? |
|
@monojenkins backport 2020-02 |
|
@thaystg backporting to 2020-02 failed, the patch results in conflicts: Please backport manually! |
To fix the issue of enable reading embedded pdb everywhere the problem was that when the roslyn tests are compiling sources it creates embedded pdb with source file "", and before enable reading the embedded pdb we don't read this information, and now we read and our StackTrace corlib doesn't expect a source file "", it's okay if it's NULL but not "".
I could fix in corlib or in mono, I prefer to fix on mono because I don't know if there is any other place in corlib that doesn't expect source file "".