[package] name = "tracexec" version = "0.8.0" edition = "2021" authors = ["Levi Zim "] 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" exclude = ["/casts", "/screenshots"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [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" lazy_static = "1.4.0" 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.13.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 exists here because we want to control its features libbpf-sys = { version = "1", optional = true, default-features = false } libseccomp = { version = "0.3.0", optional = true } # tui-prompts = { version = "0.3.11", path = "../../contrib/tui-prompts" } # tui-popup = { version = "0.3.0", path = "../../contrib/tui-popup" } [dev-dependencies] assert_cmd = "2.0.14" predicates = "3.1.0" rstest = "0.22.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"] # The ebpf-debug feature is not meant for end users. # This feature also has a bug: # Building with --release after building --release -F ebpf-debug # produces binaries with ebpf-debug enabled! # Either cargo doesn't rebuild and run build.rs on feature flag change, # or some logic is wrong in build.rs ebpf-debug = ["ebpf"] ebpf-no-rcu-kfuncs = ["ebpf"] # Avoid using rcu helpers. Necessary for kernel version < 6.2 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"