class Aeacus::Backtrace
Public Class Methods
new(pid)
click to toggle source
# File lib/aeacus/backtrace.rb, line 3 def initialize(pid) @pid = pid @resource_folder = File.join(File.dirname(File.expand_path(__FILE__)), '../../resources') end
Public Instance Methods
prepare_commands()
click to toggle source
# File lib/aeacus/backtrace.rb, line 22 def prepare_commands commands_file = File.join(@resource_folder, 'gdb_commands') commands = File.open(commands_file) command_string = commands.read.gsub("PID",@pid.to_s) File.open('/tmp/gdb_commands', 'w'){|f| f.write(command_string)} end
take_traces()
click to toggle source
# File lib/aeacus/backtrace.rb, line 8 def take_traces prepare_commands traces = [] # start gdb with our commands, attached to a given PID (1..5).each do |i| output = `gdb \`which ruby\` #{@pid} -x /tmp/gdb_commands | grep '^#'` traces << `cat /tmp/stdout.#{@pid}` puts "--> Took trace #{i}/5" sleep 1 end return traces end