diff options
author | Zoltan Varga <vargaz@gmail.com> | 2018-09-08 01:24:58 +0300 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2018-10-13 04:00:46 +0300 |
commit | 7f81c2776fa6a75bc232713e5bf635f8b6703b04 (patch) | |
tree | df001f8d03f8d70c16cc9d37a3d352335207478c /mcs/class/Mono.Debugger.Soft | |
parent | e5504fb8eae78314e276d2ba546bd3ad5234523e (diff) |
[sdb] Add support for reading the sourcelink data from portable pdb files using a new SourceLink property on ModuleMirror objects.
Fixes https://github.com/mono/mono/issues/10038.
Diffstat (limited to 'mcs/class/Mono.Debugger.Soft')
5 files changed, 18 insertions, 3 deletions
diff --git a/mcs/class/Mono.Debugger.Soft/Makefile b/mcs/class/Mono.Debugger.Soft/Makefile index a3afe51be87..42fb0976d0e 100644 --- a/mcs/class/Mono.Debugger.Soft/Makefile +++ b/mcs/class/Mono.Debugger.Soft/Makefile @@ -33,14 +33,15 @@ TEST_HELPERS_SOURCES = \ Test/TypeLoadClass.cs dtest-app.exe: Test/dtest-app.cs $(TEST_HELPERS_SOURCES) - $(CSCOMPILE) -r:$(topdir)/class/lib/$(PROFILE)/mscorlib.dll -r:$(topdir)/class/lib/$(PROFILE)/System.Core.dll -r:$(topdir)/class/lib/$(PROFILE)/System.dll -out:$@ -unsafe $(PLATFORM_DEBUG_FLAGS) -optimize- Test/dtest-app.cs $(TEST_HELPERS_SOURCES) + $(CSCOMPILE) -r:$(topdir)/class/lib/$(PROFILE)/mscorlib.dll -r:$(topdir)/class/lib/$(PROFILE)/System.Core.dll -r:$(topdir)/class/lib/$(PROFILE)/System.dll -sourcelink:Test/sourcelink.json -out:$@ -unsafe $(PLATFORM_DEBUG_FLAGS) -optimize- Test/dtest-app.cs $(TEST_HELPERS_SOURCES) CLEAN_FILES = dtest-app.exe dtest-app.exe.mdb dtest-app.pdb dtest-excfilter.exe dtest-excfilter.exe.mdb dtest-excfilter.pdb EXTRA_DISTFILES = \ Test/dtest-app.cs \ Test/dtest.cs \ - Test/dtest-excfilter.il + Test/dtest-excfilter.il \ + Test/sourcelink.json #NO_TEST = yes diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs index 979f92a8fa4..99db87ed34d 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs @@ -219,7 +219,7 @@ namespace Mono.Debugger.Soft } class ModuleInfo { - public string Name, ScopeName, FQName, Guid; + public string Name, ScopeName, FQName, Guid, SourceLink; public long Assembly; } @@ -2131,6 +2131,8 @@ namespace Mono.Debugger.Soft internal ModuleInfo Module_GetInfo (long id) { PacketReader r = SendReceive (CommandSet.MODULE, (int)CmdModule.GET_INFO, new PacketWriter ().WriteId (id)); ModuleInfo info = new ModuleInfo { Name = r.ReadString (), ScopeName = r.ReadString (), FQName = r.ReadString (), Guid = r.ReadString (), Assembly = r.ReadId () }; + if (Version.AtLeast (2, 48)) + info.SourceLink = r.ReadString (); return info; } diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ModuleMirror.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ModuleMirror.cs index fb944360250..90961930389 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ModuleMirror.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ModuleMirror.cs @@ -62,5 +62,14 @@ namespace Mono.Debugger.Soft } // FIXME: Add function to query the guid, check in Metadata + + // Since protocol version 2.48 + public string SourceLink { + get { + vm.CheckProtocolVersion (2, 48); + ReadInfo (); + return info.SourceLink; + } + } } } diff --git a/mcs/class/Mono.Debugger.Soft/Test/dtest.cs b/mcs/class/Mono.Debugger.Soft/Test/dtest.cs index b2d066a2848..1c93ddc4859 100644 --- a/mcs/class/Mono.Debugger.Soft/Test/dtest.cs +++ b/mcs/class/Mono.Debugger.Soft/Test/dtest.cs @@ -2144,6 +2144,8 @@ public class DebuggerTests Assert.AreEqual (frame.Method.DeclaringType.Assembly, m.Assembly); Assert.AreEqual (frame.Method.DeclaringType.Assembly.ManifestModule, m); + Assert.AreEqual ("{}\n", m.SourceLink); + // This is no longer true on 4.0 //Assert.AreEqual ("Assembly", frame.Method.DeclaringType.Assembly.GetAssemblyObject ().Type.Name); diff --git a/mcs/class/Mono.Debugger.Soft/Test/sourcelink.json b/mcs/class/Mono.Debugger.Soft/Test/sourcelink.json new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/mcs/class/Mono.Debugger.Soft/Test/sourcelink.json @@ -0,0 +1 @@ +{} |