We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Describe the bug
The debugger which comes with Erlang LS uses the Erlang interpreter behind the scenes.
If the user removes a breakpoint via the UI, existing processes will still break at the removed breakpoint, creating confusion for the user.
To Reproduce
Given:
-module(fact). -compile(export_all). fact(0) -> 1; fact(N) when N > 0 -> N * fact(N-1).
And:
-module(test). -compile(export_all). test() -> {module, fact} = int:i(fact), int:break(fact, 8), spawn(fun() -> fact:fact(5) end), timer:sleep(100), [{Pid, _, _, _}] = int:snapshot(), int:no_break(fact), %% int:no_break(), int:continue(Pid), timer:sleep(100), is_process_alive(Pid).
Using the following commands:
➜ /tmp erl Erlang/OTP 25 [erts-13.2] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns] Eshell V13.2 (abort with ^G) 1> c(fact, [debug_info]). {ok,fact} 2> c(test). {ok,test} 3> test:test().
This produces:
true
By replacing the int_no_break(fact) with the commented line, instead:
int_no_break(fact)
false
Expected behavior Once a breakpoint is removed and the continue command is issued, existing processes should not break.
continue
Affected versions OTP 25 (at least).
Additional context This seems related to the way breakpoints are stored and updated in the process dictionary in idbg_eval.
idbg_eval
The text was updated successfully, but these errors were encountered:
int:no_break(Mod)
This bug seems to have existed for a very long time. I have fixed it for OTP 24 and forward in the linked pull request.
Sorry, something went wrong.
Merge pull request #7395 from bjorng/bjorn/debugger/fix-breakpoints/G…
1966035
…H-7336/OTP-18644 debugger: Fix broken `int:no_break(Mod)`
883adc9
Merge branch 'bjorn/debugger/fix-breakpoints/GH-7336/OTP-18644' into …
f39ff8e
…maint-25 * bjorn/debugger/fix-breakpoints/GH-7336/OTP-18644: debugger: Fix broken `int:no_break(Mod)`
302baa6
…maint-24 * bjorn/debugger/fix-breakpoints/GH-7336/OTP-18644: debugger: Fix broken `int:no_break(Mod)`
bjorng
Successfully merging a pull request may close this issue.
Describe the bug
The debugger which comes with Erlang LS uses the Erlang interpreter behind the scenes.
If the user removes a breakpoint via the UI, existing processes will still break at the removed breakpoint, creating confusion for the user.
To Reproduce
Given:
And:
Using the following commands:
This produces:
By replacing the
int_no_break(fact)
with the commented line, instead:Expected behavior
Once a breakpoint is removed and the
continue
command is issued, existing processes should not break.Affected versions
OTP 25 (at least).
Additional context
This seems related to the way breakpoints are stored and updated in the process dictionary in
idbg_eval
.The text was updated successfully, but these errors were encountered: