Debug.jl icon indicating copy to clipboard operation
Debug.jl copied to clipboard

In the debugger, if blocks DO introduce new scope.

Open mikewojnowicz opened this issue 10 years ago • 1 comments

According to the Julia performance manual, if blocks and begin blocks do not introduce new scope. However, the Debug package alters this fact.

When running testfunction() outside the debugger, the object "value" exists for both iterations of k=1:2. However, when running testfunction() inside the debugger, the object "value" only exists for the first iteration. Then, on the second iteration, we get: ERROR: value not defined.

I realize the fix is quite simple, but for whatever it's worth, I found this aspect of the debugger to be quite confusing to me as a new Julian (coming from R and MATLAB).

using Debug

@debug function testfunction() for k=1:2 if k==1 value=k end println(value) end end

testfunction()

mikewojnowicz avatar Feb 04 '15 20:02 mikewojnowicz

I started to look into this, but it's a pretty perplexing error. @debug emits an instrumented version of code it gets, and the semantics should really be the same as for the original code. I hope I can get some more time to look into it. For now, things seem to work fine if you introduce the value variable just before the for loop.

toivoh avatar Mar 08 '15 18:03 toivoh