Support changing return value of a function in sys.monitoring
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
Feature or enhancement
Proposal:
gdb has a command return for users to immediately return from the function. It basically does two things:
- stop the execution of the function
- return an arbitrary value
In Python, 1. might not be that simple as we have all the references to the stack value (it should be doable, but may or may not worth it), but 2. should be pretty straightforward. We can allow the callback for PY_RETURN function to return something specific (like sys.monitoring.RETURN, retval) to replace the value we are about to return. It should only need to swap the value on the stack and the impact should be contained. Some of the instrumentation structure needs to be refactored a bit but I don't think it's too much work.
With this feature, we can "mock" the return value in the debugger. We can even expand our existing return command - we may not able to return immediately, but we can run until it returns and secretly swap the return value, so we can call this command from anywhere.
Does this sound like a reasonable feature or I'm missing something? @markshannon
Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
No response
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.
Direção de pesquisa
Comece rastreando o callback PY_RETURN de sys.monitoring e a estrutura de instrumentação discutida na proposta. Compare isso com o comando de retorno existente do debugger e, em seguida, determine como um valor fornecido por um callback poderia substituir o valor de retorno pendente. A tarefa estará concluída quando o comportamento estiver especificado, implementado e coberto por testes para alterar o valor de retorno de uma função.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- devtools
- Tipo de issue
- Funcionalidade
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 30/100