Some more work on threads (thread status)
authorJan Vrany <jan.vrany@fit.cvut.cz>
Mon, 08 Sep 2014 10:02:31 +0100
changeset 37 a85f0c91f164
parent 36 095c4b0b74d3
child 38 c9eaa506824b
Some more work on threads (thread status)
GDBDebugger.st
GDBError.st
GDBInvalidObject.st
GDBSelectedFrameChangedEvent.st
GDBThread.st
GDBThreadGroup.st
GDBThreadStatus.st
GDBThreadStatusRunning.st
GDBThreadStatusStopped.st
GDBThreadStatusTerminated.st
GDBTransientObject.st
Make.proto
Make.spec
abbrev.stc
bc.mak
jv_libgdbs.st
libInit.cc
libgdbs.rc
tests/GDBDebuggerTests.st
tests/tests.rc
--- a/GDBDebugger.st	Sun Sep 07 22:44:55 2014 +0100
+++ b/GDBDebugger.st	Mon Sep 08 10:02:31 2014 +0100
@@ -2,7 +2,7 @@
 
 Object subclass:#GDBDebugger
 	instanceVariableNames:'connection commandSequenceNumber inferiorStateSequenceNumber
-		inferiors'
+		inferiors selectedInferior selectedThread selectedFrame'
 	classVariableNames:''
 	poolDictionaries:'GDBCommandStatus'
 	category:'GDB-Core'
@@ -62,6 +62,17 @@
 
 inferiors
     ^ inferiors
+!
+
+selectedInferior
+    selectedInferior isNil ifTrue:[ 
+        inferiors size == 1 ifTrue:[ 
+            ^ inferiors anElement.
+        ].
+    ].
+    ^ selectedInferior
+
+    "Created: / 07-09-2014 / 23:02:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GDBDebugger methodsFor:'accessing-private'!
@@ -128,82 +139,88 @@
 
 !GDBDebugger methodsFor:'event handling'!
 
-onCommand: aGDBCommandEvent
-    connection send: aGDBCommandEvent command.
+onCommandEvent:aGDBCommandEvent 
+    connection send:aGDBCommandEvent command.
 
     "Created: / 02-06-2014 / 23:38:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 20-06-2014 / 22:09:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-onCommandResult: aGDBCommandResultEvent
