Google chrome 在Google Chrome中使用--js标志获取--trace输出

Google chrome 在Google Chrome中使用--js标志获取--trace输出,google-chrome,v8,Google Chrome,V8,我在网上查阅了各种资料,做了很多谷歌搜索,但我似乎找不到关于如何使用谷歌Chrome中的V8--trace-*标志的任何具体说明。我看过一些“你也可以在Chrome中做到这一点”,但我还没有找到我要找的东西,它是这样输出的:(代码片段在文章的底部附近) 我找到了数据被记录到一个文件中的引用:我发现该文件很可能名为v8.log:(丢失了该链接),但我没有找到任何关于如何生成该文件或该文件位于何处的线索。它似乎不在chrome目录或用户目录中 显然,我也需要为chrome.dll启用.map文件,但

我在网上查阅了各种资料,做了很多谷歌搜索,但我似乎找不到关于如何使用谷歌Chrome中的V8--trace-*标志的任何具体说明。我看过一些“你也可以在Chrome中做到这一点”,但我还没有找到我要找的东西,它是这样输出的:(代码片段在文章的底部附近)

我找到了数据被记录到一个文件中的引用:我发现该文件很可能名为v8.log:(丢失了该链接),但我没有找到任何关于如何生成该文件或该文件位于何处的线索。它似乎不在chrome目录或用户目录中

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

与构建V8和使用shell相比,我更喜欢使用Chrome的V8的原因是,我想测试的JavaScript使用DOM,我不相信DOM会包含在V8 shell中。然而,如果是这样的话,知道这一点就太好了,然后我可以重写代码以使用sans html文件并进行测试。但我猜V8本身就是sans DOM访问,就像node.js一样

总而言之,

  • 在Windows7 ultimate x64上运行Google Chrome Canary
  • 快捷目标是
    “C:\Users\ArkahnX\AppData\Local\Google\Chrome SxS\Application\Chrome.exe”--无沙盒--js flags=“--trace opt--trace bailout--trace deop”--用户数据目录=C:\chromeDebugProfile
  • 查看是否可以从chrome记录输出类型
    • 如果是,日志会在哪里
    • 如果没有,我应该期望什么样的输出,再说一遍,我在哪里可以找到它
谢谢你的帮助

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


结果正是我想要的

由于chrome.exe是一个GUI应用程序,Windows标准输出上的。您需要将PE标题中的子系统字段从
IMAGE\u Subsystem\u WINDOWS\u GUI
翻转到
WINDOWS\u Subsystem\u WINDOWS\u CUI
,以查看V8向标准输出的内容

您可以使用以下(有点粗俗的)Python脚本完成此操作:

导入mmap
导入ctypes
GUI=2
崔=3
以open(“chrome.exe”、“r+b”)作为f:
map=mmap.mmap(f.fileno(),1024,None,mmap.ACCESS\u WRITE)
e_lfanew=(ctypes.c_uint.from_buffer(map,30*2).value)
subsystem=ctypes.c_ushort.from_buffer(映射,e_lfanew+4+20+(17*4))
如果subsystem.value==GUI:
subsystem.value=CUI
打印“修补:gui->cui”
elif subsystem.value==CUI:
subsystem.value=GUI
打印“修补:cui->gui”
其他:
打印“未知子系统:%x”%(subsystem.value)

关闭所有Chrome实例并执行此脚本。当您重新启动chrome.exe时,您应该会看到控制台窗口出现,您应该能够通过

重定向stdout。如果您不喜欢破解chrome的PE条目,那么windows还有其他选择

因为chrome应用程序不会在windows上创建控制台标准输出,所以v8中的所有跟踪(也是d8编译器)都会发送到OutputDebugString。 OutputDebugString写入可由任何其他应用程序读取的共享内存对象

Microsoft有一个名为DebugView的工具,可以监视日志文件,如果需要,还可以将其流式传输到日志文件


DebugView是免费的,可以从microsoft下载:

我对Python不是很了解,但是通过
“C:\Python27\Python.exe”chromeDebug.py运行脚本会产生一个IOError:
IOError:[Errno 2]没有这样的文件或目录:“chrome.exe”
。解决方案是将“chrome.exe”更改为完整路径吗?是的,我没有指定chrome.exe的完整路径;我会在chrome.exe所在的同一个目录中执行它。(以管理员身份运行)我将它放在chrome旁边的一个文件“bast.py”中,但我得到了回溯(最近一次调用):文件“bast.py”,第8行,以f:IOError:[Errno 13]权限被拒绝:“chrome.exe”控制台仅显示:[15652:10072:0913/163000:错误:interface_registry.cc(99)]未能找到接口的活页夹:dom_Dilleter::mojom::DistillabilityService@myself再一次,需要添加——没有沙盒标志。Chrome说它不受支持,但实际上它是必需的。你能一步一步地解释一下我要做什么才能让它工作吗?我试图赢得+R
“C:\Program Files(x86)\Google\Chrome\Application\Chrome.exe”-js flags=“--trace opt--trace deopt”
然后我运行了debugview.exe,但我不确定下一步要做什么才能看到输出。使用dbgview可以使用
Chrome.exe--no sandbox user data dir=C:\temp--js flags=“--trace opt trace deopt“
,但与标准输出相比,dbgview中的输出非常不完整。消息中似乎缺少一些变量替换数据。