(This code blow requires you to include rbtrace in your gems)
To make a stack dump of your running rubyprocess, you could use somthing like this:
my_pid=1234
bundle exec rbtrace -p $my_pid -e 'Thread.new{GC.start;require "objspace";io=File.open("/tmp/ruby-heap.dump", "w"); ObjectSpace.dump_all(output: io); io.close}'
Unfortunately on FreeBSD / Mac OS X this results in (ArgumentError: command is too long)
A workaround for this, is to simply put the code in ruby file, and just load it. For example:
/tmp/rbcode.rb
. With the following content
Thread.new{GC.start;require "objspace";io=File.open("/tmp/ruby-heap.dump", "w"); ObjectSpace.dump_all(output: io); io.close}
Next you can use rbtrace lik this:
bundle exec rbtrace -p $my_pid -e 'load("/tmp/rbcode.rb")'