-    aGDBCommandResultEvent result status == CommandStatusExit ifTrue:[ 
-        connection pushEvent: GDBExitEvent new.
+onCommandResultEvent:aGDBCommandResultEvent 
+    aGDBCommandResultEvent result status == CommandStatusExit ifTrue:[
+        connection pushEvent:GDBExitEvent new.
     ].
 
-    "Created: / 02-06-2014 / 23:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 04-06-2014 / 09:30:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 07-09-2014 / 23:37:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-onExecutionEvent: aGDBExecutionEvent
-    self nextInferiorStateSequnceNumber.
-
-    "Created: / 19-06-2014 / 22:21:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-onExit: aGDBExitEvent
+onExitEvent:aGDBExitEvent 
     self release.
 
     "Created: / 03-06-2014 / 00:36:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 04-06-2014 / 09:28:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-onThreadCreated:aGDBThreadCreatedEvent
+onRunningEvent: aGDBRunningEvent
+    self nextInferiorStateSequnceNumber
+
+    "Created: / 07-09-2014 / 23:34:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+onStoppedEvent: aGDBRunningEvent
+
+    "Created: / 07-09-2014 / 23:34:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+onThreadCreatedEvent:aGDBThreadCreatedEvent 
     | inferior |
 
-    inferior := self inferiorForId: aGDBThreadCreatedEvent threadGroupId.
-    inferior onThreadCreated: aGDBThreadCreatedEvent.
+    inferior := self inferiorForId:aGDBThreadCreatedEvent threadGroupId.
+    inferior onThreadCreatedEvent:aGDBThreadCreatedEvent.
 
     "Created: / 07-09-2014 / 21:20:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-onThreadExited:aGDBThreadExitedEvent
+onThreadExitedEvent:aGDBThreadExitedEvent 
     | inferior |
 
-    inferior := self inferiorForId: aGDBThreadExitedEvent threadGroupId.
-    inferior onThreadExited: aGDBThreadExitedEvent.
+    inferior := self inferiorForId:aGDBThreadExitedEvent threadGroupId.
+    inferior onThreadExitedEvent:aGDBThreadExitedEvent.
 
     "Created: / 07-09-2014 / 21:20:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-onThreadGroupAdded:aGDBThreadGroupAddedEvent 
+onThreadGroupAddedEvent:aGDBThreadGroupAddedEvent 
     | inferior |
+
     inferiors isNil ifTrue:[
         inferiors := List new.
     ].
-    inferior := GDBThreadGroup newWithDebugger: self id:aGDBThreadGroupAddedEvent threadGroupId.
+    inferior := GDBThreadGroup newWithDebugger:self
+            id:aGDBThreadGroupAddedEvent threadGroupId.
     inferiors add:inferior.
-    aGDBThreadGroupAddedEvent setThreadGroup: inferior
+    aGDBThreadGroupAddedEvent setThreadGroup:inferior
 
     "Modified: / 07-09-2014 / 21:18:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-onThreadGroupExited:aGDBThreadGroupExitedEvent 
+onThreadGroupExitedEvent:aGDBThreadGroupExitedEvent 
     | inferior |
 
-    inferior := self inferiorForId: aGDBThreadGroupExitedEvent threadGroupId.    
-    inferior setExitCode: aGDBThreadGroupExitedEvent exitCode.
-    aGDBThreadGroupExitedEvent setThreadGroup: inferior
+    inferior := self inferiorForId:aGDBThreadGroupExitedEvent threadGroupId.
+    inferior setExitCode:aGDBThreadGroupExitedEvent exitCode.
+    aGDBThreadGroupExitedEvent setThreadGroup:inferior
 
     "Created: / 06-09-2014 / 02:37:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 07-09-2014 / 21:23:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-onThreadGroupStarted:aGDBThreadGroupStartedEvent
+onThreadGroupStartedEvent:aGDBThreadGroupStartedEvent 
     | inferior |
 
-    inferior := self inferiorForId: aGDBThreadGroupStartedEvent threadGroupId.  
-    inferior setPid: aGDBThreadGroupStartedEvent pid.
-    aGDBThreadGroupStartedEvent setThreadGroup: inferior
+    inferior := self inferiorForId:aGDBThreadGroupStartedEvent threadGroupId.
+    inferior setPid:aGDBThreadGroupStartedEvent pid.
+    aGDBThreadGroupStartedEvent setThreadGroup:inferior
 
     "Created: / 06-09-2014 / 02:37:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 07-09-2014 / 21:23:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -252,20 +269,22 @@
 
 subscribe
     connection eventAnnouncerInternal
-        when: GDBCommandEvent               send: #onCommand:           to: self;
-        when: GDBCommandResultEvent         send: #onCommandResult:     to: self;
-        when: GDBExitEvent                  send: #onExit:              to: self;
-        when: GDBExecutionEvent             send: #onExecutionEvent:    to: self;
+        when: GDBCommandEvent               send: #onCommandEvent:           to: self;
+        when: GDBCommandResultEvent         send: #onCommandResultEvent:     to: self;
+        when: GDBExitEvent                  send: #onExitEvent:              to: self;
 
-        when: GDBThreadGroupAddedEvent      send: #onThreadGroupAdded:  to: self;
-        when: GDBThreadGroupStartedEvent    send: #onThreadGroupStarted: to: self;
-        when: GDBThreadGroupExitedEvent     send: #onThreadGroupExited: to: self;
+        when: GDBThreadGroupAddedEvent      send: #onThreadGroupAddedEvent:  to: self;
+        when: GDBThreadGroupStartedEvent    send: #onThreadGroupStartedEvent: to: self;
+        when: GDBThreadGroupExitedEvent     send: #onThreadGroupExitedEvent: to: self;
 
-        when: GDBThreadCreatedEvent         send: #onThreadCreated:      to: self;
-        when: GDBThreadExitedEvent          send: #onThreadExited:       to: self.
+        when: GDBThreadCreatedEvent         send: #onThreadCreatedEvent:      to: self;
+        when: GDBThreadExitedEvent          send: #onThreadExitedEvent:       to: self;
+
+        when: GDBRunningEvent               send: #onRunningEvent:            to: self;
+        when: GDBStoppedEvent               send: #onStoppedEvent:            to: self.
 
     "Created: / 20-06-2014 / 22:07:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 07-09-2014 / 22:29:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-09-2014 / 23:32:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 unsubscribe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBError.st	Mon Sep 08 10:02:31 2014 +0100
@@ -0,0 +1,9 @@
+"{ Package: 'jv:libgdbs' }"
+
+Error subclass:#GDBError
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Core-Exeptions'
+!
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBInvalidObject.st	Mon Sep 08 10:02:31 2014 +0100
@@ -0,0 +1,9 @@
+"{ Package: 'jv:libgdbs' }"
+
+GDBError subclass:#GDBInvalidObject
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Core-Exeptions'
+!
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBSelectedFrameChangedEvent.st	Mon Sep 08 10:02:31 2014 +0100
@@ -0,0 +1,18 @@
+"{ Package: 'jv:libgdbs' }"
+
+GDBInternalEvent subclass:#GDBSelectedFrameChangedEvent
+	instanceVariableNames:'frame'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Core-Events'
+!
+
+!GDBSelectedFrameChangedEvent methodsFor:'initialization'!
+
+setFrame: aGDBFrame
+    self assert: aGDBFrame isNil.
+    frame := aGDBFrame
+
+    "Created: / 07-09-2014 / 23:12:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/GDBThread.st	Sun Sep 07 22:44:55 2014 +0100
+++ b/GDBThread.st	Mon Sep 08 10:02:31 2014 +0100
@@ -1,7 +1,7 @@
 "{ Package: 'jv:libgdbs' }"
 
 GDBDebuggerObject subclass:#GDBThread
-	instanceVariableNames:'id group terminated'
+	instanceVariableNames:'id group status'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'GDB-Core'
@@ -35,12 +35,6 @@
     ^ id
 
     "Created: / 07-09-2014 / 22:41:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-terminated
-    ^ terminated ? false
-
-    "Modified: / 07-09-2014 / 21:37:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GDBThread methodsFor:'initialization'!
@@ -55,13 +49,42 @@
 setId: tid
     self assert: id isNil.
     id := tid.
+    status := GDBThreadStatusRunning theOneAndOnlyInstance
 
     "Created: / 07-09-2014 / 21:31:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-09-2014 / 23:27:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setStatus: aGDBThreadStatus
+    status := aGDBThreadStatus
+
+    "Created: / 07-09-2014 / 23:25:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setTerminated
-    terminated := true.
+    status := GDBThreadStatusTerminated theOneAndOnlyInstance
 
     "Created: / 07-09-2014 / 21:37:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-09-2014 / 23:21:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!GDBThread methodsFor:'testing'!
+
+isRunning
+    ^ status isRunning
+
+    "Created: / 07-09-2014 / 23:23:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isStopped
+    ^ status isStopped
+
+    "Created: / 07-09-2014 / 23:23:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTerminated
+    ^ status isTerminated
+
+    "Created: / 07-09-2014 / 23:23:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- a/GDBThreadGroup.st	Sun Sep 07 22:44:55 2014 +0100
+++ b/GDBThreadGroup.st	Mon Sep 08 10:02:31 2014 +0100
@@ -62,24 +62,28 @@
 
 !GDBThreadGroup methodsFor:'event handling'!
 
-onThreadCreated:aGDBThreadCreatedEvent
+onThreadCreatedEvent:aGDBThreadCreatedEvent 
     | thread |
-    threads isNil ifTrue:[ 
+
+    threads isNil ifTrue:[
         threads := List new.
     ].
-    thread := GDBThread newWithDebugger: debugger id: aGDBThreadCreatedEvent threadId group: self.
-    threads add: thread.
-    aGDBThreadCreatedEvent setThread: thread.
+    thread := GDBThread 
+            newWithDebugger:debugger
+            id:aGDBThreadCreatedEvent threadId
+            group:self.
+    threads add:thread.
+    aGDBThreadCreatedEvent setThread:thread.
 
     "Created: / 07-09-2014 / 21:25:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-onThreadExited:aGDBThreadExitedEvent
+onThreadExitedEvent:aGDBThreadExitedEvent 
     | thread |
 
     thread := self threadWithId:aGDBThreadExitedEvent threadId.
     thread setTerminated.
-    aGDBThreadExitedEvent setThread: thread
+    aGDBThreadExitedEvent setThread:thread
 
     "Created: / 07-09-2014 / 21:25:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBThreadStatus.st	Mon Sep 08 10:02:31 2014 +0100
@@ -0,0 +1,29 @@
+"{ Package: 'jv:libgdbs' }"
+
+Object subclass:#GDBThreadStatus
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Core'
+!
+
+!GDBThreadStatus methodsFor:'testing'!
+
+isRunning
+    ^ false
+
+    "Created: / 07-09-2014 / 23:22:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isStopped
+    ^ false
+
+    "Created: / 07-09-2014 / 23:22:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTerminated
+    ^ false
+
+    "Created: / 07-09-2014 / 23:22:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBThreadStatusRunning.st	Mon Sep 08 10:02:31 2014 +0100
@@ -0,0 +1,51 @@
+"{ Package: 'jv:libgdbs' }"
+
+GDBThreadStatus subclass:#GDBThreadStatusRunning
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Core'
+!
+
+GDBThreadStatusRunning class instanceVariableNames:'theOneAndOnlyInstance'
+
+"
+ No other class instance variables are inherited by this class.
+"
+!
+
+!GDBThreadStatusRunning class methodsFor:'instance creation'!
+
+flushSingleton
+    "flushes the cached singleton"
+
+    theOneAndOnlyInstance := nil
+
+    "
+     self flushSingleton
+    "
+!
+
+new
+    "returns a singleton"
+
+    ^ self theOneAndOnlyInstance.
+!
+
+theOneAndOnlyInstance
+    "returns a singleton"
+
+    theOneAndOnlyInstance isNil ifTrue:[
+        theOneAndOnlyInstance := self basicNew initialize.
+    ].
+    ^ theOneAndOnlyInstance.
+! !
+
+!GDBThreadStatusRunning methodsFor:'testing'!
+
+isRunning
+    ^ true
+
+    "Created: / 07-09-2014 / 23:22:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBThreadStatusStopped.st	Mon Sep 08 10:02:31 2014 +0100
@@ -0,0 +1,17 @@
+"{ Package: 'jv:libgdbs' }"
+
+GDBThreadStatus subclass:#GDBThreadStatusStopped
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Core'
+!
+
+!GDBThreadStatusStopped methodsFor:'testing'!
+
+isStopped
+    ^ true
+
+    "Created: / 07-09-2014 / 23:22:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBThreadStatusTerminated.st	Mon Sep 08 10:02:31 2014 +0100
@@ -0,0 +1,51 @@
+"{ Package: 'jv:libgdbs' }"
+
+GDBThreadStatus subclass:#GDBThreadStatusTerminated
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Core'
+!
+
+GDBThreadStatusTerminated class instanceVariableNames:'theOneAndOnlyInstance'
+
+"
+ No other class instance variables are inherited by this class.
+"
+!
+
+!GDBThreadStatusTerminated class methodsFor:'instance creation'!
+
+flushSingleton
+    "flushes the cached singleton"
+
+    theOneAndOnlyInstance := nil
+
+    "
+     self flushSingleton
+    "
+!
+
+new
+    "returns a singleton"
+
+    ^ self theOneAndOnlyInstance.
+!
+
+theOneAndOnlyInstance
+    "returns a singleton"
+
+    theOneAndOnlyInstance isNil ifTrue:[
+        theOneAndOnlyInstance := self basicNew initialize.
+    ].
+    ^ theOneAndOnlyInstance.
+! !
+
+!GDBThreadStatusTerminated methodsFor:'testing'!
+
+isTerminated
+    ^ true
+
+    "Created: / 07-09-2014 / 23:22:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GDBTransientObject.st	Mon Sep 08 10:02:31 2014 +0100
@@ -0,0 +1,28 @@
+"{ Package: 'jv:libgdbs' }"
+
+GDBDebuggerObject subclass:#GDBTransientObject
+	instanceVariableNames:'stateSequenceNumber'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'GDB-Core'
+!
+
+!GDBTransientObject methodsFor:'private'!
+
+ensureIsValid
+    self isValid ifTrue:[
+        (GDBInvalidObject newException)
+            parameter:self;
+            messageText:'Invalid object (thread resumed)';
+            raise.
+    ].
+
+    "Created: / 07-09-2014 / 23:08:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBTransientObject methodsFor:'testing'!
+
+isValid
+    ^ debugger currentInferiorStateSequnceNumber ~~ stateSequenceNumber
+! !
+
--- a/Make.proto	Sun Sep 07 22:44:55 2014 +0100
+++ b/Make.proto	Mon Sep 08 10:02:31 2014 +0100
@@ -130,6 +130,7 @@
 $(OUTDIR)GDBCommand.$(O) GDBCommand.$(H): GDBCommand.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBCommandStatus.$(O) GDBCommandStatus.$(H): GDBCommandStatus.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)GDBDebugFlags.$(O) GDBDebugFlags.$(H): GDBDebugFlags.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
+$(OUTDIR)GDBError.$(O) GDBError.$(H): GDBError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBEvent.$(O) GDBEvent.$(H): GDBEvent.st $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBEventSet.$(O) GDBEventSet.$(H): GDBEventSet.st $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(STCHDR)
 $(OUTDIR)GDBInternalPipeStream.$(O) GDBInternalPipeStream.$(H): GDBInternalPipeStream.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(STCHDR)
@@ -137,6 +138,7 @@
 $(OUTDIR)GDBPTY.$(O) GDBPTY.$(H): GDBPTY.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBProcess.$(O) GDBProcess.$(H): GDBProcess.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBSessionRecord.$(O) GDBSessionRecord.$(H): GDBSessionRecord.st $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(STCHDR)
+$(OUTDIR)GDBThreadStatus.$(O) GDBThreadStatus.$(H): GDBThreadStatus.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBValueDescriptor.$(O) GDBValueDescriptor.$(H): GDBValueDescriptor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBValueDescriptorError.$(O) GDBValueDescriptorError.$(H): GDBValueDescriptorError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)jv_libgdbs.$(O) jv_libgdbs.$(H): jv_libgdbs.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(STCHDR)
@@ -151,12 +153,16 @@
 $(OUTDIR)GDBDebuggerObject.$(O) GDBDebuggerObject.$(H): GDBDebuggerObject.st $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBEnumValueDescriptor.$(O) GDBEnumValueDescriptor.$(H): GDBEnumValueDescriptor.st $(INCLUDE_TOP)/jv/libgdbs/GDBValueDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBInternalEvent.$(O) GDBInternalEvent.$(H): GDBInternalEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBInvalidObject.$(O) GDBInvalidObject.$(H): GDBInvalidObject.st $(INCLUDE_TOP)/jv/libgdbs/GDBError.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBMICommand.$(O) GDBMICommand.$(H): GDBMICommand.st $(INCLUDE_TOP)/jv/libgdbs/GDBCommand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBParser.$(O) GDBParser.$(H): GDBParser.st $(INCLUDE_TOP)/jv/libgdbs/GDBCommandStatus.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBPrimitiveValueDescriptor.$(O) GDBPrimitiveValueDescriptor.$(H): GDBPrimitiveValueDescriptor.st $(INCLUDE_TOP)/jv/libgdbs/GDBValueDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBSessionRecorder.$(O) GDBSessionRecorder.$(H): GDBSessionRecorder.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebugFlags.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBSimulatorProcess.$(O) GDBSimulatorProcess.$(H): GDBSimulatorProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBProcess.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBStreamOutputEvent.$(O) GDBStreamOutputEvent.$(H): GDBStreamOutputEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBThreadStatusRunning.$(O) GDBThreadStatusRunning.$(H): GDBThreadStatusRunning.st $(INCLUDE_TOP)/jv/libgdbs/GDBThreadStatus.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBThreadStatusStopped.$(O) GDBThreadStatusStopped.$(H): GDBThreadStatusStopped.st $(INCLUDE_TOP)/jv/libgdbs/GDBThreadStatus.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBThreadStatusTerminated.$(O) GDBThreadStatusTerminated.$(H): GDBThreadStatusTerminated.st $(INCLUDE_TOP)/jv/libgdbs/GDBThreadStatus.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBUnixProcess.$(O) GDBUnixProcess.$(H): GDBUnixProcess.st $(INCLUDE_TOP)/jv/libgdbs/GDBProcess.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBAddresValueDescriptor.$(O) GDBAddresValueDescriptor.$(H): GDBAddresValueDescriptor.st $(INCLUDE_TOP)/jv/libgdbs/GDBPrimitiveValueDescriptor.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBValueDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBBooleanValueDescriptor.$(O) GDBBooleanValueDescriptor.$(H): GDBBooleanValueDescriptor.st $(INCLUDE_TOP)/jv/libgdbs/GDBPrimitiveValueDescriptor.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBValueDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -278,11 +284,13 @@
 $(OUTDIR)GDBMI_var_update.$(O) GDBMI_var_update.$(H): GDBMI_var_update.st $(INCLUDE_TOP)/jv/libgdbs/GDBCommand.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBMICommand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBNotificationEvent.$(O) GDBNotificationEvent.$(H): GDBNotificationEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBObjectValueDescriptor.$(O) GDBObjectValueDescriptor.$(H): GDBObjectValueDescriptor.st $(INCLUDE_TOP)/jv/libgdbs/GDBCompoundValueDescriptor.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBValueDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBSelectedFrameChangedEvent.$(O) GDBSelectedFrameChangedEvent.$(H): GDBSelectedFrameChangedEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBInternalEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBStatusEvent.$(O) GDBStatusEvent.$(H): GDBStatusEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBStringValueDescriptor.$(O) GDBStringValueDescriptor.$(H): GDBStringValueDescriptor.st $(INCLUDE_TOP)/jv/libgdbs/GDBPrimitiveValueDescriptor.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBValueDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBTargetOutputEvent.$(O) GDBTargetOutputEvent.$(H): GDBTargetOutputEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBThread.$(O) GDBThread.$(H): GDBThread.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebuggerObject.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBThreadGroup.$(O) GDBThreadGroup.$(H): GDBThreadGroup.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebuggerObject.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBTransientObject.$(O) GDBTransientObject.$(H): GDBTransientObject.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebuggerObject.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBBreakpointDeletedEvent.$(O) GDBBreakpointDeletedEvent.$(H): GDBBreakpointDeletedEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBNotificationEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBBreakpointEvent.$(O) GDBBreakpointEvent.$(H): GDBBreakpointEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBNotificationEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)GDBLibraryLoadedEvent.$(O) GDBLibraryLoadedEvent.$(H): GDBLibraryLoadedEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBAsyncEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/jv/libgdbs/GDBNotificationEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Sun Sep 07 22:44:55 2014 +0100
