Enhanced ContextPartOn printReportOn: from John McIntosh

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Enhanced ContextPartOn printReportOn: from John McIntosh

Stéphane Ducasse
>
> I've attached a ContextPart>>errorReportOn:  we use to print more  
> information, the current one dates from the last decade of the last  
> century and really
> provides too little data on the instance variables and stack size.  
> For example if we could see all of files: we chould see if the  
> pier.changes file is  there.
>>>>
>>>>
>
>
> ContextPart>>errorReportOn: strm
> "Write a detailed error report on the stack (above me) on a  
> stream.  For both the error file, and emailing a bug report.  
> Suppress any errors while getting printStrings.  Limit the length."
>
> | cnt aContext startPos |
> strm print: Date today; space; print: Time now; cr.
> strm cr.
> strm nextPutAll: 'VM: ';
> nextPutAll:  SmalltalkImage current platformName asString;
> nextPutAll: ' - ';
> nextPutAll: SmalltalkImage current platformSubtype asString;
> nextPutAll: ' - ';
> nextPutAll: SmalltalkImage current osVersion asString;
> nextPutAll: ' - ';
> nextPutAll: SmalltalkImage current vmVersion asString;
> cr.
> strm nextPutAll: 'Image: ';
> nextPutAll:  SystemVersion current version asString;
> nextPutAll: ' [';
> nextPutAll: SmalltalkImage current lastUpdateString asString;
> nextPutAll: ']';
> cr.
> strm cr.
> SecurityManager default printStateOn: strm.
>
> "Note: The following is an open-coded version of  
> ContextPart>>stackOfSize: since this method may be called during a  
> low space condition and we might run out of space for allocating the  
> full stack."
> cnt := 0.  startPos := strm position.
> aContext := self.
> [aContext notNil and: [(cnt := cnt + 1) < 40]] whileTrue:
> [aContext printDetails: strm. "variable values"
> strm cr.
> aContext := aContext sender].
>
> strm cr; nextPutAll: '--- The full stack ---'; cr.
> aContext := self.
> cnt := 0.
> [aContext == nil] whileFalse:
> [cnt := cnt + 1.
> cnt = 40 ifTrue: [strm nextPutAll: ' - - - - - - - - - - - - - - -  
> - - - - - - - - - - - - - - - - - -'; cr].
> strm print: aContext; cr.  "just class>>selector"
>
> strm position > (startPos+150000) ifTrue: [strm nextPutAll:  
> '...etc...'.
> ^ self]. "exit early"
> cnt > 200 ifTrue: [strm nextPutAll: '-- and more not shown --'.  ^  
> self].
> aContext := aContext sender].
>
>
>
> _______________________________________________
> Magritte, Pier and Related Tools ...
> https://www.iam.unibe.ch/mailman/listinfo/smallwiki


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Enhanced ContextPartOn printReportOn: from John McIntosh

Stéphane Ducasse
http://code.google.com/p/pharo/issues/detail?id=783

Stef

On Apr 30, 2009, at 10:05 AM, Stéphane Ducasse wrote:

>>
>> I've attached a ContextPart>>errorReportOn:  we use to print more
>> information, the current one dates from the last decade of the last
>> century and really
>> provides too little data on the instance variables and stack size.
>> For example if we could see all of files: we chould see if the
>> pier.changes file is  there.
>>>>>
>>>>>
>>
>>
>> ContextPart>>errorReportOn: strm
>> "Write a detailed error report on the stack (above me) on a
>> stream.  For both the error file, and emailing a bug report.
>> Suppress any errors while getting printStrings.  Limit the length."
>>
>> | cnt aContext startPos |
>> strm print: Date today; space; print: Time now; cr.
>> strm cr.
>> strm nextPutAll: 'VM: ';
>> nextPutAll:  SmalltalkImage current platformName asString;
>> nextPutAll: ' - ';
>> nextPutAll: SmalltalkImage current platformSubtype asString;
>> nextPutAll: ' - ';
>> nextPutAll: SmalltalkImage current osVersion asString;
>> nextPutAll: ' - ';
>> nextPutAll: SmalltalkImage current vmVersion asString;
>> cr.
>> strm nextPutAll: 'Image: ';
>> nextPutAll:  SystemVersion current version asString;
>> nextPutAll: ' [';
>> nextPutAll: SmalltalkImage current lastUpdateString asString;
>> nextPutAll: ']';
>> cr.
>> strm cr.
>> SecurityManager default printStateOn: strm.
>>
>> "Note: The following is an open-coded version of
>> ContextPart>>stackOfSize: since this method may be called during a
>> low space condition and we might run out of space for allocating the
>> full stack."
>> cnt := 0.  startPos := strm position.
>> aContext := self.
>> [aContext notNil and: [(cnt := cnt + 1) < 40]] whileTrue:
>> [aContext printDetails: strm. "variable values"
>> strm cr.
>> aContext := aContext sender].
>>
>> strm cr; nextPutAll: '--- The full stack ---'; cr.
>> aContext := self.
>> cnt := 0.
>> [aContext == nil] whileFalse:
>> [cnt := cnt + 1.
>> cnt = 40 ifTrue: [strm nextPutAll: ' - - - - - - - - - - - - - - -
>> - - - - - - - - - - - - - - - - - -'; cr].
>> strm print: aContext; cr.  "just class>>selector"
>>
>> strm position > (startPos+150000) ifTrue: [strm nextPutAll:
>> '...etc...'.
>> ^ self]. "exit early"
>> cnt > 200 ifTrue: [strm nextPutAll: '-- and more not shown --'.  ^
>> self].
>> aContext := aContext sender].
>>
>>
>>
>> _______________________________________________
>> Magritte, Pier and Related Tools ...
>> https://www.iam.unibe.ch/mailman/listinfo/smallwiki
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project