以下のプログラムは、いくつかのゴルーチンを回転させ、終了するのを待って、実行されたチャネル上で信号を送るものです。`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>
?
互換性のないブラウザ:
それは、最近のCLで修正されていますか?これはGoogle Chrome 46でもうまくいきます。 – wldsvc