+++ b/Make.spec	Mon Sep 08 10:02:31 2014 +0100
@@ -53,6 +53,7 @@
 	GDBCommand \
 	GDBCommandStatus \
 	GDBDebugFlags \
+	GDBError \
 	GDBEvent \
 	GDBEventSet \
 	GDBInternalPipeStream \
@@ -60,6 +61,7 @@
 	GDBPTY \
 	GDBProcess \
 	GDBSessionRecord \
+	GDBThreadStatus \
 	GDBValueDescriptor \
 	GDBValueDescriptorError \
 	jv_libgdbs \
@@ -74,12 +76,16 @@
 	GDBDebuggerObject \
 	GDBEnumValueDescriptor \
 	GDBInternalEvent \
+	GDBInvalidObject \
 	GDBMICommand \
 	GDBParser \
 	GDBPrimitiveValueDescriptor \
 	GDBSessionRecorder \
 	GDBSimulatorProcess \
 	GDBStreamOutputEvent \
+	GDBThreadStatusRunning \
+	GDBThreadStatusStopped \
+	GDBThreadStatusTerminated \
 	GDBUnixProcess \
 	GDBAddresValueDescriptor \
 	GDBBooleanValueDescriptor \
@@ -201,11 +207,13 @@
 	GDBMI_var_update \
 	GDBNotificationEvent \
 	GDBObjectValueDescriptor \
+	GDBSelectedFrameChangedEvent \
 	GDBStatusEvent \
 	GDBStringValueDescriptor \
 	GDBTargetOutputEvent \
 	GDBThread \
 	GDBThreadGroup \
+	GDBTransientObject \
 	GDBBreakpointDeletedEvent \
 	GDBBreakpointEvent \
 	GDBLibraryLoadedEvent \
@@ -229,6 +237,7 @@
     $(OUTDIR_SLASH)GDBCommand.$(O) \
     $(OUTDIR_SLASH)GDBCommandStatus.$(O) \
     $(OUTDIR_SLASH)GDBDebugFlags.$(O) \
+    $(OUTDIR_SLASH)GDBError.$(O) \
     $(OUTDIR_SLASH)GDBEvent.$(O) \
     $(OUTDIR_SLASH)GDBEventSet.$(O) \
     $(OUTDIR_SLASH)GDBInternalPipeStream.$(O) \
@@ -236,6 +245,7 @@
     $(OUTDIR_SLASH)GDBPTY.$(O) \
     $(OUTDIR_SLASH)GDBProcess.$(O) \
     $(OUTDIR_SLASH)GDBSessionRecord.$(O) \
+    $(OUTDIR_SLASH)GDBThreadStatus.$(O) \
     $(OUTDIR_SLASH)GDBValueDescriptor.$(O) \
     $(OUTDIR_SLASH)GDBValueDescriptorError.$(O) \
     $(OUTDIR_SLASH)jv_libgdbs.$(O) \
