निम्नलिखित प्रोग्राम पर विचार करें, जो कुछ गोरोटाइन को आसानी से फैलाता है और उसके बाद चैनल को समाप्त करने और सिग्नल करने के लिए इंतजार कर रहा है।मैं 'रनटाइम/ट्रेस' द्वारा उत्पादित ट्रेस के विवरण कैसे देखूं?
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
के लिए एक लिंक (एक साथ एक दृश्य के अन्य लिंक है कि केवल डेटा का संग्रहण देने के साथ) के साथ एक पृष्ठ की शुरूआत है, लेकिन एक रिक्त पृष्ठ में उस लिंक परिणामों पर क्लिक करें। जब मैं उस पृष्ठ के स्रोत को देखता हूं, तो मुझे निम्न स्रोत दिखाई देता है, जो ऐसा लगता है कि जेएसओएन बाइनरी के बजाय अपेक्षा की जाती है।
<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>
मैं घटना-दर-घटना का पता लगाने जाओ उपकरण का उपयोग कर देख सकता हूँ?
असंगत ब्राउज़र:
यह हाल ही में एक सीएल में तय किया गया है? यह Google क्रोम 46 के साथ ठीक काम करता है। – wldsvc