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.
