Tools: Linker, Compiler, Interpreter, Debugger, Test Software
This article is a glossary entry on the toolchain – including exam questions, core components, and tags.
In a Nutshell
- Compiler translate source code into machine-near representations.
- Linker combines object files and libraries into programs.
- Interpreter executes code directly or via bytecode/VM.
- Debugger inspects and controls runtime.
- Test software checks behavior automatically.
Compact Technical Description
Build Chain
Typical:
- Preprocessor
- Compiler (AST/IR → object code)
- Assembler
- Linker (symbol resolution, relocation, executable e.g. ELF)
Binding:
- static: library is embedded
- dynamic: library is loaded at runtime
Interpreter / VM
- Tree interpretation (AST)
- Bytecode + VM
- JIT (Just-in-Time) for higher throughput
Debugger
Breakpoints, Step Into/Over, Watches, Call Stack, memory inspection, core dump analysis.
Test Software
Test framework, runner, assertions, mocks, coverage + reporting. Automated in CI/CD.
Exam-Relevant Key Points
- Artifact flow: source code → object file → binary
- static vs dynamic binding
- Explain bytecode/VM/JIT
- Debugger: symbols, breakpoints, call stack
- Test pyramid: unit/integration/system/acceptance
- Documentation: tool versions, build scripts, test reports
Core Components
- Preprocessor
- Compiler (Parser/AST/IR)
- Assembler
- Linker
- Loader/dynamic binder
- Interpreter/VM
- Debugger
- Test framework/runner
- CI/CD automation
- Reports/logs/coverage
Practical Example (Workflow)
1) Compile: summe.c -> summe.o
2) Link: summe.o + main.o -> programm
3) Debug: Breakpoint in addiere(), Watch a,b
4) Tests: Unit test addiere(2,3)=5, integration test CLI output
Advantages and Disadvantages
- Compiler: fast, good optimization; but build time/portability
- Interpreter: fast iteration; but runtime overhead
- Test software: early error detection; but maintenance effort
Typical Exam Questions (with Short Answer)
- Compiler vs Interpreter? Compiler upfront, interpreter at runtime.
- What does the linker do? Resolve symbols and produce binary.
- Which test levels? Unit, integration, system, acceptance.
- How does debugger help? Breakpoints, step mode, stack analysis.