[clang-tools-extra] r325097 - [clangd] Configure clangd tracing with CLANGD_TRACE env instead of -trace flag

Sam McCall via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 14 23:29:19 PST 2018


On Wed, Feb 14, 2018 at 10:45 AM Ilya Biryukov <ibiryukov at google.com> wrote:

> Personally, I'm not a big fan of environment variables. There are harder
> to discover than command-line flags and I still have to change editor
> config often to switch between different builds of clangd.
> I know it may sound weird, but maybe we could have both the flag and the
> environment variables? (flag taking the precedence if both are specified)
>
Do you use tracing often? Can you describe your workflow?

(Less concerned about discoverability - this was always a hidden flag
anyway)


> On Wed, Feb 14, 2018 at 4:22 AM Sam McCall via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> Author: sammccall
>> Date: Tue Feb 13 19:20:07 2018
>> New Revision: 325097
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=325097&view=rev
>> Log:
>> [clangd] Configure clangd tracing with CLANGD_TRACE env instead of -trace
>> flag
>>
>> Modified:
>>     clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp
>>     clang-tools-extra/trunk/test/clangd/trace.test
>>
>> Modified: clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp?rev=325097&r1=325096&r2=325097&view=diff
>>
>> ==============================================================================
>> --- clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp (original)
>> +++ clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp Tue Feb 13
>> 19:20:07 2018
>> @@ -17,6 +17,7 @@
>>  #include "llvm/Support/Path.h"
>>  #include "llvm/Support/Program.h"
>>  #include "llvm/Support/raw_ostream.h"
>> +#include <cstdlib>
>>  #include <iostream>
>>  #include <memory>
>>  #include <string>
>> @@ -123,12 +124,6 @@ static llvm::cl::opt<Path> InputMirrorFi
>>          "Mirror all LSP input to the specified file. Useful for
>> debugging."),
>>      llvm::cl::init(""), llvm::cl::Hidden);
>>
>> -static llvm::cl::opt<Path> TraceFile(
>> -    "trace",
>> -    llvm::cl::desc(
>> -        "Trace internal events and timestamps in chrome://tracing JSON
>> format"),
>> -    llvm::cl::init(""), llvm::cl::Hidden);
>> -
>>  static llvm::cl::opt<bool> EnableIndexBasedCompletion(
>>      "enable-index-based-completion",
>>      llvm::cl::desc(
>> @@ -176,15 +171,18 @@ int main(int argc, char *argv[]) {
>>      }
>>    }
>>
>> -  // Setup tracing facilities.
>> +  // Setup tracing facilities if CLANGD_TRACE is set. In practice
>> enabling a
>> +  // trace flag in your editor's config is annoying, launching with
>> +  // `CLANGD_TRACE=trace.json vim` is easier.
>>    llvm::Optional<llvm::raw_fd_ostream> TraceStream;
>>    std::unique_ptr<trace::EventTracer> Tracer;
>> -  if (!TraceFile.empty()) {
>> +  if (auto *TraceFile = getenv("CLANGD_TRACE")) {
>>      std::error_code EC;
>>      TraceStream.emplace(TraceFile, /*ref*/ EC, llvm::sys::fs::F_RW);
>>      if (EC) {
>> -      TraceFile.reset();
>> -      llvm::errs() << "Error while opening trace file: " << EC.message();
>> +      TraceStream.reset();
>> +      llvm::errs() << "Error while opening trace file " << TraceFile <<
>> ": "
>> +                   << EC.message();
>>      } else {
>>        Tracer = trace::createJSONTracer(*TraceStream, PrettyPrint);
>>      }
>>
>> Modified: clang-tools-extra/trunk/test/clangd/trace.test
>> URL:
>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clangd/trace.test?rev=325097&r1=325096&r2=325097&view=diff
>>
>> ==============================================================================
>> --- clang-tools-extra/trunk/test/clangd/trace.test (original)
>> +++ clang-tools-extra/trunk/test/clangd/trace.test Tue Feb 13 19:20:07
>> 2018
>> @@ -1,4 +1,4 @@
>> -# RUN: clangd -lit-test -trace %t < %s && FileCheck %s < %t
>> +# RUN: CLANGD_TRACE=%t clangd -lit-test < %s && FileCheck %s < %t
>>
>>  {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}}
>>  ---
>>  {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo.c","languageId":"c","version":1,"text":"void
>> main() {}"}}}
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
>
> --
> Regards,
> Ilya Biryukov
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180215/2d7a7e54/attachment.html>


More information about the cfe-commits mailing list