uflow工具用于跟踪方法的进入和退出事件,并打印一个可视化的流程图,显示方法是如何进入和退出的,类似于带有断点的跟踪调试器。这对于理解Java、Perl、PHP、Python、Ruby和Tcl等高级语言中的程序流非常有用,这些语言为方法调用提供了USDT探测。
- #!/usr/bin/python
-
- from __future__ import print_function
- import argparse
- from bcc import BPF, USDT, utils
- import ctypes as ct
- import time
- import os
-
- languages = ["java", "perl", "php", "python", "ruby", "tcl"]
-
- examples = """examples:
- ./uflow -l java 185 # trace Java method calls in process 185
- ./uflow -l ruby 134 # trace Ruby method calls in process 134
- ./uflow -M indexOf -l java 185 # trace only 'indexOf'-prefixed methods
- ./uflow -C '
' -l python 180 # trace only REPL-defined methods - """
- parser = argparse.ArgumentParser(
- description="Trace method execution flow in high-level languages."