iovisor / bcc

BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more
Apache License 2.0
20.36k stars 3.86k forks source link

tools/profile: Add additional information to backtrace for -v option #5109

Open ekyooo opened 2 weeks ago

ekyooo commented 2 weeks ago

Add additional information and change format of backtrace

before:

      # ./profile.py
          [unknown]
          _PyDict_GetItem_KnownHash
          [unknown]
          [unknown]
          [unknown]
          [unknown]
          _PyObject_MakeTpCall
          _PyObject_CallFunction_SizeT
          [unknown]
          _PyEval_EvalFrameDefault
          PyEval_EvalCode
          [unknown]
          [unknown]
          _PyRun_SimpleFileObject
          _PyRun_AnyFileObject
          Py_RunMain
          Py_BytesMain
          __libc_start_call_main
          __libc_start_main_impl
          _start
          -                python3 (384002)
              1

          [unknown]
          [unknown]
          [unknown]
          [unknown]
          [unknown]
          [unknown]
          -                gnome-shell (2302)
              1

After:

      # ./profile.py -v
          0xffffffff92d5048e apparmor_file_permission+0x4e
          0xffffffff92d5048e apparmor_file_permission+0x4e
          0xffffffff92cdee66 security_file_permission+0x36
          0xffffffff92ae0177 rw_verify_area+0x47
          0xffffffff92ae2cdb vfs_read+0x7b
          0xffffffff92ae3dd3 ksys_read+0x73
          0xffffffff92ae3e89 __x64_sys_read+0x19
          0xffffffff92606f8a x64_sys_call+0x1ada
          0xffffffff93820daf do_syscall_64+0x7f
          0xffffffff93a00130 entry_SYSCALL_64_after_hwframe+0x78
          0x00007550cbd1ba61 [unknown] [libc.so.6 (deleted)]
          0x00006481674445d8 [unknown] [sshd]
          0x000064816740be42 [unknown] [sshd]
          0x000064816740bb19 [unknown] [sshd]
          0x0000648167448feb [unknown] [sshd]
          0x00006481673dae43 [unknown] [sshd]
          0x00006481673c1641 [unknown] [sshd]
          0x00007550cbc2a1ca [unknown] [libc.so.6 (deleted)]
          -                sshd (383707)
              1

          0x0000775b473f221a [unknown] [libgobject-2.0.so.0.8000.0]
          0x0000775b473fbf14 g_value_transform+0x44 [libgobject-2.0.so.0.8000.0]
          0x0000775b46c270f4 [unknown] [libgjs.so.0.0.0]
          0x0000775b46bfe3e3 [unknown] [libgjs.so.0.0.0]
          0x0000775b43d62369 [unknown] [libmozjs-115.so.115.10.0]
          0xae0a8c7400000000 [unknown]
          0x00007ffea963ff60 [unknown]
          -                gnome-shell (2302)
              1
Bojun-Seo commented 1 week ago

How about change the option name from --verbose to --syms or something else?

verbose is usually used to denote some logs which may useful for developers. However, the feature in this patch is intended for users, not developers.

yonghong-song commented 5 days ago

In bcc tools, --verbose is mostly used to print out the eventual bpf prog source. In a few instances, the --verbose is used to print out additional information. I think it is good idea to use an option like -a or --address in this case. We can reserve --verbose for future use.