2012-06-20 6 views
7

मैंने विभिन्न स्रोतों को ऑनलाइन देखा है और कई Google खोजों को देखा है, लेकिन मुझे काम करने के तरीके के बारे में कोई विशिष्ट निर्देश नहीं दिख रहा है Google क्रोम में वी 8 --trace- * झंडे के साथ। मैंने कुछ देखा है "आप क्रोम में भी ऐसा कर सकते हैं", लेकिन मैं जो भी ढूंढ रहा हूं उसे ढूंढने में सक्षम नहीं हूं, जो इस तरह का आउटपुट है: (स्निपेट पोस्ट के नजदीक के पास हैं) Optomizing for V8Google क्रोम में --js-flags का उपयोग करने के लिए --trace आउटपुट

मुझे पता चला कि डेटा को फ़ाइल में लॉग किया गया है: Profiling Chromium with V8 और मुझे पता चला है कि फ़ाइल की संभावना v8.log है: (उस लिंक को खो दिया गया है) लेकिन मुझे कोई संकेत नहीं मिला है कि कैसे उत्पन्न करना है वह फ़ाइल, या यह कहां स्थित है। यह क्रोम निर्देशिका या उपयोगकर्ता निर्देशिका में प्रतीत नहीं होता था।

स्पष्ट रूप से मुझे chrome.dll के लिए .map फ़ाइलों को सक्षम करने की आवश्यकता है, लेकिन मुझे इसके साथ मेरी सहायता करने के लिए कुछ भी नहीं मिला।

कारण मैं वी 8 बनाने और एक खोल का उपयोग करने के विरोध में क्रोम के वी 8 का उपयोग करना पसंद करूंगा क्योंकि जावास्क्रिप्ट मैं परीक्षण करना चाहता हूं डीओएम का उपयोग करता है, जिसे मुझे विश्वास नहीं है कि वी 8 खोल में शामिल किया जाएगा । हालांकि अगर ऐसा है, तो यह जानना बहुत अच्छा होगा, फिर मैं संस-एचटीएमएल फ़ाइल और परीक्षण करने के लिए कोड को फिर से लिख सकता हूं। लेकिन मेरा अनुमान है कि V8 स्वयं ही sans-DOM पहुंच है, जैसे node.js

तो चीजों को समेटने के लिए;

  • विंडोज 7 अंतिम 64
  • शॉर्टकट लक्ष्य "C:\Users\ArkahnX\AppData\Local\Google\Chrome SxS\Application\chrome.exe" --no-sandbox --js-flags="--trace-opt --trace-bailout --trace-deop" --user-data-dir=C:\chromeDebugProfile
  • के लिए उत्पादन का this प्रकार क्रोम
    • यदि हां, जहां लॉग होगा से प्रवेश कर सकते हैं कि क्या देख रहे है पर Google Chrome कैनरी चल रहा है ?
    • यदि नहीं, तो मुझे किस तरह के आउटपुट की उम्मीद करनी चाहिए, और फिर, मुझे यह कहां मिल सकता है?

किसी भी सहायता के लिए धन्यवाद!

मुझे

नीचे उत्तर का उपयोग करना के लिए काम करने के साथ कैसे मैं इस सवाल का जवाब मिल गया में संशोधन, मैं अजगर करने के लिए इसे डिफ़ॉल्ट निर्देशिका है स्थापित है, और स्क्रिप्ट को संशोधित करके तो यह पूरा पथ क्रोम करना पड़ा। वहां से मैंने फ़ाइल प्रकार एसोसिएशन को .py फ़ाइलों में पायथन पर सेट किया और स्क्रिप्ट को निष्पादित किया। अब जब भी मैं क्रोम कैनरी खोलता हूं तो वह उस पायथन स्क्रिप्ट को चलाएगा (कम से कम जब तक मैं अपने पीसी को पुनरारंभ नहीं करता, तब मुझे उस स्क्रिप्ट को फिर से चलाने की आवश्यकता होगी)

परिणाम वही है जो मैं ढूंढ रहा था!

उत्तर

10

विंडोज़ स्टडआउट आउटपुट पर इस तथ्य से दबा दिया गया है कि क्रोम.एक्सई एक जीयूआई एप्लीकेशन है। IMAGE_SUBSYSTEM_WINDOWS_GUI से WINDOWS_SUBSYSTEM_WINDOWS_CUI से पीई हेडर में आपको सबसिस्टम फ़ील्ड फ़्लिप करने की आवश्यकता है यह देखने के लिए कि V8 आउटपुट क्या है।

