2017-06-23 4 views

答えて

0

いくつかのスレッドのための機能のバックトレースを取得するためのスレッド#バックトレース方法があります:

https://ruby-doc.org/core-2.4.1/Thread.html#method-i-backtrace

backtrace→配列は、ターゲットスレッドの現在のバックトレースを返し

ソース

をトグルします。使用例については

は、このプロジェクトのことを確認してください。https://github.com/frsyuki/sigdump(それはバックトレースを表示し、RubyとJRubyのためのいくつかのメモリ使用量の情報になる)

sigdump - 要するに:Ruby用のJava VMのSIGQUIT(利用信号にRubyプロセスのスタックトレースを再起動せずに表示する)。

... SIGCONTシグナルを送信するだけで、バックトレースとメモリプロファイルが/tmp/sigdump-.logファイルにダンプされます。すべてのスレッド

https://github.com/frsyuki/sigdump/blob/master/lib/sigdump.rb

dump_all_thread_backtrace(io) 
... 
    Thread.list.each do |thread| 
     dump_backtrace(thread, io) 
... 
    def self.dump_backtrace(thread, io) 
    status = thread.status 
    if status == nil 
     status = "finished" 
    elsif status == false 
     status = "error" 
    end 

    io.write " Thread #{thread} status=#{status} priority=#{thread.priority}\n" 
    if thread.backtrace 
     thread.backtrace.each {|bt| 
     io.write "  #{bt}\n" 
     } 
    end 

    io.flush 
    nil 
    end 
+0

それともこれを確認するの

バックトレース:http://itreallymatters.net/post/

sigdumpは(もサンプル出力を参照)の情報を、以下のダンプ29549982905/generate-thread-dump-for-ruby-scripts(とthread#backtraceについて: "*このメソッドは1.9にあります。古いRubyのバージョンでは、現在のバージョンのみで動作するため、糸。*") – osgx

関連する問題