Pending MethodBreakpoint
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
Piste de recherche
Reproduce the b o.s and b not_lvar.foo examples in target.rb using exe/rdbg, then read the breakpoint handling behind the break command. Done means the behavior clearly distinguishes current-context expressions from singleton-method expressions and defines when an invalid expression may remain pending.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
When we set a method breakpoint with break C.foo and If the C or C.foo is not defined, it will be a pending breakpoint and when C.foo is activated, it will be activated.
We can set breakpoint with any expression like:
[1, 7] in target.rb
1|
2| def (o = '').s
3| :s
4| end
5|
=> 6| p o.s
7| __END__
=>#0 <main> at target.rb:6
(rdbg:commands) b o.s
#0 BP - Method o.s at target.rb:2
(rdbg) c
[1, 7] in target.rb
1|
2| def (o = '').s
=> 3| :s
4| end
5|
6| p o.s
7| __END__
=>#0 .s at target.rb:3
#1 <main> at target.rb:6
Stop by #0 BP - Method o.s at target.rb:2
In this case, user can set a breakpoint with current context (lvar o).
The problem is, if we write an expression which does not valid, the breakpoint will be registered as a pending breakpoint.
(rdbg) b not_lvar.foo
undefined local variable or method `not_lvar' for "":String
#1 BP - Method (pending) not_lvar.foo
Maybe it will not be activated in future.
This is useful for singleton method:
[master]$ exe/rdbg target.rb -e 'b C.foo'
DEBUGGER: Session start (pid: 19219)
[1, 7] in target.rb
1|
=> 2| class C
3| def self.foo
4| end
5| end
6|
7| __END__
=>#0 <main> at target.rb:2
(rdbg:commands) b C.foo
uninitialized constant C
#0 BP - Method (pending) C.foo
(rdbg) c
DEBUGGER: BP - Method C.foo at target.rb:3 is activated.
At first, C is not defined so it will be a pending breakpoint. After that C.foo is defined and the breakpoint will be activated.
b expr.method has two usecases:
- (1) want to set breakpoint to the current context
- (2) want to set singleton class
For (1), it should not make a pending breakpoint.
For (2),, it should.
We can not recognize the purpose for (1) and (2) now.
Ideas:
- If the expression is like
Constant, allow to make pending.- It saves (2).
- Not complete for (1)
- Add option to recognize 1 and 2.
break --allow-pending C.foofor (2).- Too long...
- Langage dominant
- Ruby
- Étoiles
- 1.3k
- Forks
- 146
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de ruby/debug
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
-
Support exceptionOptions in setExceptionBreakpoints to catch arbitrary exception classes via DAP Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
-
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
Toutes les issues de ruby/debug
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
-
バグ
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
-
Version bump for OpenVox 9 Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
voxpupuli/puppet-epel#186 · 1 commentaire ·
-
external_created_at is no longer used for the message timestamp since the new message UI (v4.4.0) OuverteBug Frontend
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100