[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [Dltk-dev] Re: Re:How soon will the bug 201550 be fixed
|
i can reproduce the problem that you are seeing with the debugger crashing, but if put a breakpoint in the 'catch' block of the communicate method, but i am unable to get it to fire.
my current test case causes an 'after 10000' to be executed. w/o the 'synchronized' keyword, if i press the debugger to fast, i get an error message stating that i tried to step into something while i was in a running state. i've also attempted to kill the script using the 'stop' button, and the engine still waits for the external evaluation to finish before the engine process exits.
i tried adding the 'synchronized' keyword to the communicate method, and this time the step buttons stay greyed out till the execution completes. i can stop the thread using the stop button as well, but the process doesn't really exit until the evaluation completes, so at this point, i'm unsure of how the InteruptedException being blocked is playing into all of this since this behavior mimics what i see if the method does not have the 'synchronized' keyword.
on a side note, since you really do need the debugger engine to wait for your script to finish, wouldn't a synchronous evaluation work for you?
On 9/9/07,
wang dada <runtoac@xxxxxxxxx> wrote:
Hello Jae,
Every time you click step over button, the view will send a tcl snippet to debug engine to evaluate, and get the return value to refresh the view.
In my project, the evaluation and the refresh will take some time, so if you click the step over button so fast that the previous evalution and refresh has not finished yet, errors occured.
I think you should send a tcl snippet which will not finish right away (say 10000 times circulation) to debug engine to evalute in order to see the error.
These two methods are in the DbgpPacketReceiver,
public synchronized void put(Object key, Object value) {
map.put(key, value);
notifyAll();
}
public synchronized Object get(Object key) throws InterruptedException {
while (!map.containsKey(key)) {
wait();
}
return map.remove(key);
}
You can see in the get method, it will wait the response until it is put into the map. If the stp over button is pressed too fast, InterruptedException will be thrown. I guess this is the reason. If there is any unclear, please let me know. Thanks.
Best regards,
Joy
Boardwalk for $500? In 2007? Ha!
Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games.
_______________________________________________
dltk-dev mailing list
dltk-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/dltk-dev
--
-jae