आप निम्न (कुछ hackish) अजगर स्क्रिप्ट के साथ यह कर सकते हैं:

import mmap 
import ctypes 

GUI = 2 
CUI = 3 

with open("chrome.exe", "r+b") as f: 
    map = mmap.mmap(f.fileno(), 1024, None, mmap.ACCESS_WRITE) 
    e_lfanew = (ctypes.c_uint.from_buffer(map, 30 * 2).value) 
    subsystem = ctypes.c_ushort.from_buffer(map, e_lfanew + 4 + 20 + (17 * 4)) 
    if subsystem.value == GUI: 
     subsystem.value = CUI 
     print "patched: gui -> cui" 
    elif subsystem.value == CUI: 
     subsystem.value = GUI 
     print "patched: cui -> gui" 
    else: 
     print "unknown subsystem: %x" % (subsystem.value) 

बंद सभी Chrome इंस्टेंस और इस स्क्रिप्ट को निष्पादित। जब आप chrome.exe को पुनरारंभ करते हैं तो आपको कंसोल विंडो दिखाई देनी चाहिए और आपको > के माध्यम से stdout को रीडायरेक्ट करने में सक्षम होना चाहिए।

+0

मैं अजगर के बारे में बहुत जानकार नहीं हूँ, लेकिन के माध्यम से 'स्क्रिप्ट चलाने" C: \ Python27 \ python.exe "chromeDebug.py' एक IOError देता है:' IOError: [Errno 2] ऐसी कोई फ़ाइल या निर्देशिका नहीं: 'chrome.exe''। क्या समाधान "chrome.exe" को पूर्ण पथ में बदलना होगा? – ArkahnX

+0

हां, मैंने chrome.exe का पूरा पथ निर्दिष्ट नहीं किया है; मैं इसे उसी निर्देशिका में निष्पादित करूंगा जहां chrome.exe रहता है। –

+0

(व्यवस्थापक के रूप में चल रहा है) मैंने इसे क्रोम के बगल में एक फ़ाइल "bastard.py" में रखा है लेकिन मुझे ट्रेसबैक (सबसे हालिया कॉल अंतिम) प्राप्त होता है: फ़ाइल "bastard.py", लाइन 8, खुले (" chrome.exe "," r + b ") f: IOError: [Errno 13] अनुमति अस्वीकार कर दी गई: 'chrome.exe' – Pawel

4

यदि आप क्रोम के पीई प्रविष्टि को हैक करने पर उत्सुक नहीं हैं तो विंडोज़ के लिए विकल्प उपलब्ध है।

चूंकि क्रोम ऐप विंडोज़ पर कंसोल स्टडआउट नहीं बनाता है, इसलिए सभी v8 (d8 कंपाइलर) में ट्रेसिंग को आउटपुटडिबगस्ट्रिंग में भेजा जाता है। आउटपुटडिबगस्ट्रिंग एक साझा मेमोरी ऑब्जेक्ट को लिखता है जिसे किसी अन्य एप्लिकेशन द्वारा पढ़ा जा सकता है।

माइक्रोसॉफ्ट के पास डिबग व्यू नामक एक उपकरण है जो मॉनीटर करता है और यदि आवश्यक हो तो लॉग फ़ाइल में स्ट्रीम भी हो।

DebugView मुक्त और Microsoft से डाउनलोड करने योग्य है: http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

+1

क्या आप इसे चरणबद्ध करने के लिए कदम उठाने के लिए कदम उठा सकते हैं? मैंने + आर '" सी: \ प्रोग्राम फ़ाइलें (x86) \ Google \ क्रोम \ एप्लिकेशन \ chrome.exe "--js-flags =" - trace-opt --trace-deopt "जीतने की कोशिश की और फिर मैं ' मैंने debugview.exe चलाया है, लेकिन मुझे यकीन नहीं है कि आउटपुट देखने के लिए आगे क्या करना है। – qbolec

+0

'chrome.exe --no-sandbox --user-data-dir = c: \ temp --js-flags = "- trace-opt --trace-deopt" के साथ dbgview कार्यों का उपयोग करना, लेकिन आउटपुट में stdout पर आउटपुट के साथ dbgview बहुत अधूरा है। ऐसा लगता है कि संदेशों में कुछ परिवर्तनीय प्रतिस्थापन डेटा गुम है। –

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