Skip to content
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

Support JDWP #20

Merged
merged 9 commits into from
Apr 25, 2015
32 changes: 32 additions & 0 deletions Tvl.Java.DebugHost/Interop/jvmtiCapabilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,38 @@ public jvmtiCapabilities(CapabilityFlags1 flags1 = 0, CapabilityFlags2 flags2 =
_flags4 = flags4;
}

public CapabilityFlags1 Capabilities1
{
get
{
return _flags1;
}
}

public CapabilityFlags2 Capabilities2
{
get
{
return _flags2;
}
}

public CapabilityFlags3 Capabilities3
{
get
{
return _flags3;
}
}

public CapabilityFlags4 Capabilities4
{
get
{
return _flags4;
}
}

public bool CanTagObjects
{
get
Expand Down
19 changes: 18 additions & 1 deletion Tvl.Java.DebugHost/Services/DebugProtocolService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,24 @@ public Error CreateString(string value, out StringId stringObject)

public Error GetCapabilities(out Capabilities capabilities)
{
throw new NotImplementedException();
capabilities = default(Capabilities);

JniEnvironment nativeEnvironment;
JvmtiEnvironment environment;
jvmtiError error = GetEnvironment(out environment, out nativeEnvironment);
if (error != jvmtiError.None)
return GetStandardError(error);

jvmtiCapabilities jvmCapabilities;
error = Environment.GetCapabilities(out jvmCapabilities);
if (error != jvmtiError.None)
return GetStandardError(error);

ulong capabilityValue = (ulong)jvmCapabilities.Capabilities1 | ((ulong)jvmCapabilities.Capabilities2 << 32);
capabilities = (Capabilities)capabilityValue
| Capabilities.CanStepByStatement
| Capabilities.CanInvokeWithoutThread;
return GetStandardError(error);
}

public Error GetClassPaths(out string baseDirectory, out string[] classPaths, out string[] bootClassPaths)
Expand Down
10 changes: 10 additions & 0 deletions Tvl.Java.DebugInterface.Client/Jdwp/ArrayReferenceCommand.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Tvl.Java.DebugInterface.Client.Jdwp
{
public enum ArrayReferenceCommand : byte
{
Invalid = 0,
Length = 1,
GetValues = 2,
SetValues = 3,
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Tvl.Java.DebugInterface.Client.Jdwp
{
public enum ClassObjectReferenceCommand : byte
{
Invalid = 0,
ReflectedType = 1,
}
}
11 changes: 11 additions & 0 deletions Tvl.Java.DebugInterface.Client/Jdwp/ClassTypeCommand.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace Tvl.Java.DebugInterface.Client.Jdwp
{
public enum ClassTypeCommand : byte
{
Invalid = 0,
Superclass = 1,
SetValues = 2,
InvokeMethod = 3,
NewInstance = 4
}
}
23 changes: 23 additions & 0 deletions Tvl.Java.DebugInterface.Client/Jdwp/CommandSet.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
namespace Tvl.Java.DebugInterface.Client.Jdwp
{
public enum CommandSet : byte
{
VirtualMachine = 1,
ReferenceType = 2,
ClassType = 3,
ArrayType = 4,
InterfaceType = 5,
Method = 6,
Field = 8,
ObjectReference = 9,
StringReference = 10,
ThreadReference = 11,
ThreadGroupReference = 12,
ArrayReference = 13,
ClassLoaderReference = 14,
EventRequest = 15,
StackFrame = 16,
ClassObjectReference = 17,
Event = 64,
}
}
10 changes: 10 additions & 0 deletions Tvl.Java.DebugInterface.Client/Jdwp/EventRequestCommand.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Tvl.Java.DebugInterface.Client.Jdwp
{
public enum EventRequestCommand : byte
{
Invalid = 0,
Set = 1,
Clear = 2,
ClearAllBreakpoints = 3,
}
}
Loading