One solution would be to use getSource rather than getSourceFromFile.
However, with following code I detected no problem in my pharo-core
copy (10281 updated to 10306)
| problems total |
problems := OrderedCollection new.
total := 0.
SystemNavigation default allBehaviorsDo: [:cl | total := total + 1].
'Searching UTF-8 Problems...'
displayProgressAt: Sensor cursorPoint
from: 0 to: total
during:
[:bar | | count |
count := 0.
SystemNavigation default allBehaviorsDo: [:cl |
bar value: (count := count + 1).
cl selectors do: [:sel |
[(cl compiledMethodAt: sel) getSourceFromFile]
ifError: [
var value: 'last problem found ' , cl
name , '>>#' , sel.
problems add: cl->sel]]]].
^problems
2009/5/17 Stéphane Ducasse <[email protected]>:
> yes same here.
>
> On May 17, 2009, at 2:10 AM, Tudor Girba wrote:
>
>> Hi,
>>
>> Recently I encounter a strange error:
>> - I sometimes get a debugger due to some problems in my code
>> - when I try to investigate the trace, I get another debugger saying
>> that "Invalid utf8 input detected'"
>>
>> This second debugger I can investigate, the previous not. It looks
>> like something got messed up with the text conversion of the sources.
>>
>> I am working on 10306 using the 4.1.1b2 VM on Mac. The code I am
>> working on is loaded from squeaksource (Moose, Glamour, Mondrian).
>>
>> Anyone can confirm this problem?
>>
>> Cheers,
>> Doru
>>
>>
>> ----ERROR REPORT----
>>
>> '17 May 2009 2:05:50 am
>>
>> VM: Mac OS - intel - 1056 - Squeak3.8.1 of ''28 Aug 2006'' [latest
>> update: #6747] Squeak VM 4.1.1b2
>> Image: Pharo0.1 [Latest update: #10306]
>>
>> SecurityManager state:
>> Restricted: false
>> FileAccess: true
>> SocketAccess: true
>> Working Dir /Users/girba/Work/Code/squeakingmoose
>> Trusted Dir /foobar/tooBar/forSqueak/bogus
>> Untrusted Dir /Users/girba/Library/Preferences/Squeak/Internet/My
>> Squeak
>>
>> UTF8TextConverter(Object)>>error:
>> Receiver: an UTF8TextConverter
>> Arguments and temporary variables:
>> aString: ''Invalid utf8 input detected''
>> Receiver''s instance variables:
>> an UTF8TextConverter
>>
>> UTF8TextConverter>>errorMalformedInput
>> Receiver: an UTF8TextConverter
>> Arguments and temporary variables:
>>
>> Receiver''s instance variables:
>> an UTF8TextConverter
>>
>> UTF8TextConverter>>nextFromStream:
>> Receiver: an UTF8TextConverter
>> Arguments and temporary variables:
>> aStream: MultiByteFileStream: ''/Users/girba/Work/Code/
>> squeakingmoose/moose.chan...etc...
>> character1: $
>> value1: 160
>> character2: Character tab
>> value2: 9
>> unicode: nil
>> character3: Character tab
>> value3: 9
>> character4: nil
>> value4: nil
>> Receiver''s instance variables:
>> an UTF8TextConverter
>>
>> MultiByteFileStream>>next
>> Receiver: MultiByteFileStream: ''/Users/girba/Work/Code/
>> squeakingmoose/moose.changes''
>> Arguments and temporary variables:
>> char: nil
>> secondChar: nil
>> state: nil
>> Receiver''s instance variables:
>>
>>
>> MultiByteFileStream(PositionableStream)>>nextChunk
>> Receiver: MultiByteFileStream: ''/Users/girba/Work/Code/
>> squeakingmoose/moose.changes''
>> Arguments and temporary variables:
>> terminator: $!
>> out: a WriteStream ''doesNotUnderstand: aMessage
>> "Handle the fact that there ...etc...
>> ch: Character cr
>> Receiver''s instance variables:
>>
>>
>> MultiByteFileStream(PositionableStream)>>nextChunkText
>> Receiver: MultiByteFileStream: ''/Users/girba/Work/Code/
>> squeakingmoose/moose.changes''
>> Arguments and temporary variables:
>> string: nil
>> runsRaw: nil
>> strm: nil
>> runs: nil
>> peek: nil
>> pos: nil
>> Receiver''s instance variables:
>>
>>
>> [] in RemoteString>>text
>> Receiver: a RemoteString
>> Arguments and temporary variables:
>> theFile: MultiByteFileStream: ''/Users/girba/Work/Code/
>> squeakingmoose/moose.chan...etc...
>> Receiver''s instance variables:
>> sourceFileNumber: 2
>> filePositionHi: 10007336
>>
>> BlockClosure>>ensure:
>> Receiver: [closure] in RemoteString>>text
>> Arguments and temporary variables:
>> aBlock: [closure] in RemoteString>>text
>> returnValue: nil
>> b: nil
>> Receiver''s instance variables:
>> outerContext: RemoteString>>text
>> startpc: 72
>> numArgs: 0
>>
>> RemoteString>>text
>> Receiver: a RemoteString
>> Arguments and temporary variables:
>> theFile: MultiByteFileStream: ''/Users/girba/Work/Code/
>> squeakingmoose/moose.chan...etc...
>> Receiver''s instance variables:
>> sourceFileNumber: 2
>> filePositionHi: 10007336
>>
>> CompiledMethod>>getSourceFromFile
>> Receiver: a CompiledMethod (838)
>> Arguments and temporary variables:
>> position: 10007336
>> Receiver''s instance variables:
>> a CompiledMethod (838)
>>
>> CompiledMethod>>methodNode
>> Receiver: a CompiledMethod (838)
>> Arguments and temporary variables:
>> aClass: Object
>> source: nil
>> Receiver''s instance variables:
>> a CompiledMethod (838)
>>
>> [] in DebuggerMethodMap class>>forMethod:
>> Receiver: DebuggerMethodMap
>> Arguments and temporary variables:
>> aMethod: a CompiledMethod (838)
>> Receiver''s instance variables:
>> superclass: Object
>> methodDict: a MethodDictionary(#abstractSourceMap->a
>> CompiledMethod
>> (1628) #for...etc...
>> format: 140
>> instanceVariables: #(''timestamp'' ''methodReference''
>> ''methodNode'' ''abstractSource...etc...
>> organization: (''initialize-release'' forMethod:methodNode:)
>> (''accessing'' markRec...etc...
>> subclasses: {DebuggerMethodMapForBlueBookMethods .
>> DebuggerMethodMapForClosureC...etc...
>> name: #DebuggerMethodMap
>> classPool: a Dictionary(#MapCache->a
>> WeakIdentityKeyDictionary(a
>> CompiledMethod...etc...
>> sharedPools: nil
>> environment: Smalltalk
>> category: #''Tools-Debugger''
>> traitComposition: nil
>> localSelectors: nil
>>
>> WeakIdentityKeyDictionary(Dictionary)>>at:ifAbsent:
>> Receiver: a WeakIdentityKeyDictionary(a CompiledMethod (126)->a
>> DebuggerMethodMapForClosureCompiledM...etc...
>> Arguments and temporary variables:
>> key: a CompiledMethod (838)
>> aBlock: [closure] in DebuggerMethodMap
>> class>>forMethod:
>> assoc: nil
>> Receiver''s instance variables:
>> tally: 16
>> array: an Array(nil nil a CompiledMethod (2402)->a
>> DebuggerMethodMapForClosureC...etc...
>>
>> DebuggerMethodMap class>>forMethod:
>> Receiver: DebuggerMethodMap
>> Arguments and temporary variables:
>> aMethod: a CompiledMethod (838)
>> Receiver''s instance variables:
>> superclass: Object
>> methodDict: a MethodDictionary(#abstractSourceMap->a
>> CompiledMethod
>> (1628) #for...etc...
>> format: 140
>> instanceVariables: #(''timestamp'' ''methodReference''
>> ''methodNode'' ''abstractSource...etc...
>> organization: (''initialize-release'' forMethod:methodNode:)
>> (''accessing'' markRec...etc...
>> subclasses: {DebuggerMethodMapForBlueBookMethods .
>> DebuggerMethodMapForClosureC...etc...
>> name: #DebuggerMethodMap
>> classPool: a Dictionary(#MapCache->a
>> WeakIdentityKeyDictionary(a
>> CompiledMethod...etc...
>> sharedPools: nil
>> environment: Smalltalk
>> category: #''Tools-Debugger''
>> traitComposition: nil
>> localSelectors: nil
>>
>> CompiledMethod>>debuggerMap
>> Receiver: a CompiledMethod (838)
>> Arguments and temporary variables:
>>
>> Receiver''s instance variables:
>> a CompiledMethod (838)
>>
>> OTClosureContextNode>>selection
>> Receiver: an OTClosureContextNode
>> Arguments and temporary variables:
>>
>> Receiver''s instance variables:
>> metaNode: context
>>
>> navigation: an OBDefaultEdgeNavigation
>> process: a Process in OTToolset
>> class>>debug:context:label:contents:fullView:
>> context: Model class(Object)>>doesNotUnderstand:
>> #fullName
>> parseTree: nil
>> sourceMap: nil
>> debuggerMap: nil
>>
>> OTClosureContextNode(OTContextNode)>>definition
>> Receiver: an OTClosureContextNode
>> Arguments and temporary variables:
>>
>> Receiver''s instance variables:
>> metaNode: context
>>
>> navigation: an OBDefaultEdgeNavigation
>> process: a Process in OTToolset
>> class>>debug:context:label:contents:fullView:
>> context: Model class(Object)>>doesNotUnderstand:
>> #fullName
>> parseTree: nil
>> sourceMap: nil
>> debuggerMap: nil
>>
>> OTDefinitionPanel(OBDefinitionPanel)>>node:
>> Receiver: an OTDefinitionPanel
>> Arguments and temporary variables:
>> aNode: an OTClosureContextNode
>> Receiver''s instance variables:
>> browser: an OTDebugger
>> definition: nil
>> selection: nil
>>
>> OTDefinitionPanel(OBDefinitionPanel)>>selectionChanged:
>> Receiver: an OTDefinitionPanel
>> Arguments and temporary variables:
>> ann: an OBSelectionChanged
>> Receiver''s instance variables:
>> browser: an OTDebugger
>> definition: nil
>> selection: nil
>>
>> MessageSend>>valueWithArguments:
>> Receiver: MessageSend(#selectionChanged: -> an OTDefinitionPanel)
>> Arguments and temporary variables:
>> anArray: an Array(an OBSelectionChanged)
>> Receiver''s instance variables:
>> receiver: an OTDefinitionPanel
>> selector: #selectionChanged:
>> arguments: #()
>>
>> [] in ActionSequence>>valueWithArguments:
>> Receiver: #(MessageSend(#relabel: -> an OTDebugger)
>> MessageSend(#selectionChanged: -> an OBColumnPan...etc...
>> Arguments and temporary variables:
>> anArray: MessageSend(#selectionChanged: -> an
>> OTDefinitionPanel)
>> answer: an Array(an OBSelectionChanged)
>> each: an Array(an OBFixedButtonPanel)
>> Receiver''s instance variables:
>> #(MessageSend(#relabel: -> an OTDebugger)
>> MessageSend(#selectionChanged: -> an OBColumnPan...etc...
>>
>> ActionSequence(SequenceableCollection)>>do:
>> Receiver: #(MessageSend(#relabel: -> an OTDebugger)
>> MessageSend(#selectionChanged: -> an OBColumnPan...etc...
>> Arguments and temporary variables:
>> aBlock: [closure] in
>> ActionSequence>>valueWithArguments:
>> index: 4
>> indexLimiT: 6
>> Receiver''s instance variables:
>> #(MessageSend(#relabel: -> an OTDebugger)
>> MessageSend(#selectionChanged: -> an OBColumnPan...etc...
>>
>> ActionSequence>>valueWithArguments:
>> Receiver: #(MessageSend(#relabel: -> an OTDebugger)
>> MessageSend(#selectionChanged: -> an OBColumnPan...etc...
>> Arguments and temporary variables:
>> anArray: an Array(an OBSelectionChanged)
>> answer: an Array(an OBFixedButtonPanel)
>> Receiver''s instance variables:
>> #(MessageSend(#relabel: -> an OTDebugger)
>> MessageSend(#selectionChanged: -> an OBColumnPan...etc...
>>
>> [] in OBAnnouncer>>announce:
>> Receiver: an OBAnnouncer
>> Arguments and temporary variables:
>> <<error during printing>
>> Receiver''s instance variables:
>> subscriptions: an IdentityDictionary(OBAboutToChange->an
>> ActionSequence(Message...etc...
>>
>> [] in IdentityDictionary(Dictionary)>>keysAndValuesDo:
>> Receiver: an IdentityDictionary(OBAboutToChange->an
>> ActionSequence(MessageSend(#aboutToChange: -> an...etc...
>> Arguments and temporary variables:
>> aBlock: OBSelectionChanged->#(MessageSend(#relabel: ->
>> an
>> OTDebugger)
>> MessageSe...etc...
>> assoc: [closure] in OBAnnouncer>>announce:
>> Receiver''s instance variables:
>> tally: 12
>> array: {OBNodeCreated->an
>> ActionSequence(MessageSend(#selectNode: -
>>> an OBColum...etc...
>>
>> IdentityDictionary(Set)>>do:
>> Receiver: an IdentityDictionary(OBAboutToChange->an
>> ActionSequence(MessageSend(#aboutToChange: -> an...etc...
>> Arguments and temporary variables:
>> aBlock: [closure] in
>> IdentityDictionary(Dictionary)>>keysAndValuesDo:
>> index: 6
>> each: OBSelectionChanged->#(MessageSend(#relabel: -> an
>> OTDebugger)
>> MessageSend...etc...
>> indexLimiT: 20
>> Receiver''s instance variables:
>> tally: 12
>> array: {OBNodeCreated->an
>> ActionSequence(MessageSend(#selectNode: -
>>> an OBColum...etc...
>>
>> IdentityDictionary(Dictionary)>>associationsDo:
>> Receiver: an IdentityDictionary(OBAboutToChange->an
>> ActionSequence(MessageSend(#aboutToChange: -> an...etc...
>> Arguments and temporary variables:
>> aBlock: [closure] in
>> IdentityDictionary(Dictionary)>>keysAndValuesDo:
>> Receiver''s instance variables:
>> tally: 12
>> array: {OBNodeCreated->an
>> ActionSequence(MessageSend(#selectNode: -
>>> an OBColum...etc...
>>
>> IdentityDictionary(Dictionary)>>keysAndValuesDo:
>> Receiver: an IdentityDictionary(OBAboutToChange->an
>> ActionSequence(MessageSend(#aboutToChange: -> an...etc...
>> Arguments and temporary variables:
>> aBlock: [closure] in OBAnnouncer>>announce:
>> Receiver''s instance variables:
>> tally: 12
>> array: {OBNodeCreated->an
>> ActionSequence(MessageSend(#selectNode: -
>>> an OBColum...etc...
>>
>> OBAnnouncer>>announce:
>> Receiver: an OBAnnouncer
>> Arguments and temporary variables:
>> anObject: an OBSelectionChanged
>> ann: an OBSelectionChanged
>> Receiver''s instance variables:
>> subscriptions: an IdentityDictionary(OBAboutToChange->an
>> ActionSequence(Message...etc...
>>
>> OBColumnPanel>>jumpTo:
>> Receiver: an OBColumnPanel
>> Arguments and temporary variables:
>> aNode: an OTClosureContextNode
>> column: an OBColumn(Model
>> class(Object)>>doesNotUnderstand:
>> #fullName)
>> Receiver''s instance variables:
>> browser: an OTDebugger
>> root: an OTProcessNode
>> current: an OTClosureContextNode
>> columns: an OrderedCollection(an OBColumn(Model
>> class(Object)>>doesNotUnderstan...etc...
>> minPanes: 1
>> maxPanes: 1
>>
>> OTDebugger(OBBrowser)>>jumpTo:
>> Receiver: an OTDebugger
>> Arguments and temporary variables:
>> aNode: an OTClosureContextNode
>> Receiver''s instance variables:
>> panels: an OrderedCollection(an OBColumnPanel an
>> OBFixedButtonPanel
>> an OTDefini...etc...
>> announcer: an OBAnnouncer
>> cmdFactories: an Array(OTCmdProceedDebugger OTCmdIntoDebugger
>> OTCmdThroughDebug...etc...
>>
>> OTDebugger class(OBBrowser class)>>metaNode:root:selection:panels:
>> Receiver: OTDebugger
>> Arguments and temporary variables:
>> metaNode: process
>> #longStack->context
>>
>> rootNode: an OTProcessNode
>> selectedNode: an OTClosureContextNode
>> panels: an Array(an OBColumnPanel an
>> OBFixedButtonPanel an
>> OTDefinitionPanel an...etc...
>> browser: an OTDebugger
>> Receiver''s instance variables:
>> superclass: OBBrowser
>> methodDict: a MethodDictionary(#cmdBrowse->a
>> CompiledMethod (3978)
>> #cmdDebug->a...etc...
>> format: 136
>> instanceVariables: nil
>> organization: (''commands'' cmdBrowse cmdDebug cmdInspector)
>> (''updating'' debugger...etc...
>> subclasses: nil
>> name: #OTDebugger
>> classPool: nil
>> sharedPools: nil
>> environment: Smalltalk
>> category: #''OB-Tools-Debugger''
>> traitComposition: nil
>> localSelectors: nil
>>
>> OTDebugger class(OBBrowser class)>>root:selection:
>> Receiver: OTDebugger
>> Arguments and temporary variables:
>> rootNode: an OTProcessNode
>> selectedNode: an OTClosureContextNode
>> Receiver''s instance variables:
>> superclass: OBBrowser
>> methodDict: a MethodDictionary(#cmdBrowse->a
>> CompiledMethod (3978)
>> #cmdDebug->a...etc...
>> format: 136
>> instanceVariables: nil
>> organization: (''commands'' cmdBrowse cmdDebug cmdInspector)
>> (''updating'' debugger...etc...
>> subclasses: nil
>> name: #OTDebugger
>> classPool: nil
>> sharedPools: nil
>> environment: Smalltalk
>> category: #''OB-Tools-Debugger''
>> traitComposition: nil
>> localSelectors: nil
>>
>> OTDebugger class>>process:context:errorWasInUIProcess:
>> Receiver: OTDebugger
>> Arguments and temporary variables:
>> aProcess: a Process in OTToolset
>> class>>debug:context:label:contents:fullView:
>> aContext: Model class(Object)>>doesNotUnderstand:
>> #fullName
>> aBool: true
>> processNode: an OTProcessNode
>> contextNode: an OTClosureContextNode
>> Receiver''s instance variables:
>> superclass: OBBrowser
>> methodDict: a MethodDictionary(#cmdBrowse->a
>> CompiledMethod (3978)
>> #cmdDebug->a...etc...
>> format: 136
>> instanceVariables: nil
>> organization: (''commands'' cmdBrowse cmdDebug cmdInspector)
>> (''updating'' debugger...etc...
>> subclasses: nil
>> name: #OTDebugger
>> classPool: nil
>> sharedPools: nil
>> environment: Smalltalk
>> category: #''OB-Tools-Debugger''
>> traitComposition: nil
>> localSelectors: nil
>>
>> OTDebugger class>>process:context:label:errorWasInUIProcess:
>> Receiver: OTDebugger
>> Arguments and temporary variables:
>> aProcess: a Process in OTToolset
>> class>>debug:context:label:contents:fullView:
>> aContext: Model class(Object)>>doesNotUnderstand:
>> #fullName
>> aString: ''MessageNotUnderstood: Model class>>fullName''
>> aBool: true
>> debugger: nil
>> Receiver''s instance variables:
>> superclass: OBBrowser
>> methodDict: a MethodDictionary(#cmdBrowse->a
>> CompiledMethod (3978)
>> #cmdDebug->a...etc...
>> format: 136
>> instanceVariables: nil
>> organization: (''commands'' cmdBrowse cmdDebug cmdInspector)
>> (''updating'' debugger...etc...
>> subclasses: nil
>> name: #OTDebugger
>> classPool: nil
>> sharedPools: nil
>> environment: Smalltalk
>> category: #''OB-Tools-Debugger''
>> traitComposition: nil
>> localSelectors: nil
>>
>> OTDebugger class>>openProcess:context:label:errorWasInUIProcess:
>> Receiver: OTDebugger
>> Arguments and temporary variables:
>> aProcess: a Process in OTToolset
>> class>>debug:context:label:contents:fullView:
>> aContext: Model class(Object)>>doesNotUnderstand:
>> #fullName
>> aString: ''MessageNotUnderstood: Model class>>fullName''
>> aBool: true
>> Receiver''s instance variables:
>> superclass: OBBrowser
>> methodDict: a MethodDictionary(#cmdBrowse->a
>> CompiledMethod (3978)
>> #cmdDebug->a...etc...
>> format: 136
>> instanceVariables: nil
>> organization: (''commands'' cmdBrowse cmdDebug cmdInspector)
>> (''updating'' debugger...etc...
>> subclasses: nil
>> name: #OTDebugger
>> classPool: nil
>> sharedPools: nil
>> environment: Smalltalk
>> category: #''OB-Tools-Debugger''
>> traitComposition: nil
>> localSelectors: nil
>>
>> [] in OTPreDebugNode>>debug:
>> Receiver: an OTPreDebugNode
>> Arguments and temporary variables:
>> aRequestor: an OTPreDebugPanel
>> proc: a Process in OTToolset
>> class>>debug:context:label:contents:fullView:
>> Receiver''s instance variables:
>> metaNode: Predebug
>>
>> navigation: nil
>> errorWasInUI: true
>> process: nil
>> context: Model class(Object)>>doesNotUnderstand:
>> #fullName
>> label: ''MessageNotUnderstood: Model class>>fullName''
>> contents: ''Model class(Object)>>doesNotUnderstand:
>> #fullName
>> UtilitiesTest>>tes...etc...
>> debugOnMouseClick: true
>>
>> WorldState>>runStepMethodsIn:
>> Receiver: a WorldState
>> Arguments and temporary variables:
>> aWorld: a PasteUpMorph(1622) [world]
>> queue: a SharedQueue
>> numItems: 1
>> i: 0
>> limit: 200
>> stamp: 12765762
>> Receiver''s instance variables:
>> hands: an Array(a HandMorph(3216))
>> viewBox: 0...@0 corner: 1...@807
>> canvas: a FormCanvas on: DisplayScreen(1440x807x32)
>> damageRecorder: a DamageRecorder
>> stepList: a Heap(StepMessage(#stepAt: -> a
>> SystemWindow(3380))(a
>> SystemWindow(3...etc...
>> lastStepTime: 12791780
>> lastStepMessage: nil
>> lastCycleTime: 12791800
>> commandHistory: a CommandHistory
>> alarms: a Heap()
>> lastAlarmTime: 12791780
>>
>> PasteUpMorph>>runStepMethods
>> Receiver: a PasteUpMorph(1622) [world]
>> Arguments and temporary variables:
>>
>> Receiver''s instance variables:
>> bounds: 0...@0 corner: 1...@807
>> owner: nil
>> submorphs: an Array(a TaskbarMorph(3095) a
>> SystemWindow(171) a
>> PluggableStandar...etc...
>> fullBounds: nil
>> color: (Color r: 0.972 g: 0.972 b: 0.976)
>> extension: a MorphExtension (2543) [eventHandler = an
>> EventHandler] [other: (...etc...
>> borderWidth: 0
>> borderColor: (Color r: 0.03 g: 0.02 b: 0.0)
>> presenter: a Presenter (1246)
>> model: a MorphicModel(1926)
>> cursor: 1
>> padding: 3
>> backgroundMorph: nil
>> isPartsBin: nil
>> autoLineLayout: false
>> indicateCursor: nil
>> resizeToFit: nil
>> wantsMouseOverHalos: nil
>> worldState: a WorldState
>> griddingOn: nil
>>
>>
>> --- The full stack ---
>> UTF8TextConverter(Object)>>error:
>> UTF8TextConverter>>errorMalformedInput
>> UTF8TextConverter>>nextFromStream:
>> MultiByteFileStream>>next
>> MultiByteFileStream(PositionableStream)>>nextChunk
>> MultiByteFileStream(PositionableStream)>>nextChunkText
>> [] in RemoteString>>text
>> BlockClosure>>ensure:
>> RemoteString>>text
>> CompiledMethod>>getSourceFromFile
>> CompiledMethod>>methodNode
>> [] in DebuggerMethodMap class>>forMethod:
>> WeakIdentityKeyDictionary(Dictionary)>>at:ifAbsent:
>> DebuggerMethodMap class>>forMethod:
>> CompiledMethod>>debuggerMap
>> OTClosureContextNode>>selection
>> OTClosureContextNode(OTContextNode)>>definition
>> OTDefinitionPanel(OBDefinitionPanel)>>node:
>> OTDefinitionPanel(OBDefinitionPanel)>>selectionChanged:
>> MessageSend>>valueWithArguments:
>> [] in ActionSequence>>valueWithArguments:
>> ActionSequence(SequenceableCollection)>>do:
>> ActionSequence>>valueWithArguments:
>> [] in OBAnnouncer>>announce:
>> [] in IdentityDictionary(Dictionary)>>keysAndValuesDo:
>> IdentityDictionary(Set)>>do:
>> IdentityDictionary(Dictionary)>>associationsDo:
>> IdentityDictionary(Dictionary)>>keysAndValuesDo:
>> OBAnnouncer>>announce:
>> OBColumnPanel>>jumpTo:
>> OTDebugger(OBBrowser)>>jumpTo:
>> OTDebugger class(OBBrowser class)>>metaNode:root:selection:panels:
>> OTDebugger class(OBBrowser class)>>root:selection:
>> OTDebugger class>>process:context:errorWasInUIProcess:
>> OTDebugger class>>process:context:label:errorWasInUIProcess:
>> OTDebugger class>>openProcess:context:label:errorWasInUIProcess:
>> [] in OTPreDebugNode>>debug:
>> WorldState>>runStepMethodsIn:
>> PasteUpMorph>>runStepMethods
>> - - - - - - - - - - - - - - -
>> - - - - - - - - - - - - - - - - - -
>> WorldState>>doOneCycleNowFor:
>> WorldState>>doOneCycleFor:
>> PasteUpMorph>>doOneCycle
>> [] in Project class>>spawnNewProcess
>> [] in BlockClosure>>newProcess
>> '
>>
>>
>>
>> --
>> www.tudorgirba.com
>>
>> "To lead is not to demand things, it is to make them happen."
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [email protected]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project