[package]
name = "tracexec"
version = "0.8.2"
edition = "2021"
authors = ["Levi Zim <rsworktech@outlook.com>"]
description = "Tracer for execve{,at} and pre-exec behavior, launcher for debuggers."
license = "GPL-2.0-or-later"
readme = "README.md"
repository = "https://github.com/kxxt/tracexec"
homepage = "https://github.com/kxxt/tracexec"
keywords = ["trace", "ptrace", "exec", "execve", "utility"]
categories = ["command-line-utilities", "development-tools::debugging"]
default-run = "tracexec"
rust-version = "1.81"
exclude = ["/casts", "/screenshots"]
[dependencies]
clap = { version = "4.4.6", features = ["derive"] }
color-eyre = "0.6.2"
nix = { version = "0.29", features = [
"ptrace",
"process",
"feature",
"term",
"fs",
"signal",
"user",
] }
strum = { version = "0.26.1", features = ["derive"] }
cfg-if = "1.0.0"
owo-colors = { version = "4.0.0", package = "kxxt-owo-colors", features = [
"global-colorized-control",
] }
shell-quote = { version = "0.7.1" }
atoi = "2.0.0"
tracing = { version = "0.1.40", features = ["release_max_level_info"] }
tracing-error = "0.2.0"
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
directories = "5.0.1"
ratatui = { version = "0.29", features = ["unstable-rendered-line-info"] }
crossterm = { version = "0.28.1", features = ["event-stream"] }
tokio = { version = "1.37.0", features = ["full"] }
tokio-util = "0.7.10"
futures = "0.3.30"
signal-hook = "0.3.17"
better-panic = "0.3.0"
itertools = "0.14.0"
tui-term = "0.2.0"
filedescriptor = "0.8.2"
vt100 = "0.15.2"
bytes = "1.6.0"
filterable-enum = { version = "0.1.1" }
enumflags2 = "0.7.9"
arboard = { version = "3.3.2", default-features = false, features = [
"wayland-data-control",
] }
tui-popup = "0.6.0"
thiserror = "1.0.59"
tui-scrollview = "0.5.0"
bitflags = "2.5.0"
indexmap = "2.2.6"
tui-prompts = "0.5.0"
unicode-segmentation = "1.11.0"
unicode-width = "0.1.12"
serial_test = { version = "3.1.1", features = ["file_locks"] }
arcstr = { version = "1.2.0", features = ["serde"] }
clap_complete = "4.5.2"
regex-cursor = { version = "0.1.4", default-features = false }
shell-words = "1.1.0"
tui-widget-list = "0.13"
either = "1.12.0"
serde = { version = "1.0.204", features = ["derive"] }
toml = "0.8.14"
paste = "1.0.15"
serde_json = "1.0.120"
libbpf-rs = { version = "0.24.6", optional = true, default-features = false }
libbpf-sys = { version = "1", optional = true, default-features = false }
libseccomp = { version = "0.3.0", optional = true }
[dev-dependencies]
assert_cmd = "2.0.14"
predicates = "3.1.0"
rstest = "0.24.0"
tracing-test = "0.2.4"
[build-dependencies]
libbpf-cargo = { version = "0.24.6", default-features = false }
[features]
default = ["recommended", "vendored-libbpf"]
recommended = ["seccomp-bpf", "ebpf"]
seccomp-bpf = ["dep:libseccomp"]
ebpf = ["dep:libbpf-rs", "dep:libbpf-sys"]
ebpf-debug = ["ebpf"]
ebpf-no-rcu-kfuncs = ["ebpf"]
static = ["libbpf-sys/static"]
vendored = ["libbpf-sys/vendored", "vendored-libbpf"]
vendored-libbpf = ["libbpf-sys/vendored-libbpf", "libbpf-cargo/default"]
[profile.dev]
opt-level = 1
[profile.release]
lto = true
[[bin]]
name = "exec-file"
path = "fixtures/exec-file.rs"
[[bin]]
name = "empty-argv"
path = "fixtures/empty-argv.rs"
[[bin]]
name = "corrupted-envp"
path = "fixtures/corrupted-envp.rs"