google-chrome - 在Google Chrome浏览器中使用--js-flags获取--trace输出

标签 google-chrome v8

我已经在线浏览了各种来源,并进行了许多Google搜索,但似乎找不到关于如何使用Google Chrome中的V8 --trace- *标志的任何具体说明。我看过一些“您也可以在Chrome中完成此操作”,但我一直找不到要查找的内容,其输出如下:(代码段位于帖子的底部附近) Optomizing for V8

我找到了将数据记录到文件的引用:Profiling Chromium with V8,我发现该文件可能命名为v8.log :(丢失了该链接),但是我没有找到任何有关如何生成该文件的线索,或者它所在的位置。它似乎不在chrome目录或用户目录中。

显然我也需要为chrome.dll启用.map文件,但是我找不到任何能帮助我的东西。

我之所以更喜欢使用Chrome的V8而不是构建V8和使用Shell,是因为我要测试的JavaScript使用DOM,但我不认为它会包含在V8 Shell中。但是,如果知道的话,那真是太好了,那么我可以重写代码以运行sans-html文件并进行测试。但是我的猜测是V8本身就是sans-DOM访问,例如node.js

总结一下;

  • 在Windows 7 Ultimate x64上运行Google Chrome Canary
  • 快捷方式目标是"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
  • 寻找是否可以从chrome记录this输出类型
  • 如果是这样,日志将在哪里?
  • 如果没有,我应该期望什么样的输出,再一次,我在哪里可以找到它?

  • 感谢您的协助!

    修改我如何获得为我工作的答案

    使用以下答案,我将python安装到它的默认目录,并修改了脚本,使其具有chrome的完整路径。从那里,我将文件类型关联设置为python的.py文件并执行了脚本。现在,每次我打开Chrome Canary时,它将运行该python脚本(至少直到重新启动PC之前,然后我必须再次运行该脚本)

    结果正是我想要的!

    最佳答案

    在Windows上,由于chrome.exe是GUI应用程序,因此抑制了stdout输出。您需要将PE header 中的Subsystem字段从IMAGE_SUBSYSTEM_WINDOWS_GUI翻转到WINDOWS_SUBSYSTEM_WINDOWS_CUI,以查看V8输出到stdout的内容。

    您可以使用以下(有点黑)的Python脚本来做到这一点:

    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。

    关于google-chrome - 在Google Chrome浏览器中使用--js-flags获取--trace输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125364/

    相关文章:

    javascript - 为什么 setInterval 只接受 2^31-1 延迟值?

    google-chrome - Karma 无法捕获 Chrome v93 并超时/放弃

    c++ - 如何清理在 Local<External> 引用中跟踪的 C++ 对象?

    node.js - NodeJS 在 Gentoo AMD64 上初始化 V8 时出错

    eclipse - 如何让 Flash Builder 在新的浏览器窗口中调试 SWF?

    javascript - 如何将图像数据从node.js传输到html5 canvas?

    javascript - Jint 对于字符串来说非常慢

    google-chrome - 如何更快地构建 Chromium?

    javascript - 将 info.selectionText 的值传递给内容脚本

    html - 自定义 css 被浏览器中的 Bootstrap 覆盖