2015-11-03 24 views
5

निम्नलिखित प्रोग्राम पर विचार करें, जो कुछ गोरोटाइन को आसानी से फैलाता है और उसके बाद चैनल को समाप्त करने और सिग्नल करने के लिए इंतजार कर रहा है।मैं 'रनटाइम/ट्रेस' द्वारा उत्पादित ट्रेस के विवरण कैसे देखूं?

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> 

मैं घटना-दर-घटना का पता लगाने जाओ उपकरण का उपयोग कर देख सकता हूँ?

+3

असंगत ब्राउज़र:

यह हाल ही में एक सीएल में तय किया गया है? यह Google क्रोम 46 के साथ ठीक काम करता है। – wldsvc

उत्तर

2

मैं @ widsvc की टिप्पणी की पुष्टि कर सकता हूं: आप शायद फ़ायरफ़ॉक्स जैसे असंगत ब्राउज़र का उपयोग कर रहे हैं।

यह क्रोम के साथ अपेक्षित काम करता है।

हुड के नीचे देख रहे हैं, आप Firefox के कंसोल में इस त्रुटि देख सकते हैं:

ReferenceError: tr is not defined trace:7:9

एक त्वरित खोज के बाद, ऐसा लगता है इस का उपयोग करता है trace-viewer जो क्रोम में अंतर्निहित है: https://www.chromium.org/developers/how-tos/trace-event-profiling-tool

मैं http://localhost:8080/jsontrace की सामग्री पर trace2html उपकरण का उपयोग कर अपने स्टैंड-अलोन कोशिश की, लेकिन उत्पादन अभी भी मुझे Firefox के साथ त्रुटियों देता है (पहले "document.registerElement कार्य नहीं है", और फिक्सिंग है कि एक दूसरों आते रहते हैं के बाद)

+0

मैंने लिनक्स पर क्रोम 30 की कोशिश की और यह भी असफल रहा। आप किस मंच पर हैं? – merlin2011

+0

उबंटू 14.04, क्रोम 46.0.2490.80 (64-बिट) – HectorJ

+0

क्रोम 46 में अपग्रेड करने के बाद, यह समस्या हल हो गई है। – merlin2011

2

यदि कोई मेरे जूते में खुद को पाता है, तो यह पता चला है कि ट्रेस व्यूअर क्रोम 49 में भी टूट गया था। https://go-review.googlesource.com/#/c/22013/

संबंधित मुद्दे