2015-11-03 6 views
5

以下のプログラムは、いくつかのゴルーチンを回転させ、終了するのを待って、実行されたチャネル上で信号を送るものです。`runtime/trace`によって生成されたトレースの詳細を表示するにはどうすればよいですか?

package main 

import (
    "os" 
    "runtime/trace" 
    "time" 
) 

func doWork(c chan int) { 
    startTime := time.Now() 
    i := 0 
    for curTime := startTime; curTime.Sub(startTime) < 2; curTime = time.Now() { 
     i++ 
    } 
    c <- i 
} 

func main() { 
    numGoRoutine := 10 
    traceOutFile, _ := os.OpenFile("/tmp/Trace.out", os.O_WRONLY|os.O_CREATE, os.ModeExclusive|os.ModePerm) 
    trace.Start(traceOutFile) 

    // Start goroutines 
    termChannel := make(chan int) 
    for i := 0; i < numGoRoutine; i++ { 
     go doWork(termChannel) 
    } 

    // Wait for completion 
    for i := 0; i < numGoRoutine; i++ { 
     <-termChannel 
    } 

    trace.Stop() 
} 

このプログラムが終了すると、出力は/tmp/Trace.outと呼ばれるバイナリファイルです。次に、次のようにトレースツールを使用してトレースを表示しようとしました。これは、生産

go tool trace -http=localhost:8080 ./Main /tmp/Trace.out 

は(一緒に表示のみの集計データを与える他のリンク付き)View Traceへのリンクでページを起動しますが、空白のページでそのリンクの結果をクリックします。そのページのソースを見ると、次のソースが表示されます。これはJSONがバイナリではなく予想されることを意味しているようです。私は囲碁のツールを使用してイベントごとのイベントのトレースを表示することができますどのように

<html> 
    <head> 
     <link href="/trace_viewer_html" rel="import"> 
     <script> 
      document.addEventListener("DOMContentLoaded", function(event) { 
       var viewer = new tr.TraceViewer('/jsontrace'); 
       document.body.appendChild(viewer); 
      }); 
     </script> 
    </head> 
    <body> 
    </body> 
</html> 

+3

互換性のないブラウザ:

それは、最近のCLで修正されていますか?これはGoogle Chrome 46でもうまくいきます。 – wldsvc

答えて

2

@ widsvcのコメントを確認することができます:Firefoxのような互換性のないブラウザを使用している可能性があります。

Chromeでは期待通りに動作します。

ボンネットの下に見て、あなたがFirefoxのコンソールでこのエラーを確認できます。https://www.chromium.org/developers/how-tos/trace-event-profiling-tool:クイック検索後

ReferenceError: tr is not defined trace:7:9

を、Chromeで埋め込まれtrace-viewerを使用しています表示されます。

私はhttp://localhost:8080/jsontraceの内容に彼らのスタンドアロンtrace2htmlツールを使用してみましたが、出力はまだ私のFirefoxでエラーが発生します(最初の「document.registerElementは関数ではありません」、と1つの他の人が来続けることを固定した後)

+0

Linuxでchrome 30を試しましたが、失敗しました。あなたはどんなプラットフォームですか? – merlin2011

+0

Ubuntu 14.04、Chrome 46.0.2490.80(64ビット) – HectorJ

+0

Chrome 46にアップグレードすると、この問題は解決されます。 – merlin2011

関連する問題