Skip to content

Commit

Permalink
tools: bpftool: add -d option to get debug output from libbpf
Browse files Browse the repository at this point in the history
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.
- Add option description to all bpftool manual pages (instead of
  bpftool-prog.rst only), as all commands use libbpf.

Signed-off-by: Quentin Monnet <[email protected]>
Reviewed-by: Jakub Kicinski <[email protected]>
Signed-off-by: Daniel Borkmann <[email protected]>
  • Loading branch information
qmonnet authored and borkmann committed May 28, 2019
1 parent d98363b commit 775bc8a
Show file tree
Hide file tree
Showing 10 changed files with 45 additions and 2 deletions.
4 changes: 4 additions & 0 deletions tools/bpf/bpftool/Documentation/bpftool-btf.rst
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,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**
Expand Down
4 changes: 4 additions & 0 deletions tools/bpf/bpftool/Documentation/bpftool-cgroup.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
========
|
Expand Down
4 changes: 4 additions & 0 deletions tools/bpf/bpftool/Documentation/bpftool-feature.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
4 changes: 4 additions & 0 deletions tools/bpf/bpftool/Documentation/bpftool-map.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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**
Expand Down
4 changes: 4 additions & 0 deletions tools/bpf/bpftool/Documentation/bpftool-net.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
========

Expand Down
4 changes: 4 additions & 0 deletions tools/bpf/bpftool/Documentation/bpftool-perf.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
========

Expand Down
4 changes: 4 additions & 0 deletions tools/bpf/bpftool/Documentation/bpftool-prog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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**
Expand Down
3 changes: 3 additions & 0 deletions tools/bpf/bpftool/Documentation/bpftool.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
========
Expand Down
2 changes: 1 addition & 1 deletion tools/bpf/bpftool/bash-completion/bpftool
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,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
Expand Down
14 changes: 13 additions & 1 deletion tools/bpf/bpftool/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <string.h>

#include <bpf.h>
#include <libbpf.h>

#include "main.h"

Expand Down Expand Up @@ -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))
{
Expand Down Expand Up @@ -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;
Expand All @@ -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':
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 775bc8a

Please sign in to comment.