You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using the Trace Debugger some methods (mostly unary methods and methods chained to them) do not show up.
For example if you execute [Parser new parse: #parseSelector class: Parser] traceAndDebug.
at some point you get:
sourceStream does not show up although expected (maybe a problem is that sourceStream is an immediate return?).
If one method is ignored chained methods will get ignored too. Expected would be that they are shown in the trace.
For the same example as above (but for a slightly different location in the method):
I hope I did not overlook anything
The text was updated successfully, but these errors were encountered:
Indeed, sourceStream is not displayed in the trace because it is a quick return method. In its current design, the trace only records methods that are actually reached by the debugger (in a normal debugger, you would not see this method either) - technically, quick return methods are implemented as a primitive and are not actually activated with a context frame. But there is already #43 for enhancing the trace with stub entries for methods of this kind.
If one method is ignored chained methods will get ignored too. Expected would be that they are shown in the trace. For the same example as above (but for a slightly different location in the method):
Are you referring to #and: here? I don't think is related to message chains - but this is another peculiarity/optimization detail of the Squeak bytecode model: Certain messages such as #ifNil: or #and: are not actually compiled to message sends but to special bytecodes:
So again, there is no method activation that could be traced - in the normal debugger, you cannot step into #and: as well. Theoretically, one could try to de-optimize the bytecode during tracing, but since this also would impact the performance, I'm not sure about this trade-off so far ... What is your opinion on this? :-)
LinqLover
changed the title
Some methods do not show up
Some methods do not show up in context trace
Jun 14, 2022
LinqLover
changed the title
Some methods do not show up in context trace
Primitive and inlined methods do not show up in context trace
Jul 12, 2022
When using the Trace Debugger some methods (mostly unary methods and methods chained to them) do not show up.
For example if you execute
[Parser new parse: #parseSelector class: Parser] traceAndDebug.
at some point you get:
sourceStream
does not show up although expected (maybe a problem is thatsourceStream
is an immediate return?).If one method is ignored chained methods will get ignored too. Expected would be that they are shown in the trace.
For the same example as above (but for a slightly different location in the method):
I hope I did not overlook anything
The text was updated successfully, but these errors were encountered: