dlb
Debug Linux kernel using Dynamic Loadable Backtracer
SYNOPSIS
dlb [OPTION…] [PROJECT [TARGET…]]
PARAMETERS
-C DIR, --directory=DIR
Change to directory DIR before reading project file.
-f FILE, --file=FILE
Read project from FILE instead of "project.dlb".
-j[N], --jobs[=N]
Allow at most N parallel jobs at once; N=0 means unlimited.
Default: 1.
--dry-run
Do everything except actually execute commands.
--trace
Print commands as they are executed.
--keep-going
Continue building as much as possible after errors.
--print-dot[=FILE]
Print dependency graph in GraphViz DOT format to FILE or stdout.
--help
Display help message and exit.
--version
Display version information and exit.
DESCRIPTION
Dlb is a generic, portable build system for software projects, emphasizing speed, correctness, and minimal dependencies. It uses plain-text project files to declaratively specify targets, their dependencies, and build commands. Unlike Make, dlb performs precise dependency tracking without full rescans on each build, enabling efficient incremental and parallel builds. Written in standard C99, it runs on any POSIX-compliant system with no external libraries required. Dlb supports multiple build environments via environment variables and generators, making it suitable for cross-compilation and complex projects. Its design avoids common pitfalls like incorrect parallel execution or stale dependencies, providing reliable results even in large codebases.
Key advantages include logarithmic-time dependency resolution, built-in support for phony targets, and extensible via shell commands. Dlb is lightweight (single binary under 1MB) and integrates well with version control systems.
CAVEATS
Dlb requires a project.dlb file; does not read Makefiles. Parallel builds may require careful command ordering to avoid races.
PROJECT FILE SYNTAX
Uses indented blocks like:
default all install
command cc -c $< -o $> $<.c
Defines inputs ($<), outputs ($>), and phony targets.
GENERATORS
Environment variable DLB_GENERATORS enables Makefile/Ninja output for integration.
HISTORY
Developed by Dr. Sebastian Weber since 2016 to overcome limitations in tools like Make. First public release in 2018; actively maintained with focus on performance optimizations.


