我想跟踪任意Node.js程序的执行路径。
具体地说,我想运行一个程序(服务器或脚本),并具有某种执行的块级(函数调用,循环,if语句)跟踪。
我发现,如果将NODE_V8_COVERAGE
环境变量设置为目录,则当程序退出时(此功能创建时的blog post),覆盖范围数据将输出到该目录。 / p>
我在这里面临的问题是,我不确定在程序终止之前 是否可以触发这些报告的生成。
我也一直在尝试使用Node.js检查器。我找到了有用的CPU事件探查器here。这最终可能会有所帮助,但是此事件探查器仅通过采样工作,而不是与语言挂钩。结果,我只得到行号/计数缓慢的部分代码。
我也尝试使用Profiler.startPreciseCoverage
,以为这可能以某种方式使我执行的每一行(找不到文档可以清楚地知道这实际上是做什么的)。似乎没什么用了
如果可能,我想避免使用代码。
似乎我的选择有限,但这同时只是我在Google上搜索了一两个小时的结果。
是否有更好的方法来捕获具有上述约束的线路覆盖范围?
答案 0 :(得分:0)
有a pull request pending for Node.js to add functionality to programmatically start/stop/write V8 coverage information。如果您喜欢冒险,可以使用git
获取要使用的Node.js版本,应用补丁中的提交,然后编译Node.js二进制文件。
如果克隆Node.js存储库,则会标记各种版本的Node.js。因此,您可以通过检出v12.19.0
标签来获取Node.js 12.19.0的代码。
您可以正常地从拉取请求中挑选提交,也可以使用curl -L https://github.com/nodejs/node/pull/33807.patch | git am
将提交作为补丁应用。
有关编译/构建Node.js二进制文件的说明,请参见https://github.com/nodejs/node/blob/master/BUILDING.md#building-nodejs-on-supported-platforms。
从长远来看,您可以根据请求是否满足您的请求来提出建议,并希望它再次运行。似乎已经停滞了。