You're right, we currently only output --trace-block-coverage through
stdout. If redirecting stdout is not possible in your use case (and stdout
is not visible/accessible), I'd say the easiest fix is to patch V8 s.t.
--trace-block-coverage prints to a file, and rebuild. See all
v8_flags.trace_block_coverage
occurrences
<https://source.chromium.org/search?q=v8_flags.trace_block_coverage&ss=chromium%2Fchromium%2Fsrc>.
You'd also have to disable the chrome sandbox with --no-sandbox to have
access to the file system.

Or alternatively, patch whatever runner you use to redirect stdout when
spawning chrome.

On Wed, Oct 5, 2022 at 5:41 PM 'Cecil King' via v8-dev <
[email protected]> wrote:

> Hello Jakob:
> Can you provide some additional advice on collecting the
> '--trace-block-coverage' output?
>
> If I run chrome directly from the command-line and then enable coverage,
> then I can see the trace output in the terminal. (I'm on Linux.)
>
> However, when chrome is launched via wdio (webdriver.io), then the trace
> output is not accessible.
>
> I tried adding `--log-file` to the options for launching chrome from wdio
> (something equivalent to the following: `chromium
> --js-flags="--trace-block-coverage" --enable-logging
> --log-file="./v8-coverage.log"`) but the `--log-file` option doesn't
> capture the trace output.
>
> I inquired over on the webdriver.io forum ... but there were no immediate
> solutions. They suggested that perhaps I can implement this feature (
> https://github.com/giggio/node-chromedriver/issues/313) to have
> chromedriver capture chrome's output. However our project doesn't use
> chromedriver (as far as I can tell ... chromedriver is not in the install
> packages and it's not installed globally).
>
> Upon looking through closed chromium bugs to see if there was an existing
> solution, I saw mention of the `chrome://tracing` feature, and I can see
> that `v8` is listed in the `Record Categories`. However on first pass, it
> doesn't seem this interface is capturing the `trace-block-coverage`.
>
> Any tips on dumping the trace data to a file, so I can include it with a
> bug report?
>
> Thanks.
> On Wednesday, September 21, 2022 at 11:28:12 AM UTC-4 Cecil King wrote:
>
>> Thanks Jakob:
>> I'll give this a try and add any additional information I find to the bug
>> report.
>>
>> On Wednesday, September 21, 2022 at 2:27:24 AM UTC-4 [email protected]
>> wrote:
>>
>>> Hi Cecil,
>>>
>>> it's hard to say much without a repro. I'd start by trying the V8 flag
>>> --trace-block-coverage (
>>> https://source.chromium.org/chromium/chromium/src/+/main:v8/src/debug/debug-coverage.cc;l=481;drc=5f2ed43ac6add2683505e130be73826cbb3dddfd).
>>> If that doesn't help, the next step would be to debug more around
>>> Coverage::Collect.
>>>
>>> Also, I'd suggest to file a report at crbug.com/v8/new to continue the
>>> conversation since bug reports are easier to track than mails :)
>>>
>>> On Tue, Sep 20, 2022 at 9:39 PM 'Cecil King' via v8-dev <
>>> [email protected]> wrote:
>>>
>>>> Hello.
>>>>
>>>> My first post here. I'm looking for advice on debugging an issue with
>>>> the v8 code coverage.
>>>>
>>>> I'm using startPreciseCoverage / takePreciseCoverage to extract code
>>>> coverage data from Chrome (i.e. v8).
>>>>
>>>> My issue: data from uncovered functions are missing from the dumped
>>>> data.
>>>> For example, assume the handleSubmit function in authors.js is not
>>>> called. I expect to see this:
>>>> {
>>>>     "scriptId": "16",
>>>>     "url":
>>>> "file:///home/<user>/v8-chrome-coverage-wdio-sync/public/js/authors.js",
>>>>     "functions": [
>>>>         {
>>>>             "functionName": "",
>>>>             "ranges": [{ "startOffset": 0, "endOffset": 828, "count": 1
>>>> }],
>>>>             "isBlockCoverage": true },
>>>>         {
>>>>             "functionName": "showContent",
>>>>             "ranges": [{ "startOffset": 71, "endOffset": 448, "count":
>>>> 1 }],
>>>>             "isBlockCoverage": true
>>>>         },
>>>>         {
>>>>             "functionName": "",
>>>>             "ranges": [{ "startOffset": 274, "endOffset": 444, "count":
>>>> 3 }],
>>>>             "isBlockCoverage": true
>>>>         },
>>>>         {
>>>>             "functionName": "handleSubmit",
>>>>             "ranges": [{ "startOffset": 450, "endOffset": 703, "count":
>>>> 0 }],
>>>>             "isBlockCoverage": false
>>>>         }
>>>>     ]
>>>> },
>>>>
>>>> but instead I get this:
>>>> {
>>>>     "scriptId": "16",
>>>>     "url":
>>>> "file:///home/<user>/v8-chrome-coverage-wdio-sync/public/js/authors.js",
>>>>     "functions": [
>>>>         {
>>>>             "functionName": "",
>>>>             "ranges": [{ "startOffset": 0, "endOffset": 828, "count": 1
>>>> }],
>>>>             "isBlockCoverage": true },
>>>>         {
>>>>             "functionName": "showContent",
>>>>             "ranges": [{ "startOffset": 71, "endOffset": 448, "count":
>>>> 1 }],
>>>>             "isBlockCoverage": true
>>>>         },
>>>>         {
>>>>             "functionName": "",
>>>>             "ranges": [{ "startOffset": 274, "endOffset": 444, "count":
>>>> 3 }],
>>>>             "isBlockCoverage": true
>>>>         }
>>>>     ]
>>>> },
>>>>
>>>> i.e. there is no data at all on the uncovered function. This causes the
>>>>  c8 report tool to generate an invalid report.
>>>>
>>>> The above is what I observe on my company's codebase. I tried to create
>>>> simple reproductions that I could share, however all my simple projects are
>>>> working fine.
>>>>
>>>> Any suggestions or tips on what I could try to debug the problem would
>>>> be appreciated.
>>>>
>>>> (FYI ... here's a working version of the flow on a smaller project:
>>>> https://github.com/cek333/v8-chrome-coverage-wdio-sync)
>>>>
>>>> Thanks.
>>>>
>>>> --
>>>> --
>>>> v8-dev mailing list
>>>> [email protected]
>>>> http://groups.google.com/group/v8-dev
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "v8-dev" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/v8-dev/22d16033-590f-4de3-86de-a6aa6ebcbb74n%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/v8-dev/22d16033-590f-4de3-86de-a6aa6ebcbb74n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
> --
> v8-dev mailing list
> [email protected]
> http://groups.google.com/group/v8-dev
> ---
> You received this message because you are subscribed to the Google Groups
> "v8-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/v8-dev/45317061-acd7-42ac-973a-3e36b4687052n%40googlegroups.com
> <https://groups.google.com/d/msgid/v8-dev/45317061-acd7-42ac-973a-3e36b4687052n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-dev/CAH3p7oNZgYA3fJAKxq3Vy9-GOFavqYX0SwNPF03XcXb4LqMBZw%40mail.gmail.com.

Reply via email to