Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Varga <vargaz@gmail.com>2018-09-08 01:24:58 +0300
committerMarek Safar <marek.safar@gmail.com>2018-10-13 04:00:46 +0300
commit7f81c2776fa6a75bc232713e5bf635f8b6703b04 (patch)
treedf001f8d03f8d70c16cc9d37a3d352335207478c /mcs/class/Mono.Debugger.Soft
parente5504fb8eae78314e276d2ba546bd3ad5234523e (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')
-rw-r--r--mcs/class/Mono.Debugger.Soft/Makefile5
-rw-r--r--mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs4
-rw-r--r--mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ModuleMirror.cs9
-rw-r--r--mcs/class/Mono.Debugger.Soft/Test/dtest.cs2
-rw-r--r--mcs/class/Mono.Debugger.Soft/Test/sourcelink.json1
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 @@
+{}