@@ -250,12 +260,16 @@
     $(OUTDIR_SLASH)GDBDebuggerObject.$(O) \
     $(OUTDIR_SLASH)GDBEnumValueDescriptor.$(O) \
     $(OUTDIR_SLASH)GDBInternalEvent.$(O) \
+    $(OUTDIR_SLASH)GDBInvalidObject.$(O) \
     $(OUTDIR_SLASH)GDBMICommand.$(O) \
     $(OUTDIR_SLASH)GDBParser.$(O) \
     $(OUTDIR_SLASH)GDBPrimitiveValueDescriptor.$(O) \
     $(OUTDIR_SLASH)GDBSessionRecorder.$(O) \
     $(OUTDIR_SLASH)GDBSimulatorProcess.$(O) \
     $(OUTDIR_SLASH)GDBStreamOutputEvent.$(O) \
+    $(OUTDIR_SLASH)GDBThreadStatusRunning.$(O) \
+    $(OUTDIR_SLASH)GDBThreadStatusStopped.$(O) \
+    $(OUTDIR_SLASH)GDBThreadStatusTerminated.$(O) \
     $(OUTDIR_SLASH)GDBUnixProcess.$(O) \
     $(OUTDIR_SLASH)GDBAddresValueDescriptor.$(O) \
     $(OUTDIR_SLASH)GDBBooleanValueDescriptor.$(O) \
@@ -377,11 +391,13 @@
     $(OUTDIR_SLASH)GDBMI_var_update.$(O) \
     $(OUTDIR_SLASH)GDBNotificationEvent.$(O) \
     $(OUTDIR_SLASH)GDBObjectValueDescriptor.$(O) \
+    $(OUTDIR_SLASH)GDBSelectedFrameChangedEvent.$(O) \
     $(OUTDIR_SLASH)GDBStatusEvent.$(O) \
     $(OUTDIR_SLASH)GDBStringValueDescriptor.$(O) \
     $(OUTDIR_SLASH)GDBTargetOutputEvent.$(O) \
     $(OUTDIR_SLASH)GDBThread.$(O) \
     $(OUTDIR_SLASH)GDBThreadGroup.$(O) \
+    $(OUTDIR_SLASH)GDBTransientObject.$(O) \
     $(OUTDIR_SLASH)GDBBreakpointDeletedEvent.$(O) \
     $(OUTDIR_SLASH)GDBBreakpointEvent.$(O) \
     $(OUTDIR_SLASH)GDBLibraryLoadedEvent.$(O) \
--- a/abbrev.stc	Sun Sep 07 22:44:55 2014 +0100
+++ b/abbrev.stc	Mon Sep 08 10:02:31 2014 +0100
@@ -4,6 +4,7 @@
 GDBCommand GDBCommand jv:libgdbs 'GDB-Core-Commands' 0
 GDBCommandStatus GDBCommandStatus jv:libgdbs 'GDB-Core-Commands' 0
 GDBDebugFlags GDBDebugFlags jv:libgdbs 'GDB-Private' 0
+GDBError GDBError jv:libgdbs 'GDB-Core-Exeptions' 1
 GDBEvent GDBEvent jv:libgdbs 'GDB-Core-Events' 0
 GDBEventSet GDBEventSet jv:libgdbs 'GDB-Core-Events' 0
 GDBInternalPipeStream GDBInternalPipeStream jv:libgdbs 'GDB-Support' 0
@@ -12,6 +13,7 @@
 GDBProcess GDBProcess jv:libgdbs 'GDB-Private' 0
 GDBSessionRecord GDBSessionRecord jv:libgdbs 'GDB-Private-Simulator' 0
 GDBSimulatorResource GDBSimulatorResource jv:libgdbs 'GDB-Resources' 1
+GDBThreadStatus GDBThreadStatus jv:libgdbs 'GDB-Core' 0
 GDBValueDescriptor GDBValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
 GDBValueDescriptorError GDBValueDescriptorError jv:libgdbs 'GDB-Private-Descriptors' 1
 jv_libgdbs jv_libgdbs jv:libgdbs '* Projects & Packages *' 3
@@ -26,12 +28,16 @@
 GDBDebuggerObject GDBDebuggerObject jv:libgdbs 'GDB-Core' 0
 GDBEnumValueDescriptor GDBEnumValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
 GDBInternalEvent GDBInternalEvent jv:libgdbs 'GDB-Core-Events' 0
+GDBInvalidObject GDBInvalidObject jv:libgdbs 'GDB-Core-Exeptions' 1
 GDBMICommand GDBMICommand jv:libgdbs 'GDB-Core-Commands' 0
 GDBParser GDBParser jv:libgdbs 'GDB-Private' 0
 GDBPrimitiveValueDescriptor GDBPrimitiveValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
 GDBSessionRecorder GDBSessionRecorder jv:libgdbs 'GDB-Private-Simulator' 0
 GDBSimulatorProcess GDBSimulatorProcess jv:libgdbs 'GDB-Private-Simulator' 0
 GDBStreamOutputEvent GDBStreamOutputEvent jv:libgdbs 'GDB-Core-Events' 0
+GDBThreadStatusRunning GDBThreadStatusRunning jv:libgdbs 'GDB-Core' 1
+GDBThreadStatusStopped GDBThreadStatusStopped jv:libgdbs 'GDB-Core' 0
+GDBThreadStatusTerminated GDBThreadStatusTerminated jv:libgdbs 'GDB-Core' 1
 GDBUnixProcess GDBUnixProcess jv:libgdbs 'GDB-Private' 0
 GDBAddresValueDescriptor GDBAddresValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
 GDBBooleanValueDescriptor GDBBooleanValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
@@ -153,11 +159,13 @@
 GDBMI_var_update GDBMI_var_update jv:libgdbs 'GDB-Core-Commands-MI' 0
 GDBNotificationEvent GDBNotificationEvent jv:libgdbs 'GDB-Core-Events' 0
 GDBObjectValueDescriptor GDBObjectValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
+GDBSelectedFrameChangedEvent GDBSelectedFrameChangedEvent jv:libgdbs 'GDB-Core-Events' 0
 GDBStatusEvent GDBStatusEvent jv:libgdbs 'GDB-Core-Events' 0
 GDBStringValueDescriptor GDBStringValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
 GDBTargetOutputEvent GDBTargetOutputEvent jv:libgdbs 'GDB-Core-Events' 0
 GDBThread GDBThread jv:libgdbs 'GDB-Core' 0
 GDBThreadGroup GDBThreadGroup jv:libgdbs 'GDB-Core' 0
+GDBTransientObject GDBTransientObject jv:libgdbs 'GDB-Core' 0
 GDBBreakpointDeletedEvent GDBBreakpointDeletedEvent jv:libgdbs 'GDB-Core-Events' 0
 GDBBreakpointEvent GDBBreakpointEvent jv:libgdbs 'GDB-Core-Events' 0
 GDBLibraryLoadedEvent GDBLibraryLoadedEvent jv:libgdbs 'GDB-Core-Events' 0
--- a/bc.mak	Sun Sep 07 22:44:55 2014 +0100
+++ b/bc.mak	Mon Sep 08 10:02:31 2014 +0100
@@ -76,6 +76,7 @@
 $(OUTDIR)GDBCommand.$(O) GDBCommand.$(H): GDBCommand.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBCommandStatus.$(O) GDBCommandStatus.$(H): GDBCommandStatus.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)GDBDebugFlags.$(O) GDBDebugFlags.$(H): GDBDebugFlags.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
+$(OUTDIR)GDBError.$(O) GDBError.$(H): GDBError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBEvent.$(O) GDBEvent.$(H): GDBEvent.st $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBEventSet.$(O) GDBEventSet.$(H): GDBEventSet.st $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(STCHDR)
 $(OUTDIR)GDBInternalPipeStream.$(O) GDBInternalPipeStream.$(H): GDBInternalPipeStream.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(STCHDR)
@@ -83,6 +84,7 @@
 $(OUTDIR)GDBPTY.$(O) GDBPTY.$(H): GDBPTY.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBProcess.$(O) GDBProcess.$(H): GDBProcess.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBSessionRecord.$(O) GDBSessionRecord.$(H): GDBSessionRecord.st $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(STCHDR)
