fidlcat


fidlcat [ <options> ] [ command [args] ] fidlcat will run the specified command until it exits. It will intercept and record all fidl calls invoked by the process. The command may be of the form "run <component URL>", in which case the given component will be launched. fidlcat will return the code 1 if its parameters are invalid. fidlcat expects a debug agent to be running on the target device. It will return the code 2 if it cannot connect to the debug agent.

Options:


--build-id-dir=<path> Adds the given directory to the symbol search path. Multiple --build-id-dir switches can be passed to add multiple directories. The directory must have the same structure as a .build-id directory, that is, each symbol file lives at xx/yyyyyyyy.debug where xx is the first two characters of the build ID and yyyyyyyy is the rest. However, the name of the directory doesn't need to be .build-id. --colors=[never|auto|always] For pretty print, use colors: - never - auto: only if running in a terminal (default value) - always --columns=<size> For pretty print, width of the display. By default, on a terminal, use the terminal width. --compare=<path> Compare output with the one stored in the given file --connect The host and port of the debug agent running on the target Fuchsia instance, of the form [<ipv6_addr>]:port. --dump-messages Always display the message binary dump even if we can decode the message. By default the dump is only displayed if we can't decode the message. --exclude-messages A regular expression which selects the messages to not display. If a message method name satisfy the regexp, the message is not displayed (even if it satifies --messages). This option can be specified multiple times. Message filtering works on the method's fully qualified name. --exclude-syscalls A regular expression which selects the syscalls to not decode and display. Can be passed multiple times. To be displayed, a syscall must verify --syscalls and not verify --exclude-syscalls. To display all the syscalls but the zx_handle syscalls, use: --syscalls=".*" --exclude-syscalls="zx_handle_.*" --extra-name=<regexp> Like --remote-name, it monitors some processes. However, for these processes, monitoring starts only when one of of the "--remote-name" process is launched. Also, fidlcat stops when the last "--remote-name" process stops (even if some "--extra-name" processes are still monitored). You must specify at least one filter with --remote-name if you use this option (without --remote-name, nothing would be displayed). --fidl-ir-path=<path>|@argfile Adds the given path as a repository for FIDL IR, in the form of .fidl.json files. Passing a file adds the given file. Passing a directory adds all of the .fidl.json files in that directory and any directory transitively reachable from there. An argfile contains a newline-separated list of .fidl.json files relative to the directory containing the argfile; passing an argfile (starting with the '@' character) adds all files listed in that argfile. This switch can be passed multiple times to add multiple locations. --format=<output> This option must be used at most once. The output format can be: --format=pretty The session is pretty printed (with colors). This is the default output is --with is not used. --format=json The session is printed using a json format. --format=textproto The session is printed using a text protobuf format. --format=none Nothing is displayed on the standard output (this option only makes sense when used with --to=<path> or with --with). When there is no output, fidlcat is much faster (this is better when you want to monitor real time components). This is the default output is --with is used. --from=<source> This option must be used at most once. Source can be: --from=device This is the default input. The input comes from the live monitoring of one or several processes. At least one of '--remote-pid', '--remote-name', 'run' must be specified. --from=<path> The input comes from a previously recorded session (protobuf format). Path gives the name of the file to read. If path is '-' then the standard input is used. --help -h Prints all command-line switches. --ids-txt=<path> Adds the given file to the symbol search path. Multiple --ids-txt switches can be passed to add multiple files. The file, typically named "ids.txt", serves as a mapping from build ID to symbol file path and should contain multiple lines in the format of "<build ID> <file path>". --log-file=<pathspec> The name of a file to which the log should be written. --messages A regular expression which selects the messages to display. To display a message, the method name must satisfy the regexp. This option can be specified multiple times. Message filtering works on the method's fully qualified name. --quiet=<number or log level> The log verbosity. Legal values are "info", "warning", "error", "fatal", or a number, starting from 0. Extra verbosity comes with lower levels. --quit-agent-on-exit Will send a quit message to a connected debug agent in order for it to shutdown. This is so that fidlcat doesn't leak unwanted debug agents on "on-the-fly" debugging sessions. --remote-name=<regexp> -f <regexp> Adds a filter to the default job that will cause fidlcat to attach to existing or future processes whose names match this regexp. For example: --remote-name echo_client.*.cmx --remote-name echo_client Multiple filters can be specified to match more than one process. --remote-pid The koid of the remote process. Can be passed multiple times. --stack=<value> The amount of stack frame to display: - 0: no stack (default value) - 1: call site (1 to 4 levels) - 2: full stack frame (adds some overhead) --stay-alive Don't quit fidlcat when all the monitored processes have ended. This allows to keep monitoring upcoming process. At the end you have to use control-c to quit fidlcat. This is useful when you monitor a process and restart this process. --symbol-cache=<path> Directory where we can keep a symbol cache. If a symbol server has been specified, downloaded symbols will be stored in this directory. The directory structure will be the same as a .build-id directory, and symbols will be read from this location as though you had specified "--build-id-dir=<path>". --symbol-index=<path> Populates --ids-txt and --build-id-dir using the given symbol-index file, which defaults to ~/.fuchsia/debug/symbol-index. The file should be created and maintained by the "symbol-index" host tool. --symbol-path=<path> -s <path> Adds the given directory or file to the symbol search path. Multiple -s switches can be passed to add multiple locations. When a directory path is passed, the directory will be enumerated non-recursively to index all ELF files. When a file is passed, it will be loaded as an ELF file (if possible). --symbol-server=<url> Adds the given URL to symbol servers. Symbol servers host the debug symbols for prebuilt binaries and dynamic libraries. --syscalls A regular expression which selects the syscalls to decode and display. Can be passed multiple times. By default, only zx_channel_.* syscalls are displayed. To display all the syscalls, use: --syscalls=".*" --thread Only display the events for the specified thread. This option can be specified multiple times to display several threads. By default all the events are displayed. --to=<path> Save the session using protobuf in the specified file. All events are saved including the messages which have been filtered out by --messages or --exclude-messages. --trigger Start displaying messages and syscalls only when a message for which the method name satisfies the filter is found. This option can be specified multiple times. Message filtering works on the method's fully qualified name. --verbose=<number or log level> The log verbosity. Legal values are "info", "warning", "error", "fatal", or a number, starting from 0. Extra verbosity comes with higher levels --version Prints the version. --with-process-info Display the process name, process id and thread id on each line. These options can be used several times. --with=summary At the end of the session, a summary of the session is displayed on the standard output. --with=summary=<path> Like --with=summary but the result is stored into the file specified by <path>. --with=top At the end of the session, generate a view that groups the output by process, protocol, and method. The groups are sorted by number of events, so groups with more associated events are listed earlier. --with=top=<path> Like --with=top but the result is stored into the file specified by <path>. --with=group-by-thread Like For each thread, display a short version of all the events. --with=group-by-thread=<path> Like --with=group-by-thread but the result is stored into the file specified by <path>.