Class: Aeacus::Backtrace
- Inherits:
-
Object
- Object
- Aeacus::Backtrace
- Defined in:
- lib/aeacus/backtrace.rb
Instance Method Summary collapse
-
#initialize(pid) ⇒ Backtrace
constructor
A new instance of Backtrace.
- #prepare_commands ⇒ Object
- #take_traces ⇒ Object
Constructor Details
#initialize(pid) ⇒ Backtrace
Returns a new instance of Backtrace.
3 4 5 6 |
# File 'lib/aeacus/backtrace.rb', line 3 def initialize(pid) @pid = pid @resource_folder = File.join(File.dirname(File.(__FILE__)), '../../resources') end |
Instance Method Details
#prepare_commands ⇒ Object
22 23 24 25 26 27 |
# 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 ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# 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 |