toivoh / Debug.jl

Prototype interactive debugger for Julia
Other
86 stars 13 forks source link

In the debugger, if blocks DO introduce new scope. #67

Open mikewojnowicz opened 9 years ago

mikewojnowicz commented 9 years ago

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()

toivoh commented 9 years ago

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.