Challenges for a real debugger for Pharo :)
Hi guys when working on a new morphic kernel, we got stuck with a really difficult to find bug (we are still looking for it). If new generation debugger lovers want to try. Here it is - load the bloc version 6 from AlainPlantec/Bloc on smalltalkHub - execute the snippet (alain will post the snippet because it is on his machine) BlProtoMorph new openInWorld (there is another one) - move the mouse and the system gets blocked. After looking for it for a couple of hours here are some wishes list. - would be good to be able to set a haltOnce to **all** the methods of a **particular** object :) - would be good to have the equivalent of GlobalVaHoldingOneObject haltOnce ifTrue: [â¦.] - would be nice that we can say that the object once debugged does not receive any other messages (imagine an object in a fast rendering loops and that one message causes problems). Stef
On Tue, 25 Jun 2013, Stéphane Ducasse wrote:
Hi guys
when working on a new morphic kernel, we got stuck with a really difficult to find bug (we are still looking for it). If new generation debugger lovers want to try. Here it is
- load the bloc version 6 from AlainPlantec/Bloc on smalltalkHub
- execute the snippet (alain will post the snippet because it is on his machine)
BlProtoMorph new openInWorld
(there is another one)
- move the mouse and the system gets blocked.
Just type kill -USR1 <pid> and you'll be able to see where it got blocked. Alternatively you can run a high priority process in the image which takes snapshots of other processes (I'd choose the UI process and the finalization process, since the former gets blocked, and the latter uses a pretty much broken data structure in Pharo) every once in a while, and writes them do disk/whatever. Levente
After looking for it for a couple of hours here are some wishes list.
- would be good to be able to set a haltOnce to **all** the methods of a **particular** object :)
- would be good to have the equivalent of GlobalVaHoldingOneObject haltOnce ifTrue: [â¦.]
- would be nice that we can say that the object once debugged does not receive any other messages (imagine an object in a fast rendering loops and that one message causes problems).
Stef
On Jun 26, 2013, at 5:11 AM, Levente Uzonyi <leves@elte.hu> wrote:
On Tue, 25 Jun 2013, Stéphane Ducasse wrote:
Hi guys
when working on a new morphic kernel, we got stuck with a really difficult to find bug (we are still looking for it). If new generation debugger lovers want to try. Here it is
- load the bloc version 6 from AlainPlantec/Bloc on smalltalkHub
- execute the snippet (alain will post the snippet because it is on his machine)
BlProtoMorph new openInWorld
(there is another one)
- move the mouse and the system gets blocked.
We did a fork and killed the morph. But the debugger and system should help doing that naturally
Just type
kill -USR1 <pid>
and you'll be able to see where it got blocked.
Alternatively you can run a high priority process in the image which takes snapshots of other processes (I'd choose the UI process and the finalization process, since the former gets blocked, and the latter uses a pretty much broken data structure in Pharo) every once in a while, and writes them do disk/whatever.
Levente
After looking for it for a couple of hours here are some wishes list.
- would be good to be able to set a haltOnce to **all** the methods of a **particular** object :)
- would be good to have the equivalent of GlobalVaHoldingOneObject haltOnce ifTrue: [â¦.]
- would be nice that we can say that the object once debugged does not receive any other messages (imagine an object in a fast rendering loops and that one message causes problems).
Stef
participants (2)
-
Levente Uzonyi -
Stéphane Ducasse