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 <[email protected]>
+
+ * 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 <[email protected]>
* 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
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs