Skip to content

Instantly share code, notes, and snippets.

@tenderlove
Created March 7, 2016 18:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tenderlove/3b7c5fe143c95060f737 to your computer and use it in GitHub Desktop.
Save tenderlove/3b7c5fe143c95060f737 to your computer and use it in GitHub Desktop.
[aaron@TC Bath (master)]$ rspec rspec_test.rb
{:global_method_state=>142, :global_constant_state=>1332, :class_serial=>14849}
.{:global_method_state=>142, :global_constant_state=>1332, :class_serial=>14850}
.{:global_method_state=>142, :global_constant_state=>1332, :class_serial=>14851}
.
Finished in 0.00076 seconds (files took 0.13633 seconds to load)
3 examples, 0 failures
[aaron@TC Bath (master)]$ lldb `rbenv which ruby` -- -S `rbenv which rspec` rspec_test.rb
(lldb) target create "/Users/aaron/.rbenv/versions/ruby-trunk/bin/ruby"
Current executable set to '/Users/aaron/.rbenv/versions/ruby-trunk/bin/ruby' (x86_64).
(lldb) settings set -- target.run-args "-S" "/Users/aaron/.rbenv/versions/ruby-trunk/bin/rspec" "rspec_test.rb"
(lldb) break vm_search_method
invalid command 'breakpoint vm_search_method'.
(lldb) b vm_search_method
Breakpoint 1: where = ruby`vm_search_method + 16 at vm_insnhelper.c:1120, address = 0x00000001001282b0
(lldb) run
Process 44321 launched: '/Users/aaron/.rbenv/versions/ruby-trunk/bin/ruby' (x86_64)
Process 44321 stopped
* thread #1: tid = 0x12581b2, 0x00000001001282b0 ruby`vm_search_method(ci=0x0000000101910550, cc=0x0000000101911320, recv=4303841240) + 16 at vm_insnhelper.c:1120, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x00000001001282b0 ruby`vm_search_method(ci=0x0000000101910550, cc=0x0000000101911320, recv=4303841240) + 16 at vm_insnhelper.c:1120
1117 static void
1118 vm_search_method(const struct rb_call_info *ci, struct rb_call_cache *cc, VALUE recv)
1119 {
-> 1120 VALUE klass = CLASS_OF(recv);
1121
1122 #if OPT_INLINE_METHOD_CACHE
1123 if (LIKELY(GET_GLOBAL_METHOD_STATE() == cc->method_state && RCLASS_SERIAL(klass) == cc->class_serial)) {
(lldb) wa s v ruby_vm_class_serial
Watchpoint created: Watchpoint 1: addr = 0x1001ca6d8 size = 8 state = enabled type = w
declare @ '/Users/aaron/git/ruby/vm.c:198'
watchpoint spec = 'ruby_vm_class_serial'
new value: 4903
(lldb) watchpoint modify -c'(ruby_vm_class_serial >= 14849)'
(lldb) b delete
Breakpoint 2: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
(lldb) breakpoint delete
About to delete all breakpoints, do you want to do that?: [Y/n]
All breakpoints removed. (2 breakpoints)
(lldb) c
Process 44321 resuming
Watchpoint 1 hit:
old value: 4903
new value: 14849
Process 44321 stopped
* thread #1: tid = 0x12581b2, 0x0000000100124685 ruby`rb_next_class_serial + 21 at vm.c:213, queue = 'com.apple.main-thread', stop reason = watchpoint 1
frame #0: 0x0000000100124685 ruby`rb_next_class_serial + 21 at vm.c:213
210 rb_serial_t
211 rb_next_class_serial(void)
212 {
-> 213 return NEXT_CLASS_SERIAL();
214 }
215
216 VALUE rb_cRubyVM;
(lldb) call rb_backtrace()
from /Users/aaron/.rbenv/versions/ruby-trunk/bin/rspec:22:in `<main>'
from /Users/aaron/.rbenv/versions/ruby-trunk/bin/rspec:22:in `load'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/exe/rspec:4:in `<top (required)>'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:45:in `invoke'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:78:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:93:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:117:in `run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/reporter.rb:77:in `report'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:118:in `block in run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/configuration.rb:1680:in `with_suite_hooks'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:119:in `block (2 levels) in run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:119:in `map'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:119:in `block (3 levels) in run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:557:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:591:in `run_examples'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:591:in `map'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:595:in `block in run_examples'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example.rb:222:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example.rb:431:in `hooks'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example.rb:431:in `singleton_class'
(lldb) c
Process 44321 resuming
{:global_method_state=>142, :global_constant_state=>1332, :class_serial=>14849}
Watchpoint 1 hit:
old value: 14849
new value: 14850
Process 44321 stopped
* thread #1: tid = 0x12581b2, 0x0000000100124685 ruby`rb_next_class_serial + 21 at vm.c:213, queue = 'com.apple.main-thread', stop reason = watchpoint 1
frame #0: 0x0000000100124685 ruby`rb_next_class_serial + 21 at vm.c:213
210 rb_serial_t
211 rb_next_class_serial(void)
212 {
-> 213 return NEXT_CLASS_SERIAL();
214 }
215
216 VALUE rb_cRubyVM;
(lldb) call rb_backtrace()
from /Users/aaron/.rbenv/versions/ruby-trunk/bin/rspec:22:in `<main>'
from /Users/aaron/.rbenv/versions/ruby-trunk/bin/rspec:22:in `load'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/exe/rspec:4:in `<top (required)>'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:45:in `invoke'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:78:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:93:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:117:in `run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/reporter.rb:77:in `report'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:118:in `block in run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/configuration.rb:1680:in `with_suite_hooks'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:119:in `block (2 levels) in run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:119:in `map'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:119:in `block (3 levels) in run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:557:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:591:in `run_examples'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:591:in `map'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:595:in `block in run_examples'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example.rb:222:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example.rb:431:in `hooks'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example.rb:431:in `singleton_class'
(lldb) c
Process 44321 resuming
{:global_method_state=>142, :global_constant_state=>1332, :class_serial=>14850}
Watchpoint 1 hit:
old value: 14850
new value: 14851
Process 44321 stopped
* thread #1: tid = 0x12581b2, 0x0000000100124685 ruby`rb_next_class_serial + 21 at vm.c:213, queue = 'com.apple.main-thread', stop reason = watchpoint 1
frame #0: 0x0000000100124685 ruby`rb_next_class_serial + 21 at vm.c:213
210 rb_serial_t
211 rb_next_class_serial(void)
212 {
-> 213 return NEXT_CLASS_SERIAL();
214 }
215
216 VALUE rb_cRubyVM;
(lldb) call rb_backtrace()
from /Users/aaron/.rbenv/versions/ruby-trunk/bin/rspec:22:in `<main>'
from /Users/aaron/.rbenv/versions/ruby-trunk/bin/rspec:22:in `load'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/exe/rspec:4:in `<top (required)>'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:45:in `invoke'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:78:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:93:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:117:in `run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/reporter.rb:77:in `report'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:118:in `block in run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/configuration.rb:1680:in `with_suite_hooks'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:119:in `block (2 levels) in run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:119:in `map'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/runner.rb:119:in `block (3 levels) in run_specs'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:557:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:591:in `run_examples'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:591:in `map'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example_group.rb:595:in `block in run_examples'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example.rb:222:in `run'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example.rb:431:in `hooks'
from /Users/aaron/.rbenv/versions/ruby-trunk/lib/ruby/gems/2.4.0/gems/rspec-core-3.5.0.beta1/lib/rspec/core/example.rb:431:in `singleton_class'
(lldb)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment