Author: rmottola Date: Thu Sep 29 10:58:57 2016 New Revision: 40114 URL: http://svn.gna.org/viewcvs/gnustep?rev=40114&view=rev Log: Add skeleton to handle breakpoints, add breakpoint types
Modified: apps/projectcenter/trunk/ChangeLog apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.h apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.m apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PipeDelegate.m Modified: apps/projectcenter/trunk/ChangeLog URL: http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/ChangeLog?rev=40114&r1=40113&r2=40114&view=diff ============================================================================== --- apps/projectcenter/trunk/ChangeLog (original) +++ apps/projectcenter/trunk/ChangeLog Thu Sep 29 10:58:57 2016 @@ -1,3 +1,11 @@ +2016-09-29 Riccardo Mottola <r...@gnu.org> + + * Modules/Debuggers/ProjectCenter/PCDebugger.h + * Modules/Debuggers/ProjectCenter/PCDebugger.m + * Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h + * Modules/Debuggers/ProjectCenter/PipeDelegate.m + Add skeleton to handle breakpoints, add breakpoint types. + 2016-06-06 11:47-EDT Gregory John Casamento <greg.casame...@gmail.com> * Modules/Debuggers/ProjectCenter/PCDebuggerView.m: Add code to Modified: apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.h URL: http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.h?rev=40114&r1=40113&r2=40114&view=diff ============================================================================== --- apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.h (original) +++ apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.h Thu Sep 29 10:58:57 2016 @@ -27,6 +27,14 @@ #import <Protocols/CodeDebugger.h> +extern const NSString *PCBreakTypeKey; +extern NSString *PCBreakTypeByLine; +extern NSString *PCBreakTypeMethod; + +extern const NSString *PCBreakMethod; +extern const NSString *PCBreakFilename; +extern const NSString *PCBreakLineNumber; + @interface PCDebugger : NSObject <CodeDebugger> { id debuggerView; @@ -36,6 +44,7 @@ NSString *debuggerPath; int subProcessId; float gdbVersion; + NSMutableArray *breakpoints; } - (void) setStatus: (NSString *) status; Modified: apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.m URL: http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.m?rev=40114&r1=40113&r2=40114&view=diff ============================================================================== --- apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.m (original) +++ apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebugger.m Thu Sep 29 10:58:57 2016 @@ -53,6 +53,13 @@ static NSImage *upImage = nil; static NSImage *downImage = nil; +const NSString *PCBreakTypeKey = @"BreakType"; +NSString *PCBreakTypeByLine = @"BreakTypeLine"; +NSString *PCBreakTypeMethod = @"BreakTypeMethod"; +const NSString *PCBreakMethod = @"BreakMethod"; +const NSString *PCBreakFilename = @"BreakFilename"; +const NSString *PCBreakLineNumber = @"BreakLineNumber"; + @implementation PCDebugger + (void) initialize { @@ -131,6 +138,7 @@ return font; } + - (id) init { if((self = [super init]) != nil) @@ -151,6 +159,8 @@ subProcessId = 0; gdbVersion = 0.0; + + breakpoints = nil; } return self; } @@ -176,7 +186,29 @@ inCurrentDirectory: [executablePath stringByDeletingLastPathComponent] withArguments: [[NSArray alloc] initWithObjects: @"--interpreter=mi", @"-f", executablePath, nil] logStandardError: YES]; -} + + // is this really the best place? + [self initBreakpoints]; +} + +- (void) initBreakpoints +{ + id <PCDebuggerViewDelegateProtocol> viewDelegate; + + breakpoints = [[NSMutableArray alloc] init]; + NSDictionary *dP; + NSLog(@"initing breakpoints"); + + /* CRUDE EXAMPLES * TODO FIXME * + dP = [NSDictionary dictionaryWithObjectsAndKeys: PCBreakTypeMethod, PCBreakTypeKey, @"[NSException raise]", PCBreakMethod, nil]; + // [breakpoints addObject:dP]; + dP = [NSDictionary dictionaryWithObjectsAndKeys: PCBreakTypeByLine, PCBreakTypeKey, @"AppController.m", PCBreakFilename, [NSNumber numberWithInt:100], PCBreakLineNumber, nil]; + [breakpoints addObject:dP]; + */ + + viewDelegate = [debuggerView delegate]; + [viewDelegate setBreakpoints:breakpoints]; +} - (void) awakeFromNib { @@ -345,7 +377,7 @@ - (void) dealloc { - [debuggerWindow close]; + [breakpoints release]; [super dealloc]; } @end Modified: apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h URL: http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h?rev=40114&r1=40113&r2=40114&view=diff ============================================================================== --- apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h (original) +++ apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PCDebuggerViewDelegateProtocol.h Thu Sep 29 10:58:57 2016 @@ -49,6 +49,8 @@ newLine:(BOOL)newLine withColor:(NSColor *)color; +- (void) setBreakpoints:(NSArray *)breakpoints; + - (void) terminate; - (void) interrupt; Modified: apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PipeDelegate.m URL: http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PipeDelegate.m?rev=40114&r1=40113&r2=40114&view=diff ============================================================================== --- apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PipeDelegate.m (original) +++ apps/projectcenter/trunk/Modules/Debuggers/ProjectCenter/PipeDelegate.m Thu Sep 29 10:58:57 2016 @@ -641,4 +641,51 @@ else NSLog(@"characters: |%@|", chars); } + +- (void) setBreakpoints:(NSArray *)breakpoints +{ + NSDictionary *bp; + NSEnumerator *e; + + // TODO + e = [breakpoints objectEnumerator]; + while ((bp = [e nextObject])) + { + NSString *bpType; + NSString *bpString; + + bpType = [bp objectForKey:PCBreakTypeKey]; + bpString = nil; + if ([bpType isEqualToString:PCBreakTypeByLine]) + { + NSString *fileName; + NSNumber *lineNumber; + + fileName = [bp objectForKey:PCBreakFilename]; + lineNumber = [bp objectForKey:PCBreakLineNumber]; + bpString = [NSString stringWithFormat:@"%@:%@", fileName, lineNumber]; + } + else if ([bpType isEqualToString:PCBreakTypeMethod]) + { + NSString *methodName; + + methodName = [bp objectForKey:PCBreakMethod]; + bpString = methodName; + } + else + { + NSLog(@"Unknown breakpoint type: %@", bpType); + } + if (bpString) + { + NSString *command; + + /* TODO: split into a separate insert function */ + command = [NSString stringWithFormat:@"-break-insert -f %@", bpString]; + NSLog(@"gdb mi command is: %@", command); + [self putString: command]; + } + } +} + @end _______________________________________________ Gnustep-cvs mailing list Gnustep-cvs@gna.org https://mail.gna.org/listinfo/gnustep-cvs