-
Notifications
You must be signed in to change notification settings - Fork 474
TODO
Namhyung Kim edited this page Aug 13, 2018
·
24 revisions
- field customization (runtime) : report and graph
- report field sorting
- move focus to center
- compiler support free tracing without recompilation.
- It requires to decode each instruction and emulate.
- We can record uftrace data from other programs such as JITed trace from V8.
- We need a way to integrate this kind of record into uftrace data format.
- We can record twice and compare the summary using
report --diff
as of now. - We can also compare the call graph diff to identify the specific difference in details.
- We may provide another GUI output for showing the diff efficiently.
- drawing various charts using
matplotlib
.
- drawing malloc and free to see memory allocation graph
- drawing RSS charts by using read trigger
- many others... - event handing in (python) script
- collecting useful scripts
- such as tools in https://github.com/brendangregg/perf-tools
- current trigger action is called only at function entry
- reuse
-R
option to allow it called at function exit
- Currently, showing chrome trace output requires many steps.
-uftrace record
->uftrace dump --chrome
-> gotochrome://tracing
-> pressLoad
to open file - I would like to make it as the following steps
-uftrace record
->uftrace chrome
-> it shows a URL link -> goto the link in any other remote machine. - It requires integrating chrome trace viewer inside uftrace repo.
- It also requires to write a simple node script to provide a web link.
- The following node program can simply host html trace file on browser
- https://stackoverflow.com/a/8427954/921491 - It's mainly to make it simple to use for general users.
- We need to implement a way to trigger tracing on and off using signal or socket.
- I prefer implementing in socket so that it can be used in embedded system.
- It can be used with
recv
command. - We can trace multiple processes with data file merge feature.
- understanding STL containers
- std::string (done!)
- std::vector, std::list, std::shared_ptr, std::unique_ptr, etc...
- dl-library linked or not?
- Rust or Go ?
- Python (interpreter + script) : #436
- JavaScript (need to modify engine itself)
- value filter
- size filter
- caller filter : #166
- (source) location filter
- automatic color for each context (kernel, library, event)
-
--help
with pager - more auto completion
- We can see meaningful enough library functions without user functions.
- We don't miss some important library calls.
- We can remove the restriction of recompiling with
-pg
or-finstrument-functions
. - done: #141
- merged: c618ccc
- arguments / retval support for python #144
- option handling in python script (in order to make a given script self-contained)
- script filter (e.g. @script= ) or in-script filter
- merged: 66d5e54
- We can do this for some known functions such as
malloc
andfree
. - Some functions that use
char*
string such asstrcpy
andexecv
can show eye-catch string output. - We can support some functions at the beginning and incrementally add one by one.
- As a first step, we can simply provide an option file that contains a list of
-A
and-R
options for specific functions. - We can also provide library's return value checker. (such as if
malloc
returns NULL in some cases) - done: #158
- currently regex and glob matching is used in a mix
- support to select regex, glob or simple substring match based on user's chioce
- consolidate similar options so users don't need to type function name multiple times
- merged: 826687d1
- current console based UI lacks user interaction
- maybe (ncurses-based) TUI can be added
- done: #326
- it can be used to specify argument and return value automatically
- it provides source location info (file:line)
- it might be used as a new filter option - (e.g. filter all functions in this file)
- done: #174
- Home
- Tutorial
- Development
- Practical Use Cases
- GCC
- Clang/LLVM
- Node.js
- Chromium
- MySQL/InnoDB
- FFmpeg
- CPython
- POCO
- Telegram
- yara
- RustPython
- cURL
- bpftrace
- SpiderMonkey
- Apache HTTP Server
- GStreamer
- Squid
- TCPDUMP
- OpenCV
- Libav
- Wireshark
- LXC
- Git
- Radare2
- uftrace on Android
- deno
- parallel sort algorithm
- LevelDB/RocksDB (YCSB)
- Redis
- libjpeg‐turbo (JPEG)
- JM (H.264/AVC)
- HM (HEVC)
- VTM (VVC)
- CUDA
- Erlang/OTP BEAM
- uftrace on Yocto
- TTCN3