[workspace]
resolver = "2"
members = [
"crates/perfetto-trace-proto",
"crates/tracexec-backend-ebpf",
"crates/tracexec-backend-ptrace",
"crates/tracexec-core",
"crates/tracexec-exporter-json",
"crates/tracexec-exporter-perfetto",
"crates/tracexec-tui",
]
[workspace.package]
repository = "https://github.com/kxxt/tracexec"
homepage = "https://github.com/kxxt/tracexec"
keywords = ["trace", "ptrace", "exec", "execve", "utility"]
readme = "README.md"
license = "GPL-2.0-or-later"
edition = "2024"
rust-version = "1.88"
version = "0.16.1"
[workspace.dependencies]
perfetto-trace-proto = { path = "crates/perfetto-trace-proto", version = "0.1.0" }
tracexec-backend-ptrace = { path = "crates/tracexec-backend-ptrace", version = "=0.16.1" }
tracexec-backend-ebpf = { path = "crates/tracexec-backend-ebpf", default-features = false, version = "=0.16.1" }
tracexec-exporter-json = { path = "crates/tracexec-exporter-json", version = "=0.16.1" }
tracexec-exporter-perfetto = { path = "crates/tracexec-exporter-perfetto", version = "=0.16.1" }
tracexec-core = { path = "crates/tracexec-core", version = "=0.16.1" }
tracexec-tui = { path = "crates/tracexec-tui", version = "=0.16.1" }
shell-quote = { version = "0.7.1" }
serde = { version = "1.0.204", features = ["derive", "rc"] }
serde_json = "1.0.120"
tracing = { version = "0.1.40", features = ["release_max_level_info"] }
color-eyre = "0.6.2"
nix = { version = "0.30", features = [
"ptrace",
"process",
"feature",
"term",
"fs",
"signal",
"user",
] }
nutype = { version = "0.6.1", features = ["serde"] }
owo-colors = { version = "4.0.0", package = "kxxt-owo-colors", features = [
"global-colorized-control",
] }
either = "1.12.0"
snafu = { version = "0.8.8", features = ["rust_1_81", "backtrace"] }
strum = { version = "0.27.1", features = ["derive"] }
cfg-if = "1.0.0"
chrono = "0.4.40"
tokio = { version = "1.37.0", features = ["full"] }
clap = { version = "4.4.6", features = ["derive"] }
itertools = "0.14.0"
hashbrown = "0.16"
bytes = "1.6.0"
prost = "0.14.1"
bitflags = "2.5.0"
enumflags2 = "0.7.9"
futures = "0.3.30"
crossterm = { version = "0.29", features = ["event-stream"] }
predicates = "3.1.0"
rstest = "0.26.0"
tracing-test = "0.2.4"
serial_test = { version = "3.1.1", features = ["file_locks"] }
rusty-fork = "0.3.1"
[workspace.lints.clippy]
all = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
option_if_let_else = "allow"
missing_errors_doc = "allow"
missing_const_for_fn = "allow"
significant_drop_tightening = "allow"
[package]
name = "tracexec"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
readme.workspace = true
repository.workspace = true
homepage.workspace = true
keywords.workspace = true
authors = ["Levi Zim <rsworktech@outlook.com>"]
description = "Tracer for execve{,at} and pre-exec behavior, launcher for debuggers."
categories = ["command-line-utilities", "development-tools::debugging"]
default-run = "tracexec"
exclude = ["/casts", "/screenshots"]
[dependencies]
color-eyre = { workspace = true }
tracing = { workspace = true }
tokio = { workspace = true }
nix = { workspace = true }
clap = { workspace = true }
owo-colors = { workspace = true }
hashbrown = { workspace = true }
itertools = { workspace = true }
serde = { workspace = true }
strum = { workspace = true }
futures = { workspace = true }
enumflags2 = { workspace = true }
atoi = "2.0.0"
tracing-error = "0.2.0"
tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
signal-hook = { version = "0.4", default-features = false }
better-panic = "0.3.0"
filedescriptor = "0.8.2"
rand = "0.9"
signal-hook-tokio = { version = "0.3.1", features = ["futures-v0_3"] }
tracexec-exporter-json = { workspace = true }
tracexec-exporter-perfetto = { workspace = true }
tracexec-core = { workspace = true }
tracexec-tui = { workspace = true }
tracexec-backend-ptrace = { workspace = true }
tracexec-backend-ebpf = { workspace = true, optional = true }
[dev-dependencies]
assert_cmd = "2.0.14"
serial_test = { workspace = true }
predicates = { workspace = true }
[features]
default = ["recommended", "vendored-libbpf"]
recommended = ["ebpf"]
ebpf = ["dep:tracexec-backend-ebpf"]
ebpf-debug = ["ebpf", "tracexec-backend-ebpf/ebpf-debug"]
ebpf-no-rcu-kfuncs = [
"ebpf",
"tracexec-backend-ebpf/ebpf-no-rcu-kfuncs",
]
static = ["tracexec-backend-ebpf?/static"]
vendored = ["tracexec-backend-ebpf?/vendored"]
vendored-libbpf = ["tracexec-backend-ebpf?/vendored-libbpf"]
protobuf-binding-from-source = [
"tracexec-exporter-perfetto/protobuf-binding-from-source",
]
[profile.dev]
opt-level = 1
[profile.release]
lto = true
[profile.profiling]
inherits = "release"
debug = 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"
[[bin]]
name = "exec-stress"
path = "fixtures/exec-stress.rs"