Debugging Pharo:如何在调试器中查看newProcess的发件人?
我面临这样的调试情况。我能看到的最古老的方法是BlockClosure-newProcess 但是我需要看看谁发起了这个新进程。当我单击调试器方法列表中的方法时,堆栈不会像通常显示调用者那样展开Debugging Pharo:如何在调试器中查看newProcess的发件人?,debugging,fork,smalltalk,pharo,Debugging,Fork,Smalltalk,Pharo,我面临这样的调试情况。我能看到的最古老的方法是BlockClosure-newProcess 但是我需要看看谁发起了这个新进程。当我单击调试器方法列表中的方法时,堆栈不会像通常显示调用者那样展开 这在Pharo中是可能的吗?简短的回答:不可能。一个新的过程在构思之前没有任何历史 稍微长一点的回答:如果您愿意做一点工作,您可以通过使用正常的闭包创建将调用方进程的引用嵌入到新进程中。下面是一个例子: | currentStack forkedProcess | currentStack := thi
这在Pharo中是可能的吗?简短的回答:不可能。一个新的过程在构思之前没有任何历史 稍微长一点的回答:如果您愿意做一点工作,您可以通过使用正常的闭包创建将调用方进程的引用嵌入到新进程中。下面是一个例子:
| currentStack forkedProcess |
currentStack := thisContext copyStack.
forkedProcess := [
| referenceToCaller |
referenceToCaller := currentStack.
self performOperations ] fork.
请注意,此不会增强调试体验,因为调试器不知道您有该引用。为此,您需要扩展当前流程的堆栈(上述流程的变体):
像这样操作上下文链时要非常小心。您可能会遇到难以理解和调试的情况。我在这里展示的内容只是为了说明,如果您不知道系统是如何工作的,就不应该使用。还有一个额外的提醒:在您的图像副本上试试这个
forkedProcess := [
thisContext bottomContext privSender: currentStack.
self performOperations ] fork.