+$(OUTDIR)GDBThreadStatus.$(O) GDBThreadStatus.$(H): GDBThreadStatus.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBValueDescriptor.$(O) GDBValueDescriptor.$(H): GDBValueDescriptor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBValueDescriptorError.$(O) GDBValueDescriptorError.$(H): GDBValueDescriptorError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)jv_libgdbs.$(O) jv_libgdbs.$(H): jv_libgdbs.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(STCHDR)
@@ -97,12 +99,16 @@
 $(OUTDIR)GDBDebuggerObject.$(O) GDBDebuggerObject.$(H): GDBDebuggerObject.st $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBEnumValueDescriptor.$(O) GDBEnumValueDescriptor.$(H): GDBEnumValueDescriptor.st $(INCLUDE_TOP)\jv\libgdbs\GDBValueDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBInternalEvent.$(O) GDBInternalEvent.$(H): GDBInternalEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBInvalidObject.$(O) GDBInvalidObject.$(H): GDBInvalidObject.st $(INCLUDE_TOP)\jv\libgdbs\GDBError.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBMICommand.$(O) GDBMICommand.$(H): GDBMICommand.st $(INCLUDE_TOP)\jv\libgdbs\GDBCommand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBParser.$(O) GDBParser.$(H): GDBParser.st $(INCLUDE_TOP)\jv\libgdbs\GDBCommandStatus.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBPrimitiveValueDescriptor.$(O) GDBPrimitiveValueDescriptor.$(H): GDBPrimitiveValueDescriptor.st $(INCLUDE_TOP)\jv\libgdbs\GDBValueDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBSessionRecorder.$(O) GDBSessionRecorder.$(H): GDBSessionRecorder.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebugFlags.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBSimulatorProcess.$(O) GDBSimulatorProcess.$(H): GDBSimulatorProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBProcess.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBStreamOutputEvent.$(O) GDBStreamOutputEvent.$(H): GDBStreamOutputEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBThreadStatusRunning.$(O) GDBThreadStatusRunning.$(H): GDBThreadStatusRunning.st $(INCLUDE_TOP)\jv\libgdbs\GDBThreadStatus.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBThreadStatusStopped.$(O) GDBThreadStatusStopped.$(H): GDBThreadStatusStopped.st $(INCLUDE_TOP)\jv\libgdbs\GDBThreadStatus.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBThreadStatusTerminated.$(O) GDBThreadStatusTerminated.$(H): GDBThreadStatusTerminated.st $(INCLUDE_TOP)\jv\libgdbs\GDBThreadStatus.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBUnixProcess.$(O) GDBUnixProcess.$(H): GDBUnixProcess.st $(INCLUDE_TOP)\jv\libgdbs\GDBProcess.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBAddresValueDescriptor.$(O) GDBAddresValueDescriptor.$(H): GDBAddresValueDescriptor.st $(INCLUDE_TOP)\jv\libgdbs\GDBPrimitiveValueDescriptor.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBValueDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBBooleanValueDescriptor.$(O) GDBBooleanValueDescriptor.$(H): GDBBooleanValueDescriptor.st $(INCLUDE_TOP)\jv\libgdbs\GDBPrimitiveValueDescriptor.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBValueDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -224,11 +230,13 @@
 $(OUTDIR)GDBMI_var_update.$(O) GDBMI_var_update.$(H): GDBMI_var_update.st $(INCLUDE_TOP)\jv\libgdbs\GDBCommand.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBMICommand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBNotificationEvent.$(O) GDBNotificationEvent.$(H): GDBNotificationEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBObjectValueDescriptor.$(O) GDBObjectValueDescriptor.$(H): GDBObjectValueDescriptor.st $(INCLUDE_TOP)\jv\libgdbs\GDBCompoundValueDescriptor.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBValueDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBSelectedFrameChangedEvent.$(O) GDBSelectedFrameChangedEvent.$(H): GDBSelectedFrameChangedEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBInternalEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBStatusEvent.$(O) GDBStatusEvent.$(H): GDBStatusEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBStringValueDescriptor.$(O) GDBStringValueDescriptor.$(H): GDBStringValueDescriptor.st $(INCLUDE_TOP)\jv\libgdbs\GDBPrimitiveValueDescriptor.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBValueDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBTargetOutputEvent.$(O) GDBTargetOutputEvent.$(H): GDBTargetOutputEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBStreamOutputEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBThread.$(O) GDBThread.$(H): GDBThread.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebuggerObject.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBThreadGroup.$(O) GDBThreadGroup.$(H): GDBThreadGroup.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebuggerObject.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBTransientObject.$(O) GDBTransientObject.$(H): GDBTransientObject.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebuggerObject.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBBreakpointDeletedEvent.$(O) GDBBreakpointDeletedEvent.$(H): GDBBreakpointDeletedEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBNotificationEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBBreakpointEvent.$(O) GDBBreakpointEvent.$(H): GDBBreakpointEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBNotificationEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)GDBLibraryLoadedEvent.$(O) GDBLibraryLoadedEvent.$(H): GDBLibraryLoadedEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBAsyncEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\jv\libgdbs\GDBNotificationEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/jv_libgdbs.st	Sun Sep 07 22:44:55 2014 +0100
+++ b/jv_libgdbs.st	Mon Sep 08 10:02:31 2014 +0100
@@ -42,7 +42,7 @@
      by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
-        #'stx:libbasic2'    "List - referenced by GDBDebugger>>onThreadGroupAdded:"
+        #'stx:libbasic2'    "List - referenced by GDBDebugger>>onThreadGroupAddedEvent:"
     )
 !
 
@@ -69,6 +69,7 @@
         GDBCommand
         GDBCommandStatus
         GDBDebugFlags
+        GDBError
         GDBEvent
         GDBEventSet
         GDBInternalPipeStream
@@ -77,6 +78,7 @@
         GDBProcess
         GDBSessionRecord
         (GDBSimulatorResource autoload)
+        GDBThreadStatus
         GDBValueDescriptor
         GDBValueDescriptorError
         #'jv_libgdbs'
@@ -91,12 +93,16 @@
         GDBDebuggerObject
         GDBEnumValueDescriptor
         GDBInternalEvent
+        GDBInvalidObject
         GDBMICommand
         GDBParser
         GDBPrimitiveValueDescriptor
         GDBSessionRecorder
         GDBSimulatorProcess
         GDBStreamOutputEvent
+        GDBThreadStatusRunning
+        GDBThreadStatusStopped
+        GDBThreadStatusTerminated
         GDBUnixProcess
         GDBAddresValueDescriptor
         GDBBooleanValueDescriptor
@@ -218,11 +224,13 @@
         #'GDBMI_var_update'
         GDBNotificationEvent
         GDBObjectValueDescriptor
+        GDBSelectedFrameChangedEvent
         GDBStatusEvent
         GDBStringValueDescriptor
         GDBTargetOutputEvent
         GDBThread
         GDBThreadGroup
+        GDBTransientObject
         GDBBreakpointDeletedEvent
         GDBBreakpointEvent
         GDBLibraryLoadedEvent
