- (NSString *)createCommand:(NSString *)cmd, ...;
- (NSXMLDocument *)processData:(NSString *)data;
-- (StackFrame *)createStackFrame;
+- (StackFrame *)createStackFrame:(int)depth;
+- (StackFrame *)createCurrentStackFrame;
- (void)updateStatus;
@end
if (!connected)
return nil;
- return [self createStackFrame];
+ return [self createCurrentStackFrame];
}
/**
if (!connected)
return nil;
- return [self createStackFrame];
+ return [self createCurrentStackFrame];
}
/**
if (!connected)
return nil;
- return [self createStackFrame];
+ return [self createCurrentStackFrame];
}
/**
if (!connected)
return nil;
- return [self createStackFrame];
+ return [self createCurrentStackFrame];
}
/**
}
/**
- * Creates a StackFrame based on the current position in the debugger
+ * Generates a stack frame for the given depth
*/
-- (StackFrame *)createStackFrame
+- (StackFrame *)createStackFrame:(int)stackDepth
{
// get the stack frame
- [socket send:[self createCommand:@"stack_get -d 0"]];
+ [socket send:[self createCommand:@"stack_get -d %d", stackDepth]];
NSXMLDocument *doc = [self processData:[socket receive]];
if (doc == nil)
return nil;
int cid = [[[context attributeForName:@"id"] stringValue] intValue];
// fetch the contexts
- [socket send:[self createCommand:[NSString stringWithFormat:@"context_get -d 0 -c %d", cid]]];
+ [socket send:[self createCommand:[NSString stringWithFormat:@"context_get -d %d -c %d", stackDepth, cid]]];
NSArray *addVars = [[[self processData:[socket receive]] rootElement] children];
if (addVars != nil && name != nil)
[variables addObjectsFromArray:addVars];
return [frame autorelease];
}
+/**
+ * Creates a StackFrame based on the current position in the debugger
+ */
+- (StackFrame *)createCurrentStackFrame
+{
+ return [self createStackFrame:0];
+}
+
/**
* Fetches the value of and sets the status instance variable
*/