@@ -199,6 +199,16 @@ function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
199199 function continueProgram() {
200200 if (debugModule.getPaused())
201201 {
202+ if(eventCounter === 0) {
203+ restartProgram();
204+ return;
205+ }
206+ resetProgram();
207+ var index = eventCounter;
208+ eventCounter = 0;
209+ debugModule.tracePath.clearTraces();
210+ debugModule.tracePath.startRecording();
211+ stepTo(index);
202212 debugModule.setPausedAt(false, eventCounter);
203213 }
204214 }
@@ -216,11 +226,8 @@ function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
216226 if (index < eventCounter) {
217227 resetProgram();
218228 eventCounter = 0;
219− debugModule.tracePath.clearTraces();
220229 }
221230
222− debugModule.tracePath.startRecording();
223−
224231 assert(index >= eventCounter, "index must be bad");
225232 while (eventCounter < index) {
226233 var nextEvent = debugModule.getRecordedEventAt(eventCounter);
@@ -229,7 +236,6 @@ function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
229236 eventCounter += 1;
230237 }
231238 assert(eventCounter == index, "while loop didn't work");
232− debugModule.tracePath.stopRecording();
233239 }
234240
235241 function getMaxSteps() {