Pending MethodBreakpoint
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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...
- Ngôn ngữ chính
- Ruby
- Star
- 1.3k
- Fork
- 146
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ruby/debug
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
-
Support exceptionOptions in setExceptionBreakpoints to catch arbitrary exception classes via DAP Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
-
バグ
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Version bump for OpenVox 9 Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
voxpupuli/puppet-epel#186 · 1 bình luận ·