Generate CPU FlameGraphs based on DWARF Debug Info

Overview

torch

A script that glues perf CPU sampling and Brendan Gregg's visualizer to generate FlameGraphs.

Requirements

Linux 3.7 and above

Usage

#./torch.sh -h
Usage: ./torch.sh [options] pid

Options:
-d, --duration <num>  duration of sampling in seconds [default: 10]
-o, --output <file>   file to save flamegraph to [default: ./flamegraph.svg]
-h, --help            this message

Examples

Click graph to zoom

A loop printing stuff (source) loop Tcp Echo Server (source) with coio-rs tcp-echo-server HTTP Hello World (source) with hyper http-hello-world

License

MIT CDDL

You might also like...
A personal etude into rust software (RPG-it's more fun to debug) development: Tales of the Great White Moose

TGWM (Tales of the Great White Moose) NB: Currently compiles. Should compile and run on both 1.28.0 and 1.31.1 if the Cargo.lock files are deleted. A

VSCode debug extension for probe-rs. It uses the MS DAP protocol to communicate directly with the probe (via probe-rs), and supports basic command line debugging in addition to VSCode UI.
VSCode debug extension for probe-rs. It uses the MS DAP protocol to communicate directly with the probe (via probe-rs), and supports basic command line debugging in addition to VSCode UI.

VSCode debug extension for probe-rs. It uses the MS DAP protocol to communicate directly with the probe (via probe-rs), and supports basic command line debugging in addition to VSCode UI.

A newtype wrapper that causes Debug impls to skip a field.

debug-ignore This library contains DebugIgnore, a newtype wrapper that causes a field to be skipped while printing out Debug output. Examples use debu

`Debug` in rust, but only supports valid rust syntax and outputs nicely formatted using pretty-please
`Debug` in rust, but only supports valid rust syntax and outputs nicely formatted using pretty-please

dbg-pls A Debug-like trait for rust that outputs properly formatted code Showcase Take the following code: let code = r#" [ "Hello, World!

Unicorn Emulator Debug Server - Written in Rust, with bindings of C, Go, Java and Python

udbserver - Unicorn Emulator Debug Server When you do emulation with Unicorn Engine, do you want to inspect the inner state during every step? udbserv

A TUI front-end for the Debug Adapter Protocol.

Pesticide A TUI front-end for the Debug Adapter Protocol. Motivation I am an avid kakoune user. Kak is a very niche text editor with few users. As suc

πŸš€simple server that returns error codes with their respective messages and debug information, written in rust πŸ¦€
πŸš€simple server that returns error codes with their respective messages and debug information, written in rust πŸ¦€

ErrorServer πŸš€ A simple & lightweight server that returns a HTML page of the error code with its respective message and debug information, written in

Downloads and provides debug symbols and source code for nix derivations to gdb and other debuginfod-capable debuggers as needed.

nixseparatedebuginfod Downloads and provides debug symbols and source code for nix derivations to gdb and other debuginfod-capable debuggers as needed

`ls` alternative with useful info and a splash of color 🎨
`ls` alternative with useful info and a splash of color 🎨

🎨 Natls 🎨 Why Natls? Showing file permissions Showing file size Showing the date that the file was modified last Showing the user that the file belo

A program written in pure Rust to query music info from mpd and display it in a notification.
A program written in pure Rust to query music info from mpd and display it in a notification.

musinfo A program written in pure Rust to query music info from mpd and display it in a notification. Note: Cover art is expected to be placed at /tmp

Getting the token's holder info and pushing to a web server.

Purpose of this program I've made this web scraper so you can use it to get the holder's amount from BSCscan and it will upload for you in JSON format

A super simple prompt for Fish shell, just shows git info and Vi mode.
A super simple prompt for Fish shell, just shows git info and Vi mode.

vifi is a portmandeau of 'Vi' and 'Fish', because it's a prompt for Fish shell, primarily focused around showing proper indicators when using Vi key bindings.

qfetch is a tool that fetches info about your linux install.

qfetch qfetch is a tool that fetches info about your linux install. Status Dependencies /proc/meminfo with the following fields: MemTotal in the 1st l

Decode SCALE bytes into custom types using a scale-info type registry and a custom Visitor impl.

scale-decode This crate attempts to simplify the process of decoding SCALE encoded bytes into a custom data structure given a type registry (from scal

βš‘πŸ¦€ Yet another rust system info fetcher.
βš‘πŸ¦€ Yet another rust system info fetcher.

Yarsi: Yet another rust sys info fetcher ✨ Showcase requirements πŸ™€ cargo πŸ¦€ install with $ curl https://sh.rustup.rs -sSf | sh installation β€οΈβ€πŸ©Ή Ya

A simple to use rust package to generate or parse Twitter snowflake IDs,generate time sortable 64 bits unique ids for distributed systems

A simple to use rust package to generate or parse Twitter snowflake IDs,generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)

A cpu-based raytracer written in rust.

mini-raytracer A cpu-based raytracer written in rust. This project was written by me to learn about computer graphics, specifically rayracing. Feature

πŸπŸ¦€πŸ”₯ An ebpf based CPU profiler written in Rust

profile-bee 🐝 πŸ¦€ πŸ”₯ Profile Bee is an eBPF based CPU profiler written in Rust for performance and efficiency. Aya is used for building the BPF progra

Small and simple CLI app to generate .editorconfig based on a given settings.

add-editorconfig Small and simple CLI app to generate .editorconfig based on a given settings. Usage # Will create an .editorconfig in the current dir

Comments
  • Make the script callable from anywhere

    Make the script callable from anywhere

    Currently torch.sh can only be called by going to the program directory and running ./torch.sh directly. This isn't useful when using other build scripts that automatically generate flamegraphs. Thus, I propose this as a solution that allows both local usage as well as PATH-compatible usage.

    All three scripts need to be in the same path in order to work, as I've not implemented link following.

    opened by BourgondAries 0
  • Greatly improved compatibility by using bash

    Greatly improved compatibility by using bash

    On systems where sh isn't just a link to bash, using a sh shebang doesn't work. This changes it to explicitly use a bash shebang instead of a sh shebang, which improves compatibility with many linux distros.

    opened by iirelu 0
Owner
Rui Hu
Rui Hu
DWARF packaging utility, written in Rust, supporting GNU extension and DWARF 5 package formats.

thorin thorin is an DWARF packaging utility for creating DWARF packages (*.dwp files) out of input DWARF objects (*.dwo files; or *.o files with .dwo

The Rust Programming Language 19 Nov 16, 2022
`nm` and `addr2line` but for DI "debug-info" COFF files

Summary This is a very simple tool that prints out function, global, and source line information from a .dbg "DI" COFF debug file. This can handle bot

null 7 Dec 18, 2022
Binary Ninja plugin written in Rust to automatically apply symbol information from split debug info on Linux.

Load Symbols Binary Ninja plugin written in Rust to automatically apply symbol information from split debug info on Linux. Requirements Last tested wi

null 4 Jul 20, 2022
A lib crate for gathering system info such as cpu, distro, environment, kernel, etc in Rust.

nixinfo A lib crate for gathering system info such as cpu, distro, environment, kernel, etc in Rust. To use: nixinfo = "0.2.8" in your Cargo.toml. Cur

ValleyKnight 37 Nov 26, 2022
Tokio based client library for the Android Debug Bridge (adb) based on mozdevice

forensic-adb Tokio based client library for the Android Debug Bridge (adb) based on mozdevice for Rust. Documentation This code has been extracted fro

null 6 Mar 31, 2023
Dwarf Fortress inspired frontend to Veloren, the multiplayer RPG voxel game written in Rust

velobracket ('veloren' + 'bracket-lib') velobracket is Dwarf Fortress inspired frontend to Veloren, the multiplayer RPG voxel game written in Rust. Us

Rodion Martynov 13 Dec 25, 2022
Reflection via DWARF.

deflect [EXPERIMENTAL] Deflect brings reflection to Rust using DWARF debug info. Deflect can be used to recover the concrete types of trait objects, i

Jack Wrenn 206 Jan 5, 2023
dwarf is a typed, interpreted, language that shares syntax with Rust.

The dwarf Programming Language dwarf is a programming language based heavily upon, and implemented in, Rust. The language is interpreted (and slow) wi

Keith Star 17 Jul 12, 2023
A Rust Based GMod Module for finding system info.

gm_sysinfo Fetching System Information in Rust to Lua. Installation Download the Module. Compile it. Cry because it doesn't work. Spend 2 hours debugg

Joshua Piper 3 May 18, 2022
Services Info Register/KeepAlive/Publish/Subscribe. Based on etcd-rs, tokio

Services Info Register/KeepAlive/Publish/Subscribe. Based on etcd-rs, tokio

Mutalisk 5 Oct 4, 2022