@@ -54,6 +54,8 @@ public abstract class MICommandFactory
5454
5555 public abstract string Name { get ; }
5656
57+ internal string Version { get ; set ; }
58+
5759 public static MICommandFactory GetInstance ( MIMode mode , Debugger debugger )
5860 {
5961 MICommandFactory commandFactory ;
@@ -119,16 +121,18 @@ public virtual async Task<Results> ThreadInfo(uint? threadid = null)
119121
120122 public async Task < Results > StackInfoDepth ( int threadId , int maxDepth = 1000 , ResultClass resultClass = ResultClass . done )
121123 {
122- string command = string . Format ( CultureInfo . InvariantCulture , @"-stack-info-depth {0}" , maxDepth ) ;
123- Results results = await ThreadCmdAsync ( command , resultClass , threadId ) ;
124+ string command = "-stack-info-depth" ;
125+ string args = string . Format ( CultureInfo . InvariantCulture , $@ "{ maxDepth } ") ;
126+ Results results = await ThreadCmdAsync ( command , args , resultClass , threadId ) ;
124127
125128 return results ;
126129 }
127130
128131 public async Task < TupleValue [ ] > StackListFrames ( int threadId , uint lowFrameLevel , uint highFrameLevel = 1000 )
129132 {
130- string command = string . Format ( CultureInfo . InvariantCulture , @"-stack-list-frames {0} {1}" , lowFrameLevel , highFrameLevel ) ;
131- Results results = await ThreadCmdAsync ( command , ResultClass . done , threadId ) ;
133+ string command = "-stack-list-frames" ;
134+ string args = string . Format ( CultureInfo . InvariantCulture , $@ "{ lowFrameLevel } { highFrameLevel } ") ;
135+ Results results = await ThreadCmdAsync ( command , args , ResultClass . done , threadId ) ;
132136
133137 ListValue list = results . Find < ListValue > ( "stack" ) ;
134138 if ( list is ResultListValue )
@@ -164,9 +168,10 @@ public async Task<Results> StackInfoFrame()
164168 /// <returns></returns>
165169 public async Task < ResultValue > StackListLocals ( PrintValue printValues , int threadId , uint frameLevel )
166170 {
167- string cmd = string . Format ( CultureInfo . InvariantCulture , @"-stack-list-locals {0}" , ( int ) printValues ) ;
171+ string cmd = "-stack-list-locals" ;
172+ string args = string . Format ( CultureInfo . InvariantCulture , $@ "{ ( int ) printValues } ") ;
168173
169- Results localsResults = await ThreadFrameCmdAsync ( cmd , ResultClass . done , threadId , frameLevel ) ;
174+ Results localsResults = await ThreadFrameCmdAsync ( cmd , args , ResultClass . done , threadId , frameLevel ) ;
170175 return localsResults . Find ( "locals" ) ;
171176 }
172177
@@ -180,8 +185,9 @@ public async Task<ResultValue> StackListLocals(PrintValue printValues, int threa
180185 /// <returns>This returns an array of results of frames, which contains a level and an args array. </returns>
181186 public virtual async Task < TupleValue [ ] > StackListArguments ( PrintValue printValues , int threadId , uint lowFrameLevel , uint hiFrameLevel )
182187 {
183- string cmd = string . Format ( CultureInfo . InvariantCulture , @"-stack-list-arguments {0} {1} {2}" , ( int ) printValues , lowFrameLevel , hiFrameLevel ) ;
184- Results argumentsResults = await ThreadCmdAsync ( cmd , ResultClass . done , threadId ) ;
188+ string command = "-stack-list-arguments" ;
189+ string args = string . Format ( CultureInfo . InvariantCulture , $@ "{ ( int ) printValues } { lowFrameLevel } { hiFrameLevel } ") ;
190+ Results argumentsResults = await ThreadCmdAsync ( command , args , ResultClass . done , threadId ) ;
185191
186192 return argumentsResults . Find < ListValue > ( "stack-args" ) . IsEmpty ( )
187193 ? new TupleValue [ 0 ]
@@ -213,9 +219,9 @@ public async Task<ListValue> StackListArguments(PrintValue printValues, int thre
213219 /// <returns>Returns an array of results for variables</returns>
214220 public async Task < ValueListValue > StackListVariables ( PrintValue printValues , int threadId , uint frameLevel )
215221 {
216- string cmd = string . Format ( CultureInfo . InvariantCulture , @ "-stack-list-variables {0}" , ( int ) printValues ) ;
217-
218- Results variablesResults = await ThreadFrameCmdAsync ( cmd , ResultClass . done , threadId , frameLevel ) ;
222+ string cmd = "-stack-list-variables" ;
223+ string args = string . Format ( CultureInfo . InvariantCulture , $@ " { ( int ) printValues } " ) ;
224+ Results variablesResults = await ThreadFrameCmdAsync ( cmd , args , ResultClass . done , threadId , frameLevel ) ;
219225 return variablesResults . Find < ValueListValue > ( "variables" ) ;
220226 }
221227
@@ -226,31 +232,36 @@ public async Task<ValueListValue> StackListVariables(PrintValue printValues, int
226232 public async Task ExecStep ( int threadId , ResultClass resultClass = ResultClass . running )
227233 {
228234 string command = "-exec-step" ;
229- await ThreadFrameCmdAsync ( command , resultClass , threadId , 0 ) ;
235+ string args = string . Empty ;
236+ await ThreadFrameCmdAsync ( command , args , resultClass , threadId , 0 ) ;
230237 }
231238
232239 public async Task ExecNext ( int threadId , ResultClass resultClass = ResultClass . running )
233240 {
234241 string command = "-exec-next" ;
235- await ThreadFrameCmdAsync ( command , resultClass , threadId , 0 ) ;
242+ string args = string . Empty ;
243+ await ThreadFrameCmdAsync ( command , args , resultClass , threadId , 0 ) ;
236244 }
237245
238246 public async Task ExecFinish ( int threadId , ResultClass resultClass = ResultClass . running )
239247 {
240248 string command = "-exec-finish" ;
241- await ThreadFrameCmdAsync ( command , resultClass , threadId , 0 ) ;
249+ string args = string . Empty ;
250+ await ThreadFrameCmdAsync ( command , args , resultClass , threadId , 0 ) ;
242251 }
243252
244253 public async Task ExecStepInstruction ( int threadId , ResultClass resultClass = ResultClass . running )
245254 {
246255 string command = "-exec-step-instruction" ;
247- await ThreadFrameCmdAsync ( command , resultClass , threadId , 0 ) ;
256+ string args = string . Empty ;
257+ await ThreadFrameCmdAsync ( command , args , resultClass , threadId , 0 ) ;
248258 }
249259
250260 public async Task ExecNextInstruction ( int threadId , ResultClass resultClass = ResultClass . running )
251261 {
252262 string command = "-exec-next-instruction" ;
253- await ThreadFrameCmdAsync ( command , resultClass , threadId , 0 ) ;
263+ string args = string . Empty ;
264+ await ThreadFrameCmdAsync ( command , args , resultClass , threadId , 0 ) ;
254265 }
255266
256267 /// <summary>
@@ -296,15 +307,17 @@ public async Task<string[]> DataListRegisterNames()
296307
297308 public async Task < TupleValue [ ] > DataListRegisterValues ( int threadId )
298309 {
299- string command = "-data-list-register-values x" ;
300- Results results = await ThreadCmdAsync ( command , ResultClass . done , threadId ) ;
310+ string command = "-data-list-register-values" ;
311+ string args = "x" ;
312+ Results results = await ThreadCmdAsync ( command , args , ResultClass . done , threadId ) ;
301313 return results . Find < ValueListValue > ( "register-values" ) . AsArray < TupleValue > ( ) ;
302314 }
303315
304316 public async Task < string > DataEvaluateExpression ( string expr , int threadId , uint frame )
305317 {
306- string command = "-data-evaluate-expression \" " + expr + "\" " ;
307- Results results = await ThreadFrameCmdAsync ( command , ResultClass . None , threadId , frame ) ;
318+ string command = "-data-evaluate-expression" ;
319+ string args = $ "\" { expr } \" ";
320+ Results results = await ThreadFrameCmdAsync ( command , args , ResultClass . None , threadId , frame ) ;
308321 return results . FindString ( "value" ) ;
309322 }
310323
@@ -344,8 +357,9 @@ public virtual Task<bool> SetStepFiltering(bool enabled)
344357 public virtual async Task < Results > VarCreate ( string expression , int threadId , uint frameLevel , enum_EVALFLAGS dwFlags , ResultClass resultClass = ResultClass . done )
345358 {
346359 string quoteEscapedExpression = EscapeQuotes ( HandleInvalidChars ( expression ) ) ;
347- string command = string . Format ( CultureInfo . InvariantCulture , "-var-create - * \" {0}\" " , quoteEscapedExpression ) ;
348- Results results = await ThreadFrameCmdAsync ( command , resultClass , threadId , frameLevel ) ;
360+ string command = "-var-create" ;
361+ string args = string . Format ( CultureInfo . InvariantCulture , $ " - * \" { quoteEscapedExpression } \" ") ;
362+ Results results = await ThreadFrameCmdAsync ( command , args , resultClass , threadId , frameLevel ) ;
349363
350364 return results ;
351365 }
@@ -646,8 +660,8 @@ internal string HandleInvalidChars(string str)
646660
647661 #region Other
648662
649- abstract protected Task < Results > ThreadFrameCmdAsync ( string command , ResultClass expectedResultClass , int threadId , uint frameLevel ) ;
650- abstract protected Task < Results > ThreadCmdAsync ( string command , ResultClass expectedResultClass , int threadId ) ;
663+ abstract protected Task < Results > ThreadFrameCmdAsync ( string command , string args , ResultClass expectedResultClass , int threadId , uint frameLevel ) ;
664+ abstract protected Task < Results > ThreadCmdAsync ( string command , string args , ResultClass expectedResultClass , int threadId ) ;
651665
652666 abstract public string GetSetEnvironmentVariableCommand ( string name , string value ) ;
653667
0 commit comments