--- a/GDBThread.st Sun Mar 08 12:40:03 2015 +0000
+++ b/GDBThread.st Sun Mar 08 15:48:16 2015 +0000
@@ -1,9 +1,11 @@
+"{ Encoding: utf8 }"
+
"{ Package: 'jv:libgdbs' }"
"{ NameSpace: Smalltalk }"
GDBDebuggerObject subclass:#GDBThread
- instanceVariableNames:'id group status stack'
+ instanceVariableNames:'id group info stack'
classVariableNames:''
poolDictionaries:''
category:'GDB-Core'
@@ -66,7 +68,28 @@
!
status
- ^ status
+ ^ self info state
+
+ "Modified: / 08-03-2015 / 09:10:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!GDBThread methodsFor:'accessing-private'!
+
+info
+ info isNil ifTrue:[
+ info := GDBTransientDataHolder debugger: debugger factory:[
+ | result infos |
+
+ result := debugger send: (GDBMI_thread_info new arguments: { id }).
+ infos := result propertyAt: #threads.
+ self assert: (infos isEmptyOrNil or:[ infos size == 1 and:[ infos first id = id ] ]).
+ infos isEmptyOrNil ifTrue:[ GDBThreadInfo new setId: id state: GDBThreadStateTerminated theOneAndOnlyInstance ] ifFalse:[ infos first ]
+ ].
+ ].
+ ^ info value
+
+ "Created: / 08-03-2015 / 09:07:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-03-2015 / 12:35:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBThread methodsFor:'initialization'!
@@ -81,28 +104,15 @@
setId: tid
self assert: id isNil.
id := tid.
- status := GDBThreadStateRunning theOneAndOnlyInstance
"Created: / 07-09-2014 / 21:31:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 27-02-2015 / 09:36:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-setStatus: aGDBThreadState
- status := aGDBThreadState.
- status isStopped ifFalse:[
- stack := nil.
- ].
-
- "Created: / 07-09-2014 / 23:25:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 09-09-2014 / 00:04:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 27-02-2015 / 09:36:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-03-2015 / 09:08:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
setTerminated
- status := GDBThreadStateTerminated theOneAndOnlyInstance
"Created: / 07-09-2014 / 21:37:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 27-02-2015 / 09:36:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-03-2015 / 09:08:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBThread methodsFor:'printing & storing'!
@@ -115,10 +125,10 @@
"/ aStream nextPutAll:'in group '.
"/ group id printOn:aStream.
aStream nextPutAll:' ['.
- status printOn:aStream.
+ self status printOn:aStream.
aStream nextPutAll:']'.
- "Modified: / 22-09-2014 / 00:59:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-03-2015 / 09:07:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBThread methodsFor:'private'!
@@ -138,26 +148,30 @@
!GDBThread methodsFor:'testing'!
isDead
- ^ status isTerminated
+ ^ self status isTerminated
"Created: / 22-09-2014 / 00:54:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-03-2015 / 12:35:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
isRunning
- ^ status isRunning
+ ^ self status isRunning
"Created: / 07-09-2014 / 23:23:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-03-2015 / 09:08:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
isStopped
- ^ status isStopped
+ ^ self status isStopped
"Created: / 07-09-2014 / 23:23:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-03-2015 / 09:08:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
isTerminated
- ^ status isTerminated
+ ^ self status isTerminated
"Created: / 07-09-2014 / 23:23:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-03-2015 / 09:08:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !