rbtrace 0.3.13 → 0.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +0 -1
- data/bin/rbtrace +45 -5
- data/ext/extconf.rb +2 -2
- data/rbtrace.gemspec +1 -1
- metadata +5 -5
    
        data/README.md
    CHANGED
    
    | @@ -196,6 +196,5 @@ for popular ruby libraries and functions. | |
| 196 196 | 
             
            * add watch expressions to fire tracers only when an expression is true
         | 
| 197 197 | 
             
            * add special expressions for method args (_arg0_, _arguments_)
         | 
| 198 198 | 
             
            * optimize local variable lookup to avoid instance_eval
         | 
| 199 | 
            -
            * run process via bin/rbtrace (to trace rubygems and bootup time)
         | 
| 200 199 | 
             
            * investigate mach_msg on osx since msgget(2) has hard kernel limits
         | 
| 201 200 |  | 
    
        data/bin/rbtrace
    CHANGED
    
    | @@ -154,11 +154,15 @@ class RBTracer | |
| 154 154 | 
             
                  raise ArgumentError, 'could not signal process, are you running as root?'
         | 
| 155 155 | 
             
                end
         | 
| 156 156 |  | 
| 157 | 
            -
                 | 
| 158 | 
            -
             | 
| 157 | 
            +
                5.times do
         | 
| 158 | 
            +
                  signal
         | 
| 159 | 
            +
                  sleep 0.15 # wait for process to create msgqs
         | 
| 159 160 |  | 
| 160 | 
            -
             | 
| 161 | 
            -
             | 
| 161 | 
            +
                  @qi = MsgQ.msgget( pid, 0666)
         | 
| 162 | 
            +
                  @qo = MsgQ.msgget(-pid, 0666)
         | 
| 163 | 
            +
             | 
| 164 | 
            +
                  break if @qi > -1 || @qo > -1
         | 
| 165 | 
            +
                end
         | 
| 162 166 |  | 
| 163 167 | 
             
                if @qi == -1 || @qo == -1
         | 
| 164 168 | 
             
                  raise ArgumentError, 'pid is not listening for messages, did you `require "rbtrace"`'
         | 
| @@ -770,6 +774,11 @@ EOS | |
| 770 774 | 
             
                    :type => String,
         | 
| 771 775 | 
             
                    :short => '-e'
         | 
| 772 776 |  | 
| 777 | 
            +
                  opt :exec,
         | 
| 778 | 
            +
                    "spawn new ruby process and attach to it",
         | 
| 779 | 
            +
                    :type => :strings,
         | 
| 780 | 
            +
                    :short => nil
         | 
| 781 | 
            +
             | 
| 773 782 | 
             
                  opt :timeout,
         | 
| 774 783 | 
             
                    "seconds to wait before giving up on attach/detach",
         | 
| 775 784 | 
             
                    :default => 5
         | 
| @@ -777,9 +786,17 @@ EOS | |
| 777 786 |  | 
| 778 787 | 
             
                opts = Trollop.with_standard_exception_handling(parser) do
         | 
| 779 788 | 
             
                  raise Trollop::HelpNeeded if ARGV.empty?
         | 
| 789 | 
            +
                  parser.stop_on '--exec'
         | 
| 780 790 | 
             
                  parser.parse(ARGV)
         | 
| 781 791 | 
             
                end
         | 
| 782 792 |  | 
| 793 | 
            +
                if ARGV.first == '--exec'
         | 
| 794 | 
            +
                  ARGV.shift
         | 
| 795 | 
            +
                  opts[:exec_given] = true
         | 
| 796 | 
            +
                  opts[:exec] = ARGV.dup
         | 
| 797 | 
            +
                  ARGV.clear
         | 
| 798 | 
            +
                end
         | 
| 799 | 
            +
             | 
| 783 800 | 
             
                unless %w[ fork eval slow firehose methods config gc ].find{ |n| opts[:"#{n}_given"] }
         | 
| 784 801 | 
             
                  $stderr.puts "Error: --slow, --gc, --firehose, --methods or --config required."
         | 
| 785 802 | 
             
                  $stderr.puts "Try --help for help."
         | 
| @@ -790,6 +807,15 @@ EOS | |
| 790 807 | 
             
                  parser.die :fork, '(can only be invoked with one pid)'
         | 
| 791 808 | 
             
                end
         | 
| 792 809 |  | 
| 810 | 
            +
                if opts[:exec_given]
         | 
| 811 | 
            +
                  if opts[:pid_given]
         | 
| 812 | 
            +
                    parser.die :exec, '(cannot exec and attach to pid)'
         | 
| 813 | 
            +
                  end
         | 
| 814 | 
            +
                  if opts[:fork_given]
         | 
| 815 | 
            +
                    parser.die :fork, '(cannot fork inside newly execed process)'
         | 
| 816 | 
            +
                  end
         | 
| 817 | 
            +
                end
         | 
| 818 | 
            +
             | 
| 793 819 | 
             
                methods, smethods = [], []
         | 
| 794 820 |  | 
| 795 821 | 
             
                if opts[:methods_given]
         | 
| @@ -822,7 +848,15 @@ EOS | |
| 822 848 |  | 
| 823 849 | 
             
                tracee = nil
         | 
| 824 850 |  | 
| 825 | 
            -
                if opts[: | 
| 851 | 
            +
                if opts[:exec_given]
         | 
| 852 | 
            +
                  tracee = fork{
         | 
| 853 | 
            +
                    Process.setsid
         | 
| 854 | 
            +
                    ENV['RUBYOPT'] = "-r#{File.expand_path('../../lib/rbtrace',__FILE__)}"
         | 
| 855 | 
            +
                    exec(*opts[:exec])
         | 
| 856 | 
            +
                  }
         | 
| 857 | 
            +
                  STDERR.puts "*** spawned child #{tracee}: #{opts[:exec].inspect[1..-2]}"
         | 
| 858 | 
            +
             | 
| 859 | 
            +
                elsif opts[:pid].size <= 1
         | 
| 826 860 | 
             
                  tracee = opts[:pid].first
         | 
| 827 861 |  | 
| 828 862 | 
             
                else
         | 
| @@ -917,6 +951,12 @@ EOS | |
| 917 951 | 
             
                  if tracer
         | 
| 918 952 | 
             
                    tracer.detach
         | 
| 919 953 | 
             
                  end
         | 
| 954 | 
            +
             | 
| 955 | 
            +
                  if opts[:exec_given]
         | 
| 956 | 
            +
                    STDERR.puts "*** waiting on spawned child #{tracee}"
         | 
| 957 | 
            +
                    Process.kill 'TERM', tracee
         | 
| 958 | 
            +
                    Process.waitpid(tracee)
         | 
| 959 | 
            +
                  end
         | 
| 920 960 | 
             
                end
         | 
| 921 961 | 
             
              end
         | 
| 922 962 | 
             
            end
         | 
    
        data/ext/extconf.rb
    CHANGED
    
    | @@ -16,10 +16,10 @@ unless File.exists?("#{CWD}/dst/lib/libmsgpackc.a") | |
| 16 16 |  | 
| 17 17 | 
             
              msgpack = File.basename('msgpack-0.5.4.tar.gz')
         | 
| 18 18 | 
             
              dir = File.basename(msgpack, '.tar.gz')
         | 
| 19 | 
            +
              cflags, ldflags = ENV['CFLAGS'], ENV['LDFLAGS']
         | 
| 19 20 |  | 
| 20 21 | 
             
              # build fat binaries on osx
         | 
| 21 22 | 
             
              if RUBY_PLATFORM =~ /darwin/ and (archs = Config::CONFIG['LDFLAGS'].scan(/(-arch\s+.+?)(?:\s|$)/).flatten).any?
         | 
| 22 | 
            -
                cflags, ldflags = ENV['CFLAGS'], ENV['LDFLAGS']
         | 
| 23 23 | 
             
                ENV['CFLAGS'] = "#{cflags} #{archs.join(' ')}"
         | 
| 24 24 | 
             
                ENV['LDFLAGS'] = "#{ldflags} #{archs.join(' ')}"
         | 
| 25 25 | 
             
              end
         | 
| @@ -30,7 +30,7 @@ unless File.exists?("#{CWD}/dst/lib/libmsgpackc.a") | |
| 30 30 | 
             
                sys("tar zxvf #{msgpack}")
         | 
| 31 31 | 
             
                Dir.chdir(dir) do
         | 
| 32 32 | 
             
                  if RUBY_PLATFORM =~ /i686/ and gcc = `gcc -v 2>&1` and gcc =~ /gcc version (\d\.\d)/ and $1.to_f <= 4.1
         | 
| 33 | 
            -
                    ENV['CFLAGS']  | 
| 33 | 
            +
                    ENV['CFLAGS'] = " #{ENV['CFLAGS']} -march=i686 "
         | 
| 34 34 | 
             
                  end
         | 
| 35 35 | 
             
                  sys("./configure --disable-dependency-tracking --disable-shared --disable-cxx --with-pic --prefix=#{CWD}/dst/")
         | 
| 36 36 | 
             
                  sys("make install")
         | 
    
        data/rbtrace.gemspec
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: rbtrace
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 15
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 3
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.3. | 
| 9 | 
            +
              - 14
         | 
| 10 | 
            +
              version: 0.3.14
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Aman Gupta
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2011- | 
| 18 | 
            +
            date: 2011-11-22 00:00:00 -08:00
         | 
| 19 19 | 
             
            default_executable: 
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 124 124 | 
             
            requirements: []
         | 
| 125 125 |  | 
| 126 126 | 
             
            rubyforge_project: 
         | 
| 127 | 
            -
            rubygems_version: 1. | 
| 127 | 
            +
            rubygems_version: 1.6.2
         | 
| 128 128 | 
             
            signing_key: 
         | 
| 129 129 | 
             
            specification_version: 3
         | 
| 130 130 | 
             
            summary: "rbtrace: like strace but for ruby code"
         |