Debugger exceptions crash the debugger and disconnect from the client
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Start with the protocol-server request handling in lib/debug/server_dap.rb, especially the variable-rendering code at lines 877-921, and review commit f9f3a7fee7d37749e69de5b16689636621c4fdbd. Compare the DAP and CDP server paths and determine where an injected exception can be handled centrally. Done means protocol-server exceptions produce an error response with details while the debugger remains connected.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Your environment
ruby -v:ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin22]rdbg -v:rdbg 1.8.0 {:mode=>:start, :no_color=>nil}
Describe the bug
Developing the CDP/DAP servers can be quite tedious, because any mistakes can raise exceptions that aren't caught, crash the server, and disconnect your IDE. Each time it requires restarting your debugger session.
To Reproduce
Add a raise anywhere in the protocol servers, e.g. where variables are rendered.
Expected behavior
A error response to be sent to the client, which can display a message with error details.
Instead, the exception is raised, the debug adapter crashes, and the client disconnects.
Additional context
I played around with implementing this here, and got it working for the :scope and :variables requests.
It's pretty fiddly, it looks like each when branch needs to be wrapped in a separate begin/rescue block, which is quite tedious. I wonder if there's a more central place to rescue it.
It would also need to be implemented twice, because of all this logic is duplicated between the DAP and CDP servers.
- Linguagem predominante
- Ruby
- Estrelas
- 1.3k
- Forks
- 146
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ruby/debug
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
-
Support exceptionOptions in setExceptionBreakpoints to catch arbitrary exception classes via DAP Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
riscv/riscv-unified-db#2626 ·
-
Component: GLib
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
ds-drift
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
we-promise/sure#3693 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
simp/pupmod-simp-simp#395 ·