Re: [PATCH bpf-next v2 1/3] tools: bpftool: add -d option to get debug output from libbpf

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 23, 2019 at 3:54 AM Quentin Monnet
<quentin.monnet@xxxxxxxxxxxxx> wrote:
>
> libbpf has three levels of priority for output messages: warn, info,
> debug. By default, debug output is not printed to the console.
>
> Add a new "--debug" (short name: "-d") option to bpftool to print libbpf
> logs for all three levels.
>
> Internally, we simply use the function provided by libbpf to replace the
> default printing function by one that prints logs regardless of their
> level.
>
> v2:
> - Remove the possibility to select the log-levels to use (v1 offered a
>   combination of "warn", "info" and "debug").
> - Rename option and offer a short name: -d|--debug.

Such and option in CLI tools is usually called -v|--verbose, I'm
wondering if it might be a better name choice?

Btw, some tools also use -v, -vv and -vvv to define different levels
of verbosity, which is something we can consider in the future, as
it's backwards compatible.

> - Add option description to all bpftool manual pages (instead of
>   bpftool-prog.rst only), as all commands use libbpf.
>
> Signed-off-by: Quentin Monnet <quentin.monnet@xxxxxxxxxxxxx>
> Reviewed-by: Jakub Kicinski <jakub.kicinski@xxxxxxxxxxxxx>
> ---
>  tools/bpf/bpftool/Documentation/bpftool-btf.rst    |  4 ++++
>  tools/bpf/bpftool/Documentation/bpftool-cgroup.rst |  4 ++++
>  .../bpf/bpftool/Documentation/bpftool-feature.rst  |  4 ++++
>  tools/bpf/bpftool/Documentation/bpftool-map.rst    |  4 ++++
>  tools/bpf/bpftool/Documentation/bpftool-net.rst    |  4 ++++
>  tools/bpf/bpftool/Documentation/bpftool-perf.rst   |  4 ++++
>  tools/bpf/bpftool/Documentation/bpftool-prog.rst   |  4 ++++
>  tools/bpf/bpftool/Documentation/bpftool.rst        |  3 +++
>  tools/bpf/bpftool/bash-completion/bpftool          |  2 +-
>  tools/bpf/bpftool/main.c                           | 14 +++++++++++++-
>  10 files changed, 45 insertions(+), 2 deletions(-)
>
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-btf.rst b/tools/bpf/bpftool/Documentation/bpftool-btf.rst
> index 2dbc1413fabd..00668df1bf7a 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-btf.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-btf.rst
> @@ -67,6 +67,10 @@ OPTIONS
>         -p, --pretty
>                   Generate human-readable JSON output. Implies **-j**.
>
> +       -d, --debug
> +                 Print all logs available from libbpf, including debug-level
> +                 information.
> +
>  EXAMPLES
>  ========
>  **# bpftool btf dump id 1226**
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst b/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst
> index ac26876389c2..36807735e2a5 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst
> @@ -113,6 +113,10 @@ OPTIONS
>         -f, --bpffs
>                   Show file names of pinned programs.
>
> +       -d, --debug
> +                 Print all logs available from libbpf, including debug-level
> +                 information.
> +
>  EXAMPLES
>  ========
>  |
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-feature.rst b/tools/bpf/bpftool/Documentation/bpftool-feature.rst
> index 14180e887082..4d08f35034a2 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-feature.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-feature.rst
> @@ -73,6 +73,10 @@ OPTIONS
>         -p, --pretty
>                   Generate human-readable JSON output. Implies **-j**.
>
> +       -d, --debug
> +                 Print all logs available from libbpf, including debug-level
> +                 information.
> +
>  SEE ALSO
>  ========
>         **bpf**\ (2),
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-map.rst b/tools/bpf/bpftool/Documentation/bpftool-map.rst
> index 13ef27b39f20..490b4501cb6e 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-map.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-map.rst
> @@ -152,6 +152,10 @@ OPTIONS
>                   Do not automatically attempt to mount any virtual file system
>                   (such as tracefs or BPF virtual file system) when necessary.
>
> +       -d, --debug
> +                 Print all logs available from libbpf, including debug-level
> +                 information.
> +
>  EXAMPLES
>  ========
>  **# bpftool map show**
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-net.rst b/tools/bpf/bpftool/Documentation/bpftool-net.rst
> index 934580850f42..d8e5237a2085 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-net.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-net.rst
> @@ -65,6 +65,10 @@ OPTIONS
>         -p, --pretty
>                   Generate human-readable JSON output. Implies **-j**.
>
> +       -d, --debug
> +                 Print all logs available from libbpf, including debug-level
> +                 information.
> +
>  EXAMPLES
>  ========
>
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-perf.rst b/tools/bpf/bpftool/Documentation/bpftool-perf.rst
> index 0c7576523a21..e252bd0bc434 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-perf.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-perf.rst
> @@ -53,6 +53,10 @@ OPTIONS
>         -p, --pretty
>                   Generate human-readable JSON output. Implies **-j**.
>
> +       -d, --debug
> +                 Print all logs available from libbpf, including debug-level
> +                 information.
> +
>  EXAMPLES
>  ========
>
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-prog.rst b/tools/bpf/bpftool/Documentation/bpftool-prog.rst
> index e8118544d118..9a92614569e6 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-prog.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-prog.rst
> @@ -174,6 +174,10 @@ OPTIONS
>                   Do not automatically attempt to mount any virtual file system
>                   (such as tracefs or BPF virtual file system) when necessary.
>
> +       -d, --debug
> +                 Print all logs available from libbpf, including debug-level
> +                 information.
> +
>  EXAMPLES
>  ========
>  **# bpftool prog show**
> diff --git a/tools/bpf/bpftool/Documentation/bpftool.rst b/tools/bpf/bpftool/Documentation/bpftool.rst
> index 3e562d7fd56f..43dba0717953 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool.rst
> @@ -66,6 +66,9 @@ OPTIONS
>                   Do not automatically attempt to mount any virtual file system
>                   (such as tracefs or BPF virtual file system) when necessary.
>
> +       -d, --debug
> +                 Print all logs available from libbpf, including debug-level
> +                 information.
>
>  SEE ALSO
>  ========
> diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool
> index 50e402a5a9c8..3a476e25d046 100644
> --- a/tools/bpf/bpftool/bash-completion/bpftool
> +++ b/tools/bpf/bpftool/bash-completion/bpftool
> @@ -181,7 +181,7 @@ _bpftool()
>
>      # Deal with options
>      if [[ ${words[cword]} == -* ]]; then
> -        local c='--version --json --pretty --bpffs --mapcompat'
> +        local c='--version --json --pretty --bpffs --mapcompat --debug'
>          COMPREPLY=( $( compgen -W "$c" -- "$cur" ) )
>          return 0
>      fi
> diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c
> index 1ac1fc520e6a..d74293938a05 100644
> --- a/tools/bpf/bpftool/main.c
> +++ b/tools/bpf/bpftool/main.c
> @@ -10,6 +10,7 @@
>  #include <string.h>
>
>  #include <bpf.h>
> +#include <libbpf.h>
>
>  #include "main.h"
>
> @@ -77,6 +78,13 @@ static int do_version(int argc, char **argv)
>         return 0;
>  }
>
> +static int __printf(2, 0)
> +print_all_levels(__maybe_unused enum libbpf_print_level level,
> +                const char *format, va_list args)
> +{
> +       return vfprintf(stderr, format, args);
> +}
> +
>  int cmd_select(const struct cmd *cmds, int argc, char **argv,
>                int (*help)(int argc, char **argv))
>  {
> @@ -317,6 +325,7 @@ int main(int argc, char **argv)
>                 { "bpffs",      no_argument,    NULL,   'f' },
>                 { "mapcompat",  no_argument,    NULL,   'm' },
>                 { "nomount",    no_argument,    NULL,   'n' },
> +               { "debug",      no_argument,    NULL,   'd' },
>                 { 0 }
>         };
>         int opt, ret;
> @@ -332,7 +341,7 @@ int main(int argc, char **argv)
>         hash_init(map_table.table);
>
>         opterr = 0;
> -       while ((opt = getopt_long(argc, argv, "Vhpjfmn",
> +       while ((opt = getopt_long(argc, argv, "Vhpjfmnd",
>                                   options, NULL)) >= 0) {
>                 switch (opt) {
>                 case 'V':
> @@ -362,6 +371,9 @@ int main(int argc, char **argv)
>                 case 'n':
>                         block_mount = true;
>                         break;
> +               case 'd':
> +                       libbpf_set_print(print_all_levels);
> +                       break;
>                 default:
>                         p_err("unrecognized option '%s'", argv[optind - 1]);
>                         if (json_output)
> --
> 2.17.1
>



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux