diff --git a/packages/dap4delphi.dpk b/packages/dap4delphi.dpk
index c95c878..d3b2ff3 100644
--- a/packages/dap4delphi.dpk
+++ b/packages/dap4delphi.dpk
@@ -9,21 +9,21 @@ package dap4delphi;
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
-{$LOCALSYMBOLS ON}
+{$LOCALSYMBOLS OFF}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
-{$OPTIMIZATION OFF}
-{$OVERFLOWCHECKS ON}
-{$RANGECHECKS ON}
-{$REFERENCEINFO ON}
+{$OPTIMIZATION ON}
+{$OVERFLOWCHECKS OFF}
+{$RANGECHECKS OFF}
+{$REFERENCEINFO OFF}
{$SAFEDIVIDE OFF}
-{$STACKFRAMES ON}
+{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
-{$DEFINE DEBUG}
+{$DEFINE RELEASE}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'Debug Adapter Protocol'}
{$LIBSUFFIX AUTO}
diff --git a/packages/dap4delphi.dproj b/packages/dap4delphi.dproj
index c8e3e6b..94b8905 100644
--- a/packages/dap4delphi.dproj
+++ b/packages/dap4delphi.dproj
@@ -7,8 +7,9 @@
True
Release
Win32
- 1
+ 135299
Package
+ dap4delphi
true
@@ -33,11 +34,31 @@
Base
true
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
+
+ true
+ Base
+ true
+
true
Base
true
+
+ true
+ Base
+ true
+
true
Base
@@ -54,12 +75,6 @@
Base
true
-
- true
- Cfg_2
- true
- true
-
..\lib\$(Platform)\$(Config)
.\$(Platform)\$(Config)
@@ -74,10 +89,12 @@
All
dap4delphi
1033
- CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
+ CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.65.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
Debug Adapter Protocol
true
$(Auto)
+ true
+ 65
None
@@ -116,12 +133,28 @@
$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png
$(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png
+
+ /usr/bin/gnome-terminal -- "%debuggee%"
+
+
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
+ Debug
+ false
+ /usr/X11/bin/xterm -e "%debuggee%"
+
+
+ CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface
+ Debug
+ false
+ /usr/X11/bin/xterm -e "%debuggee%"
+
Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)
Debug
- true
- CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=
- 1033
+
+
+ Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)
+ Debug
DEBUG;$(DCC_Define)
@@ -136,7 +169,6 @@
false
..\lib\$(Platform)\$(Config)
- true
false
@@ -144,10 +176,6 @@
0
0
-
- true
- 1033
-
MainSource
@@ -185,10 +213,12 @@
dap4delphi.dpk
- Embarcadero C++Builder Office 2000 Servers Package
- Embarcadero C++Builder Office XP Servers Package
- Microsoft Office 2000 Sample Automation Server Wrapper Components
- Microsoft Office XP Sample Automation Server Wrapper Components
+ File C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\AIAPI.bpl not found
+ File \\Mac\Home\Documents\Embarcadero\Studio\Projects\GDK-topgrid-9953c686d959\GDK-topgrid-9953c686d959\Lib\osgi06301.bpl not found
+ Embarcadero C++Builder Office 2000 Servers Package
+ Embarcadero C++Builder Office XP Servers Package
+ Microsoft Office 2000 Sample Automation Server Wrapper Components
+ Microsoft Office XP Sample Automation Server Wrapper Components
@@ -294,6 +324,16 @@
1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
+ res\drawable-anydpi-v21
+ 1
+
+
res\values
@@ -314,6 +354,66 @@
1
+
+
+ res\values-v31
+ 1
+
+
+ res\values-v31
+ 1
+
+
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+ res\drawable-anydpi-v26
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
+ res\drawable-anydpi-v33
+ 1
+
+
res\values
@@ -324,6 +424,16 @@
1
+
+
+ res\values-night-v21
+ 1
+
+
+ res\values-night-v21
+ 1
+
+
res\drawable
@@ -494,6 +604,56 @@
1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+ res\drawable-anydpi-v24
+ 1
+
+
+
+
+ res\drawable
+ 1
+
+
+ res\drawable
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+ res\drawable-night-anydpi-v21
+ 1
+
+
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+ res\drawable-anydpi-v31
+ 1
+
+
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
+ res\drawable-night-anydpi-v31
+ 1
+
+
1
@@ -599,6 +759,127 @@
0
+
+
+ 1
+
+
+ 1
+
+
+
+
+
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+ Contents\Resources
+ 1
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+ library\lib\arm64-v8a
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+ 0
+
+
+
+
+ library\lib\armeabi-v7a
+ 1
+
+
+
+
+ 1
+
+
+ 1
+
+
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
+ 1
+
+
+
+
+
+
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
+
+
+ Assets
+ 1
+
+
+ Assets
+ 1
+
+
..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset
@@ -799,127 +1080,6 @@
1
-
-
- 1
-
-
- 1
-
-
-
-
- ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
- 1
-
-
- ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
- 1
-
-
- ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF
- 1
-
-
-
-
-
-
-
- 1
-
-
- 1
-
-
- 1
-
-
-
-
-
-
-
- Contents\Resources
- 1
-
-
- Contents\Resources
- 1
-
-
- Contents\Resources
- 1
-
-
-
-
- library\lib\armeabi-v7a
- 1
-
-
- library\lib\arm64-v8a
- 1
-
-
- 1
-
-
- 1
-
-
- 1
-
-
- 1
-
-
- 1
-
-
- 1
-
-
- 1
-
-
- 0
-
-
-
-
- library\lib\armeabi-v7a
- 1
-
-
-
-
- 1
-
-
- 1
-
-
-
-
- Assets
- 1
-
-
- Assets
- 1
-
-
-
-
- Assets
- 1
-
-
- Assets
- 1
-
-
@@ -932,17 +1092,18 @@
+
False
False
False
False
- False
- False
- False
+ True
+ True
+ True
True
- False
+ True
12
diff --git a/source/BaseProtocol.Events.pas b/source/BaseProtocol.Events.pas
index 014c05a..7312d2b 100644
--- a/source/BaseProtocol.Events.pas
+++ b/source/BaseProtocol.Events.pas
@@ -278,7 +278,7 @@ TProgressEndEventBody = class(TBaseType)
FMessage: string;
public
property ProgressId: string read FProgressId write FProgressId;
- property Message: string read FMessage write FMessage;
+ property &Message: string read FMessage write FMessage;
end;
[EventType(TEventType.ProgressEnd)]
diff --git a/source/BaseProtocol.Json.pas b/source/BaseProtocol.Json.pas
index a321d86..3df5207 100644
--- a/source/BaseProtocol.Json.pas
+++ b/source/BaseProtocol.Json.pas
@@ -96,8 +96,8 @@ class procedure TBaseProtocolJsonAdapter.RegisterConverters(
DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
- DoRegisterObjectListConverter(AMarshal);
- DoRegisterObjectListConverter(AMarshal);
+ DoRegisterObjectListConverter(AMarshal);
+ DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
@@ -107,9 +107,9 @@ class procedure TBaseProtocolJsonAdapter.RegisterConverters(
DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
- DoRegisterObjectListConverter(AMarshal);
- DoRegisterObjectListConverter(AMarshal);
- DoRegisterObjectListConverter(AMarshal);
+ DoRegisterObjectListConverter(AMarshal);
+ DoRegisterObjectListConverter(AMarshal);
+ DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
DoRegisterObjectListConverter(AMarshal);
@@ -163,8 +163,8 @@ class procedure TBaseProtocolJsonAdapter.RegisterReverters(
DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
- DoRegisterObjectListReverter(AUnmarshal);
- DoRegisterObjectListReverter(AUnmarshal);
+ DoRegisterObjectListReverter(AUnmarshal);
+ DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
@@ -174,9 +174,9 @@ class procedure TBaseProtocolJsonAdapter.RegisterReverters(
DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
- DoRegisterObjectListReverter(AUnmarshal);
- DoRegisterObjectListReverter(AUnmarshal);
- DoRegisterObjectListReverter(AUnmarshal);
+ DoRegisterObjectListReverter(AUnmarshal);
+ DoRegisterObjectListReverter(AUnmarshal);
+ DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
DoRegisterObjectListReverter(AUnmarshal);
diff --git a/source/BaseProtocol.Parser.pas b/source/BaseProtocol.Parser.pas
index 736d879..3961091 100644
--- a/source/BaseProtocol.Parser.pas
+++ b/source/BaseProtocol.Parser.pas
@@ -54,11 +54,15 @@ class function TBaseProtocolParser.GetProtocolMessageType(
const AJSONObject: TJSONObject): TClass;
begin
case JsonToMessageType(AJSONObject) of
- TMessageType.Request : Exit(TProtocolMessage.Requests[JsonToRequestType(AJSONObject)]);
- TMessageType.Response: Exit(TProtocolMessage.Responses[JsonToRequestType(AJSONObject)]);
- TMessageType.Event : Exit(TProtocolMessage.Events[JsonToEventType(AJSONObject)]);
+ TMessageType.Request:
+ Result := TProtocolMessage.Requests[JsonToRequestType(AJSONObject)];
+ TMessageType.Response:
+ Result := TProtocolMessage.Responses[JsonToRequestType(AJSONObject)];
+ TMessageType.Event:
+ Result := TProtocolMessage.Events[JsonToEventType(AJSONObject)];
+ else
+ Result := nil;
end;
- Result := nil;
end;
class function TBaseProtocolParser.JsonToMessageType(
diff --git a/source/BaseProtocol.Requests.pas b/source/BaseProtocol.Requests.pas
index 905c89c..7933852 100644
--- a/source/BaseProtocol.Requests.pas
+++ b/source/BaseProtocol.Requests.pas
@@ -269,13 +269,13 @@ TSetExceptionBreakpointsArguments = class(TBaseType)
[JSONName('filters')]
FFilters: TArray;
[JSONName('filterOptions'), Managed()]
- FFilterOptions: TExceptionFilterOptions;
+ FFilterOptions: TExceptionFilterOptionsList;
[JSONName('exceptionOptions'), Managed()]
- FExceptionOptions: TExceptionOptions;
+ FExceptionOptions: TExceptionOptionsList;
public
property Filters: TArray read FFilters write FFilters;
- property FilterOptions: TExceptionFilterOptions read FFilterOptions write FFilterOptions;
- property ExceptionOptions: TExceptionOptions read FExceptionOptions write FExceptionOptions;
+ property FilterOptions: TExceptionFilterOptionsList read FFilterOptions write FFilterOptions;
+ property ExceptionOptions: TExceptionOptionsList read FExceptionOptions write FExceptionOptions;
end;
[RequestCommand(TRequestCommand.SetExceptionBreakpoints)]
@@ -297,9 +297,15 @@ TDatabreakpointInfoArguments = class(TBaseType)
FVariablesReference: integer;
[JSONName('name')]
FName: string;
+ [JSONName('frameId')]
+ FFrameId: integer;
+ [JSONName('mode')]
+ FMode: TBreakpointMode_;
public
property VariablesReference: integer read FVariablesReference write FVariablesReference;
property Name: string read FName write FName;
+ property FrameId: integer read FFrameId write FFrameId;
+ property Mode: TBreakpointMode_ read FMode write FMode;
end;
[RequestCommand(TRequestCommand.DataBreakpointInfo)]
@@ -646,12 +652,15 @@ TSetVariableResponseBody = class(TBaseType)
FNamedVariables: integer;
[JSONName('indexedVariables')]
FIndexedVariables: integer;
+ [JSONName('memoryReference')]
+ FMemoryReference: string;
public
property Value: string read FValue write FValue;
property &Type: string read FType write FType;
property VariablesReference: integer read FVariablesReference write FVariablesReference;
property NamedVariables: integer read FNamedVariables write FNamedVariables;
property IndexedVariables: integer read FIndexedVariables write FIndexedVariables;
+ property MemoryReference: string read FMemoryReference write FMemoryReference;
end;
TSetVariableResponse = class(TResponse);
@@ -755,27 +764,27 @@ TLoadedSourcesResponseBody = class(TBaseType)
TLoadedSourcesResponse = class(TResponse);
- TEvaluteArguments = class(TBaseType)
+ TEvaluateArguments = class(TBaseType)
private
[JSONName('expression')]
FExpression: string;
[JSONName('frameId')]
- FFrameId: integer;
+ FFrameId: integer;
[JSONName('context'), JSONReflect(ctString, rtString, TEnumInterceptor)]
FContext: TEvaluteContext;
[JSONName('format'), Managed()]
FFormat: TValueFormat;
public
property Expression: string read FExpression write FExpression;
- property FrameId: Integer read FFrameId write FFrameId;
+ property FrameId: Integer read FFrameId write FFrameId;
property Context: TEvaluteContext read FContext write FContext;
property Format: TValueFormat read FFormat write FFormat;
end;
[RequestCommand(TRequestCommand.Evaluate)]
- TEvaluteRequest = class(TRequest);
+ TEvaluateRequest = class(TRequest);
- TEvaluteResponseBody = class(TBaseType)
+ TEvaluateResponseBody = class(TBaseType)
private
[JSONName('result')]
FResult: string;
@@ -790,7 +799,7 @@ TEvaluteResponseBody = class(TBaseType)
[JSONName('indexedVariables')]
FIndexedVariables: integer;
[JSONName('memoryReference')]
- FMemoryReference: integer;
+ FMemoryReference: string;
public
property Result: string read FResult write FResult;
property &Type: string read FType write FType;
@@ -798,10 +807,10 @@ TEvaluteResponseBody = class(TBaseType)
property VariablesReference: integer read FVariablesReference write FVariablesReference;
property NamedVariables: integer read FNamedVariables write FNamedVariables;
property IndexedVariables: integer read FIndexedVariables write FIndexedVariables;
- property MemoryReference: integer read FMemoryReference write FMemoryReference;
+ property MemoryReference: string read FMemoryReference write FMemoryReference;
end;
- TEvaluteResponse = class(TResponse);
+ TEvaluateResponse = class(TResponse);
TSetExpressionArguments = class(TBaseType)
private
@@ -835,12 +844,15 @@ TSetExpressionResponseBody = class(TBaseType)
FNamedVariables: integer;
[JSONName('indexedVariables')]
FIndexedVariables: integer;
+ [JSONName('memoryReference')]
+ FMemoryReference: string;
public
property Value: string read FValue write FValue;
property PresentationHint: TVariablePresentationHint read FPresentationHint write FPresentationHint;
property VariablesReference: integer read FVariablesReference write FVariablesReference;
property NamedVariables: integer read FNamedVariables write FNamedVariables;
property IndexedVariables: integer read FIndexedVariables write FIndexedVariables;
+ property MemoryReference: string read FMemoryReference write FMemoryReference;
end;
TSetExpressionResponse = class(TResponse);
@@ -899,7 +911,7 @@ TGotoTargetsResponseBody = class(TBaseType)
TGotoTargetsResponse = class(TResponse);
- TCompletitionsArguments = class(TBaseType)
+ TCompletionsArguments = class(TBaseType)
private
[JSONName('frameId')]
FFrameId: integer;
@@ -917,17 +929,17 @@ TCompletitionsArguments = class(TBaseType)
end;
[RequestCommand(TRequestCommand.Completions)]
- TCompletitionsRequest = class(TRequest);
+ TCompletionsRequest = class(TRequest);
- TCompletitionsResponseBody = class(TBaseType)
+ TCompletionsResponseBody = class(TBaseType)
private
- [JSONName('frameId'), Managed()]
- FTargets: TCompletitionItems;
+ [JSONName('targets'), Managed()]
+ FTargets: TCompletionItems;
public
- property Targets: TCompletitionItems read FTargets write FTargets;
+ property Targets: TCompletionItems read FTargets write FTargets;
end;
- TCompletitionsResponse = class(TResponse);
+ TCompletionsResponse = class(TResponse);
TExceptionInfoArguments = class(TBaseType)
private
@@ -949,12 +961,12 @@ TExceptionInfoResponseBody = class(TBaseType)
[JSONName('breakMode'), JSONReflect(ctString, rtString, TEnumInterceptor)]
FBreakMode: TExceptionBreakMode;
[JSONName('details'), Managed()]
- FDetails: TExceptionDetail;
+ FDetails: TExceptionDetails;
public
property ExceptionId: string read FExceptionId write FExceptionId;
property Description: string read FDescription write FDescription;
property BreakMode: TExceptionBreakMode read FBreakMode write FBreakMode;
- property Details: TExceptionDetail read FDetails write FDetails;
+ property Details: TExceptionDetails read FDetails write FDetails;
end;
TExceptionInfoResponse = class(TResponse);
@@ -1051,9 +1063,9 @@ TDisassembleRequest = class(TRequest);
TDisassembleResponseBody = class(TBaseType)
private
[JSONName('instructions'), Managed()]
- FInstructions: TDynamicDisassembleInstructions;
+ FInstructions: TDynamicDisassembledInstructions;
public
- property Instructions: TDynamicDisassembleInstructions read FInstructions write FInstructions;
+ property Instructions: TDynamicDisassembledInstructions read FInstructions write FInstructions;
end;
TDisassembleResponse = class(TResponse);
@@ -1098,13 +1110,13 @@ class procedure TRequestsRegistration.RegisterAll;
TProtocolMessage.RegisterRequest(TRequestCommand.Attach, TAttachRequest, TAttachResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.BreakpointLocations, TDynamicBreakpointLocationsRequest, TBreakpointLocationsResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.Cancel, TCancelRequest, TCancelResponse);
- TProtocolMessage.RegisterRequest(TRequestCommand.Completions, TCompletitionsRequest, TCompletitionsResponse);
+ TProtocolMessage.RegisterRequest(TRequestCommand.Completions, TCompletionsRequest, TCompletionsResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.ConfigurationDone, TConfigurationDoneRequest, TConfigurationDoneResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.Continue, TContinueRequest, TContinueResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.DataBreakpointInfo, TDatabreakpointInfoRequest, TDatabreakpointInfoResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.Disassemble, TDisassembleRequest, TDisassembleResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.Disconnect, TDisconnectRequest, TDisconnectResponse);
- TProtocolMessage.RegisterRequest(TRequestCommand.Evaluate, TEvaluteRequest, TEvaluteResponse);
+ TProtocolMessage.RegisterRequest(TRequestCommand.Evaluate, TEvaluateRequest, TEvaluateResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.ExceptionInfo, TExceptionInfoRequest, TExceptionInfoResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.Goto, TGotoRequest, TGotoResponse);
TProtocolMessage.RegisterRequest(TRequestCommand.GotoTargets, TDynamicGotoTargetsRequest, TGotoTargetsResponse);
diff --git a/source/BaseProtocol.ReverseRequests.pas b/source/BaseProtocol.ReverseRequests.pas
index 83445f6..b20f3fd 100644
--- a/source/BaseProtocol.ReverseRequests.pas
+++ b/source/BaseProtocol.ReverseRequests.pas
@@ -25,12 +25,15 @@ TRunInTerminalRequestArguments = class(TBaseType)
FArgs: TArray;
[JSONName('env'), Managed()]
FEnv: TEnvs;
+ [JSONName('argsCanBeInterpretedByShell')]
+ FArgsCanBeInterpretedByShell: boolean;
public
property Kind: TRunInTerminalRequestArgumentsKind read FKind write FKind;
property Title: string read FTitle write FTitle;
property Cwd: string read FCwd write FCwd;
property Args: TArray read FArgs write FArgs;
property Env: TEnvs read FEnv write FEnv;
+ property ArgsCanBeInterpretedByShell: boolean read FArgsCanBeInterpretedByShell write FArgsCanBeInterpretedByShell;
end;
[RequestCommand(TRequestCommand.RunInTerminal)]
diff --git a/source/BaseProtocol.Types.pas b/source/BaseProtocol.Types.pas
index 42fc06f..ad4b78f 100644
--- a/source/BaseProtocol.Types.pas
+++ b/source/BaseProtocol.Types.pas
@@ -61,6 +61,11 @@ interface
Variables,
WriteMemory);
+ TResponseMessage = (
+ Cancelled,
+ NotStopped
+ );
+
TEventType = (
Unknown,
Breakpoint,
@@ -225,7 +230,7 @@ interface
Line,
Instruction);
- TCompletitionItemType = (
+ TCompletionItemType = (
None,
Method,
&Function,
@@ -266,6 +271,25 @@ interface
Threads,
Variables);
TInvalidatedAreas = set of TInvalidatedArea;
+
+ TBreakpointModeApplicability = (
+ Source,
+ Exception,
+ Data,
+ Instruction
+ );
+ TBreakpointModeApplicabilities = set of TBreakpointModeApplicability;
+
+ TBreakpointMode_ = (
+ Hardware,
+ Software
+ );
+ TBreakpointModes_ = set of TBreakpointMode_;
+
+ TBreakpointReason = (
+ Pending,
+ Failed
+ );
{$SCOPEDENUMS OFF}
{$ENDREGION 'ENUNS'}
@@ -430,16 +454,19 @@ TBreakpoint = class(TBaseType)
FInstructionReference: string;
[JSONName('offset')]
FOffset: integer;
+ [JSONName('reason'), JSONReflect(ctStrings, rtStrings, TEnumInterceptor)]
+ FReason: TBreakpointReason;
public
property Id: integer read FId write FId;
property Verified: boolean read FVerified write FVerified;
- property Message: string read FMessage write FMessage;
+ property &Message: string read FMessage write FMessage;
property Line: integer read FLine write FLine;
property Column: integer read FColumn write FColumn;
property EndLine: integer read FEndLine write FEndLine;
property EndColumn: integer read FEndColumn write FEndColumn;
property InstructionReference: string read FInstructionReference write FInstructionReference;
property Offset: integer read FOffset write FOffset;
+ property Reason: TBreakpointReason read FReason write FReason;
end;
TBreakpoint = class(TBreakpoint)
@@ -455,6 +482,24 @@ TBreakpoint = class(TBreakpoint)
TBreakpoints = TObjectList;
TDynamicBreakpoints = TObjectList;
+ TBreakpointMode = class(TBaseType)
+ private
+ [JSONName('mode'), JSONReflect(ctStrings, rtStrings, TEnumInterceptor)]
+ FMode: TBreakpointMode_;
+ [JSONName('label')]
+ FLabel: string;
+ [JSONName('description')]
+ FDescription: string;
+ [JSONName('appliesTo'), JSONReflect(ctString, rtString, TSetInterceptor)]
+ FAppliesTo: TBreakpointModeApplicabilities;
+ public
+ property Mode: TBreakpointMode_ read FMode write FMode;
+ property &Label: string read FLabel write FLabel;
+ property Description: string read FDescription write FDescription;
+ property AppliesTo: TBreakpointModeApplicabilities read FAppliesTo write FAppliesTo;
+ end;
+ TBreakpointModes = TObjectList;
+
TModule = class(TBaseType)
private
[JSONName('id')]
@@ -546,6 +591,8 @@ TCapabilities = class(TBaseType)
FSupportsFunctionBreakpoints: boolean;
[JSONName('supportsConditionalBreakpoints')]
FSupportsConditionalBreakpoints: boolean;
+ [JSONName('supportsHitConditionalBreakpoints')]
+ FSupportsHitConditionalBreakpoints: boolean;
[JSONName('supportsEvaluateForHovers')]
FSupportsEvaluateForHovers: boolean;
[JSONName('exceptionBreakpointFilters'), Managed()]
@@ -558,11 +605,11 @@ TCapabilities = class(TBaseType)
FSupportsRestartFrame: boolean;
[JSONName('supportsGotoTargetsRequest')]
FSupportsGotoTargetsRequest: boolean;
- [JSONName('supportsCompletitionsRequest')]
- FSupportsCompletitionsRequest: boolean;
- [JSONName('completitionTriggerCharacters')]
- FCompletitionTriggerCharacters: TArray;
- [JSONName('supportsModuleRequests')]
+ [JSONName('supportsCompletionsRequest')]
+ FSupportsCompletionsRequest: boolean;
+ [JSONName('completionTriggerCharacters')]
+ FCompletionTriggerCharacters: TArray;
+ [JSONName('supportsModulesRequest')]
FSupportsModuleRequests: boolean;
[JSONName('additionalModuleColumns')]
FAdditionalModuleColumns: TColumnDescriptors;
@@ -602,8 +649,8 @@ TCapabilities = class(TBaseType)
FSupportsDisassembleRequest: boolean;
[JSONName('supportsCancelRequest')]
FSupportsCancelRequest: boolean;
- [JSONName('supportsBreakpointLocationRequest')]
- FSupportsBreakpointLocationRequest: boolean;
+ [JSONName('supportsBreakpointLocationsRequest')]
+ FSupportsBreakpointLocationsRequest: boolean;
[JSONName('supportsClipboardContext')]
FSupportsClipboardContext: boolean;
[JSONName('supportsSteppingGranularity')]
@@ -614,18 +661,21 @@ TCapabilities = class(TBaseType)
FSupportsExceptionFilterOptions: boolean;
[JSONName('supportsSingleThreadExecutionRequests')]
FSupportsSingleThreadExecutionRequests: boolean;
+ [JSONName('breakpointModes'), JSONReflect(ctStrings, rtStrings, TSetInterceptor)]
+ FBreakpointModes: TBreakpointModes_;
public
property SupportsConfigurationDoneRequest: boolean read FSupportsConfigurationDoneRequest write FSupportsConfigurationDoneRequest;
property SupportsFunctionBreakpoints: boolean read FSupportsFunctionBreakpoints write FSupportsFunctionBreakpoints;
property SupportsConditionalBreakpoints: boolean read FSupportsConditionalBreakpoints write FSupportsConditionalBreakpoints;
+ property SupportsHitConditionalBreakpoints: boolean read FSupportsHitConditionalBreakpoints write FSupportsHitConditionalBreakpoints;
property SupportsEvaluateForHovers: boolean read FSupportsEvaluateForHovers write FSupportsEvaluateForHovers;
property ExceptionBreakpointFilters: TExceptionBreakpointsFilters read FExceptionBreakpointFilters write FExceptionBreakpointFilters;
property SupportsStepBack: boolean read FSupportsStepBack write FSupportsStepBack;
property SupportsSetVariable: boolean read FSupportsSetVariable write FSupportsSetVariable;
property SupportsRestartFrame: boolean read FSupportsRestartFrame write FSupportsRestartFrame;
property SupportsGotoTargetsRequest: boolean read FSupportsGotoTargetsRequest write FSupportsGotoTargetsRequest;
- property SupportsCompletitionsRequest: boolean read FSupportsCompletitionsRequest write FSupportsCompletitionsRequest;
- property CompletitionTriggerCharacters: TArray read FCompletitionTriggerCharacters write FCompletitionTriggerCharacters;
+ property SupportsCompletionsRequest: boolean read FSupportsCompletionsRequest write FSupportsCompletionsRequest;
+ property CompletionTriggerCharacters: TArray read FCompletionTriggerCharacters write FCompletionTriggerCharacters;
property SupportsModuleRequests: boolean read FSupportsModuleRequests write FSupportsModuleRequests;
property AdditionalModuleColumns: TColumnDescriptors read FAdditionalModuleColumns write FAdditionalModuleColumns;
property SupportedChecksumAlgorithms: TChecksumAlgorithms read FSupportedChecksumAlgorithms write FSupportedChecksumAlgorithms;
@@ -646,12 +696,13 @@ TCapabilities = class(TBaseType)
property SupportsWriteMemoryRequest: boolean read FSupportsWriteMemoryRequest write FSupportsWriteMemoryRequest;
property SupportsDisassembleRequest: boolean read FSupportsDisassembleRequest write FSupportsDisassembleRequest;
property SupportsCancelRequest: boolean read FSupportsCancelRequest write FSupportsCancelRequest;
- property SupportsBreakpointLocationRequest: boolean read FSupportsBreakpointLocationRequest write FSupportsBreakpointLocationRequest;
+ property SupportsBreakpointLocationsRequest: boolean read FSupportsBreakpointLocationsRequest write FSupportsBreakpointLocationsRequest;
property SupportsClipboardContext: boolean read FSupportsClipboardContext write FSupportsClipboardContext;
property SupportsSteppingGranularity: boolean read FSupportsSteppingGranularity write FSupportsSteppingGranularity;
property SupportsInstructionBreakpoints: boolean read FSupportsInstructionBreakpoints write FSupportsInstructionBreakpoints;
property SupportsExceptionFilterOptions: boolean read FSupportsExceptionFilterOptions write FSupportsExceptionFilterOptions;
property SupportsSingleThreadExecutionRequests: boolean read FSupportsSingleThreadExecutionRequests write FSupportsSingleThreadExecutionRequests;
+ property BreakpointModes: TBreakpointModes_ read FBreakpointModes write FBreakpointModes;
end;
TBreakpointLocation = class(TBaseType)
@@ -685,12 +736,15 @@ TSourceBreakpoint = class(TBaseType)
FHitCondition: string;
[JSONName('logMessage')]
FLogMessage: string;
+ [JSONName('mode'), JSONReflect(ctStrings, rtStrings, TEnumInterceptor)]
+ FMode: TBreakpointMode_;
public
property Line: integer read FLine write FLine;
property Column: integer read FColumn write FColumn;
property Condition: string read FCondition write FCondition;
property HitCondition: string read FHitCondition write FHitCondition;
property LogMessage: string read FLogMessage write FLogMessage;
+ property Mode: TBreakpointMode_ read FMode write FMode;
end;
TSourceBreakpoints = TObjectList;
@@ -711,18 +765,21 @@ TFunctionBreakpoint = class(TBaseType)
TFunctionBreakpoints = TObjectList;
- TExceptionFilterOption = class(TBaseType)
+ TExceptionFilterOptions = class(TBaseType)
private
[JSONName('filterId')]
FFilterId: string;
[JSONName('condition')]
FCondition: string;
+ [JSONName('mode'), JSONReflect(ctStrings, rtStrings, TEnumInterceptor)]
+ FMode: TBreakpointMode_;
public
property FilterId: string read FFilterId write FFilterId;
property Condition: string read FCondition write FCondition;
+ property Mode: TBreakpointMode_ read FMode write FMode;
end;
- TExceptionFilterOptions = TObjectList;
+ TExceptionFilterOptionsList = TObjectList;
TExceptionPathSegment = class(TBaseType)
private
@@ -735,7 +792,7 @@ TExceptionPathSegment = class(TBaseType)
property Names: TArray read FNames write FNames;
end;
- TExceptionOption = class(TBaseType)
+ TExceptionOptions = class(TBaseType)
private
[JSONName('path'), Managed()]
FPath: TExceptionPathSegment;
@@ -746,7 +803,7 @@ TExceptionOption = class(TBaseType)
property BreakMode: TExceptionBreakMode read FBreakMode write FBreakMode;
end;
- TExceptionOptions = TObjectList;
+ TExceptionOptionsList = TObjectList;
TDataBreakpoint = class(TBaseType)
private
@@ -777,11 +834,14 @@ TInstructionBreakpoint = class(TBaseType)
FCondition: string;
[JSONName('hitCondition')]
FHitCondition: string;
+ [JSONName('mode'), JSONReflect(ctStrings, rtStrings, TEnumInterceptor)]
+ FMode: TBreakpointMode_;
public
property InstructionReference: string read FInstructionReference write FInstructionReference;
property Offset: string read FOffset write FOffset;
property Condition: string read FCondition write FCondition;
property HitCondition: string read FHitCondition write FHitCondition;
+ property Mode: TBreakpointMode_ read FMode write FMode;
end;
TInstructionBreakpoints = TObjectList;
@@ -1042,7 +1102,7 @@ TTarget = class(TBaseType)
TTargets = TObjectList;
- TCompletitionItem = class(TBaseType)
+ TCompletionItem = class(TBaseType)
private
[JSONName('label')]
FLabel: string;
@@ -1055,7 +1115,7 @@ TCompletitionItem = class(TBaseType)
[JSONName('start')]
FStart: integer;
[JSONName('type'), JSONReflect(ctString, rtString, TEnumInterceptor)]
- FType: TCompletitionItemType;
+ FType: TCompletionItemType;
[JSONName('length')]
FLength: integer;
[JSONName('selectionStart')]
@@ -1067,18 +1127,19 @@ TCompletitionItem = class(TBaseType)
property Text: string read FText write FText;
property SortText: string read FSortText write FSortText;
property Detail: string read FDetail write FDetail;
- property &Type: TCompletitionItemType read FType write FType;
+ property &Type: TCompletionItemType read FType write FType;
property Start: integer read FStart write FStart;
property Length: integer read FLength write FLength;
property SelectionStart: integer read FSelectionStart write FSelectionStart;
property SelectionLength: integer read FSelectionLength write FSelectionLength;
end;
- TCompletitionItems = TObjectList;
+ TCompletionItems = TObjectList;
+
+ TExceptionDetails = class;
+ TExceptionDetailsList = TObjectList;
- TExceptionDetail = class;
- TExceptionDetails = TObjectList;
- TExceptionDetail = class(TBaseType)
+ TExceptionDetails = class(TBaseType)
private
[JSONName('message')]
FMessage: string;
@@ -1091,17 +1152,17 @@ TExceptionDetail = class(TBaseType)
[JSONName('stackTrace')]
FStackTrace: string;
[JSONName('innerException'), Managed()]
- FInnerException: TExceptionDetails;
+ FInnerException: TExceptionDetailsList;
public
property Message: string read FMessage write FMessage;
property TypeName: string read FTypeName write FTypeName;
property FullTypeName: string read FFullTypeName write FFullTypeName;
property EvaluteName: string read FEvaluteName write FEvaluteName;
property StackTrace: string read FStackTrace write FStackTrace;
- property InnerException: TExceptionDetails read FInnerException write FInnerException;
+ property InnerException: TExceptionDetailsList read FInnerException write FInnerException;
end;
- TDisassembleInstruction = class(TBaseType)
+ TDisassembledInstruction = class(TBaseType)
private
[JSONName('address')]
FAddress: string;
@@ -1130,7 +1191,7 @@ TDisassembleInstruction = class(TBaseType)
property EndColumn: integer read FEndColumn write FEndColumn;
end;
- TDisassembleInstruction = class(TDisassembleInstruction)
+ TDisassembledInstruction = class(TDisassembledInstruction)
private
[JSONName('location'), Managed()]
FLocation: TSource;
@@ -1138,11 +1199,11 @@ TDisassembleInstruction = class(TDisassembleInstruction)
property Location: TSource read FLocation write FLocation;
end;
- TDynamicDisassembleInstruction = TDisassembleInstruction;
+ TDynamicDisassembledInstruction = TDisassembledInstruction;
- TDisassembleInstructions = TObjectList;
+ TDisassembledInstructions = TObjectList;
- TDynamicDisassembleInstructions = TObjectList;
+ TDynamicDisassembledInstructions = TObjectList;
const
TWO_CRLF = sLineBreak + sLineBreak;
@@ -1230,6 +1291,7 @@ procedure TSource.Assign(Source: TPersistent);
begin
inherited;
{ TODO : Fix here when we get the AdapterData type possibilities }
+ LNewItem := nil;
for var LItem in Self.Sources do begin
//Creates an identical instance type
LNewItem := LItem.ClassType.InitInstance(LNewItem) as TPersistent;
diff --git a/source/BaseProtocol.pas b/source/BaseProtocol.pas
index 0eba122..dd57e80 100644
--- a/source/BaseProtocol.pas
+++ b/source/BaseProtocol.pas
@@ -103,7 +103,6 @@ TEvent = class(TEvent)
end;
//Response classes
- TResponseMessage = string;
[MessageType(TMessageType.Response)]
TResponse = class(TProtocolMessage)
private
@@ -113,7 +112,7 @@ TResponse = class(TProtocolMessage)
FSuccess: boolean;
[JSONName('command'), JSONReflect(ctString, rtString, TEnumInterceptor)]
FCommand: TRequestCommand;
- [JSONName('message')]
+ [JSONName('message'), JSONReflect(ctString, rtString, TEnumInterceptor)]
FMessage: TResponseMessage;
public
procedure AfterConstruction(); override;
@@ -121,7 +120,7 @@ TResponse = class(TProtocolMessage)
property RequestSeq: integer read FRequestSeq write FRequestSeq;
property Success: boolean read FSuccess write FSuccess;
property Command: TRequestCommand read FCommand write FCommand;
- property Message: TResponseMessage read FMessage write FMessage;
+ property &Message: TResponseMessage read FMessage write FMessage;
end;
TResponse = class(TResponse)