--- a/libInit.cc	Sun Sep 07 22:44:55 2014 +0100
+++ b/libInit.cc	Mon Sep 08 10:02:31 2014 +0100
@@ -30,6 +30,7 @@
 _GDBCommand_Init(pass,__pRT__,snd);
 _GDBCommandStatus_Init(pass,__pRT__,snd);
 _GDBDebugFlags_Init(pass,__pRT__,snd);
+_GDBError_Init(pass,__pRT__,snd);
 _GDBEvent_Init(pass,__pRT__,snd);
 _GDBEventSet_Init(pass,__pRT__,snd);
 _GDBInternalPipeStream_Init(pass,__pRT__,snd);
@@ -37,6 +38,7 @@
 _GDBPTY_Init(pass,__pRT__,snd);
 _GDBProcess_Init(pass,__pRT__,snd);
 _GDBSessionRecord_Init(pass,__pRT__,snd);
+_GDBThreadStatus_Init(pass,__pRT__,snd);
 _GDBValueDescriptor_Init(pass,__pRT__,snd);
 _GDBValueDescriptorError_Init(pass,__pRT__,snd);
 _jv_137libgdbs_Init(pass,__pRT__,snd);
@@ -51,12 +53,16 @@
 _GDBDebuggerObject_Init(pass,__pRT__,snd);
 _GDBEnumValueDescriptor_Init(pass,__pRT__,snd);
 _GDBInternalEvent_Init(pass,__pRT__,snd);
+_GDBInvalidObject_Init(pass,__pRT__,snd);
 _GDBMICommand_Init(pass,__pRT__,snd);
 _GDBParser_Init(pass,__pRT__,snd);
 _GDBPrimitiveValueDescriptor_Init(pass,__pRT__,snd);
 _GDBSessionRecorder_Init(pass,__pRT__,snd);
 _GDBSimulatorProcess_Init(pass,__pRT__,snd);
 _GDBStreamOutputEvent_Init(pass,__pRT__,snd);
+_GDBThreadStatusRunning_Init(pass,__pRT__,snd);
+_GDBThreadStatusStopped_Init(pass,__pRT__,snd);
+_GDBThreadStatusTerminated_Init(pass,__pRT__,snd);
 _GDBUnixProcess_Init(pass,__pRT__,snd);
 _GDBAddresValueDescriptor_Init(pass,__pRT__,snd);
 _GDBBooleanValueDescriptor_Init(pass,__pRT__,snd);
@@ -178,11 +184,13 @@
 _GDBMI_137var_137update_Init(pass,__pRT__,snd);
 _GDBNotificationEvent_Init(pass,__pRT__,snd);
 _GDBObjectValueDescriptor_Init(pass,__pRT__,snd);
+_GDBSelectedFrameChangedEvent_Init(pass,__pRT__,snd);
 _GDBStatusEvent_Init(pass,__pRT__,snd);
 _GDBStringValueDescriptor_Init(pass,__pRT__,snd);
 _GDBTargetOutputEvent_Init(pass,__pRT__,snd);
 _GDBThread_Init(pass,__pRT__,snd);
 _GDBThreadGroup_Init(pass,__pRT__,snd);
+_GDBTransientObject_Init(pass,__pRT__,snd);
 _GDBBreakpointDeletedEvent_Init(pass,__pRT__,snd);
 _GDBBreakpointEvent_Init(pass,__pRT__,snd);
 _GDBLibraryLoadedEvent_Init(pass,__pRT__,snd);
--- a/libgdbs.rc	Sun Sep 07 22:44:55 2014 +0100
+++ b/libgdbs.rc	Mon Sep 08 10:02:31 2014 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
       VALUE "ProductName", "LibraryName\0"
       VALUE "ProductVersion", "6.2.4.0\0"
-      VALUE "ProductDate", "Sun, 07 Sep 2014 21:43:46 GMT\0"
+      VALUE "ProductDate", "Mon, 08 Sep 2014 09:01:46 GMT\0"
     END
 
   END
--- a/tests/GDBDebuggerTests.st	Sun Sep 07 22:44:55 2014 +0100
+++ b/tests/GDBDebuggerTests.st	Mon Sep 08 10:02:31 2014 +0100
@@ -96,7 +96,9 @@
     self assert: debugger inferiors anElement == tgevent threadGroup.
     self assert: debugger inferiors anElement threads size == 1.
     self assert: debugger inferiors anElement threads anElement == tevent thread.
-    self assert: debugger inferiors anElement threads anElement terminated not.
+    self assert: debugger inferiors anElement threads anElement isTerminated not.
+    self assert: debugger inferiors anElement threads anElement isRunning not.
+    self assert: debugger inferiors anElement threads anElement isStopped.
 
     tgevent := tevent := nil.
 
@@ -110,10 +112,12 @@
     self assert: debugger inferiors anElement == tgevent threadGroup.
     self assert: debugger inferiors anElement threads size == 1.
     self assert: debugger inferiors anElement threads anElement == tevent thread.
-    self assert: debugger inferiors anElement threads anElement terminated.
+    self assert: debugger inferiors anElement threads anElement isTerminated .
+    self assert: debugger inferiors anElement threads anElement isRunning not.
+    self assert: debugger inferiors anElement threads anElement isStopped not.
 
     "Created: / 07-09-2014 / 13:37:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 07-09-2014 / 22:40:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-09-2014 / 23:25:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GDBDebuggerTests class methodsFor:'documentation'!
--- a/tests/tests.rc	Sun Sep 07 22:44:55 2014 +0100
+++ b/tests/tests.rc	Mon Sep 08 10:02:31 2014 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
       VALUE "ProductName", "LibraryName\0"
       VALUE "ProductVersion", "6.2.4.0\0"
-      VALUE "ProductDate", "Sun, 07 Sep 2014 21:43:47 GMT\0"
+      VALUE "ProductDate", "Mon, 08 Sep 2014 09:01:48 GMT\0"
     END
 
   END