xref: /aosp_15_r20/external/grpc-grpc/TROUBLESHOOTING.md (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker# Troubleshooting gRPC
2*cc02d7e2SAndroid Build Coastguard Worker
3*cc02d7e2SAndroid Build Coastguard WorkerThis guide is for troubleshooting gRPC implementations based on C core library (sources for most of them are living in the `grpc/grpc` repository).
4*cc02d7e2SAndroid Build Coastguard Worker
5*cc02d7e2SAndroid Build Coastguard Worker## Enabling extra logging and tracing
6*cc02d7e2SAndroid Build Coastguard Worker
7*cc02d7e2SAndroid Build Coastguard WorkerExtra logging can be very useful for diagnosing problems. All gRPC implementations based on C core library support
8*cc02d7e2SAndroid Build Coastguard Workerthe `GRPC_VERBOSITY` and `GRPC_TRACE` environment variables that can be used to increase the amount of information
9*cc02d7e2SAndroid Build Coastguard Workerthat gets printed to stderr.
10*cc02d7e2SAndroid Build Coastguard Worker
11*cc02d7e2SAndroid Build Coastguard Worker## GRPC_VERBOSITY
12*cc02d7e2SAndroid Build Coastguard Worker
13*cc02d7e2SAndroid Build Coastguard Worker`GRPC_VERBOSITY` is used to set the minimum level of log messages printed by gRPC (supported values are `DEBUG`, `INFO` and `ERROR`). If this environment variable is unset, only `ERROR` logs will be printed.
14*cc02d7e2SAndroid Build Coastguard Worker
15*cc02d7e2SAndroid Build Coastguard Worker## GRPC_TRACE
16*cc02d7e2SAndroid Build Coastguard Worker
17*cc02d7e2SAndroid Build Coastguard Worker`GRPC_TRACE` can be used to enable extra logging for some internal gRPC components. Enabling the right traces can be invaluable
18*cc02d7e2SAndroid Build Coastguard Workerfor diagnosing for what is going wrong when things aren't working as intended. Possible values for `GRPC_TRACE` are listed in [Environment Variables Overview](doc/environment_variables.md).
19*cc02d7e2SAndroid Build Coastguard WorkerMultiple traces can be enabled at once (use comma as separator).
20*cc02d7e2SAndroid Build Coastguard Worker
21*cc02d7e2SAndroid Build Coastguard Worker```
22*cc02d7e2SAndroid Build Coastguard Worker# Enable debug logs for an application
23*cc02d7e2SAndroid Build Coastguard WorkerGRPC_VERBOSITY=debug ./helloworld_application_using_grpc
24*cc02d7e2SAndroid Build Coastguard Worker```
25*cc02d7e2SAndroid Build Coastguard Worker
26*cc02d7e2SAndroid Build Coastguard Worker```
27*cc02d7e2SAndroid Build Coastguard Worker# Print information about invocations of low-level C core API.
28*cc02d7e2SAndroid Build Coastguard Worker# Note that trace logs of log level DEBUG won't be displayed.
29*cc02d7e2SAndroid Build Coastguard Worker# Also note that most tracers user log level INFO, so without setting
30*cc02d7e2SAndroid Build Coastguard Worker# GPRC_VERBOSITY accordingly, no traces will be printed.
31*cc02d7e2SAndroid Build Coastguard WorkerGRPC_VERBOSITY=info GRPC_TRACE=api ./helloworld_application_using_grpc
32*cc02d7e2SAndroid Build Coastguard Worker```
33*cc02d7e2SAndroid Build Coastguard Worker
34*cc02d7e2SAndroid Build Coastguard Worker```
35*cc02d7e2SAndroid Build Coastguard Worker# Print info from 3 different tracers, including tracing logs with log level DEBUG
36*cc02d7e2SAndroid Build Coastguard WorkerGRPC_VERBOSITY=debug GRPC_TRACE=tcp,http,api ./helloworld_application_using_grpc
37*cc02d7e2SAndroid Build Coastguard Worker```
38*cc02d7e2SAndroid Build Coastguard Worker
39*cc02d7e2SAndroid Build Coastguard WorkerKnown limitations: `GPRC_TRACE=tcp` is currently not implemented for Windows (you won't see any tcp traces).
40*cc02d7e2SAndroid Build Coastguard Worker
41*cc02d7e2SAndroid Build Coastguard WorkerPlease note that the `GRPC_TRACE` environment variable has nothing to do with gRPC's "tracing" feature (= tracing RPCs in
42*cc02d7e2SAndroid Build Coastguard Workermicroservice environment to gain insight about how requests are processed by deployment), it is merely used to enable printing
43*cc02d7e2SAndroid Build Coastguard Workerof extra logs.
44