What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Dynamic program analysis checks a program while it runs; static analysis examines code without requiring that execution. Runtime tools can expose defects on paths that tests or fuzzers actually exercise, but they cannot establish that untested paths are safe. The Linux Foundation’s February 25, 2021 webinar, “Dynamic Program Analysis For Fun And Profit,” introduced this distinction and discussed practical Linux kernel analysis tools.
What dynamic program analysis observes
A dynamic analyzer gathers information from an executing program and checks that behavior for particular kinds of problems. Its evidence comes from a run: the program, its environment, and the inputs and paths reached during execution matter. If a test never reaches code containing a defect, a runtime analysis of that test cannot report it.
That makes dynamic analysis useful as part of testing rather than a proof that a program is correct. A finding can point developers toward a problem revealed in an exercised execution; absence of a finding means only that the analyzed runs did not report one.
How it differs from static analysis
| Question | Dynamic analysis | Static analysis |
|---|---|---|
| Must the program run? | Yes. It observes a running program. | No. It reasons about code without requiring a run. |
| What is examined? | Behavior and conditions observed during particular executions. | Code and its structure, analyzed without observing a particular execution. |
| What limits coverage? | The inputs, tests, and execution paths that are reached. | The analysis method and the code it can reason about; it does not depend on a test reaching a path. |
| What can a result establish? | A runtime signal for the behavior checked in the run, not safety across all possible runs. | A result based on the analysis performed, not a guarantee that every possible execution has been covered. |
The approaches answer different questions. Static analysis can examine code without waiting for a test to trigger a behavior. Dynamic analysis can observe what happened in an actual execution. Neither should be treated as a universal substitute for the other.
#1 Best Overall
Where sanitizers and fuzzers fit
The Linux Foundation event page lists AddressSanitizer, ThreadSanitizer, MemorySanitizer, similar kernel tools, the Go data race detector, syzkaller/syzbot, go-fuzz, and libFuzzer among Dmitry Vyukov’s projects. These names establish the practical tool families associated with the speaker’s work; the event summary does not say that each was demonstrated in the webinar or detail its configuration and capabilities.
Sanitizer tools
AddressSanitizer, ThreadSanitizer, and MemorySanitizer are examples of runtime analysis tools. In a workflow, a sanitizer checks executions produced by tests or other workloads and can flag behavior within the class it monitors. The name of a tool alone is not a substitute for checking its documentation for supported targets, setup, and limitations.
Rank #2
Fuzzing tools
Fuzzing supplies inputs to a program to explore its behavior. Pairing a fuzzer with runtime checks can help surface problems on executions generated during fuzzing. The key limitation remains path coverage: generated inputs can only expose behavior that the resulting runs reach.
A practical workflow
- Choose the target and check tool support. Confirm that the analysis tool supports the code, build, and environment you intend to test; the webinar summary does not provide setup instructions.
- Build a useful execution set. Use relevant tests or workloads, and consider fuzzing where appropriate, so analysis has varied inputs and chances to reach different paths.
- Run with the chosen checks enabled. Treat reports as signals tied to those executions and the tool’s checks, not as a complete inventory of possible defects.
- Investigate and fix reports, then repeat. Re-run relevant tests and analysis after changes; new runs can exercise behavior that earlier ones did not.
- Use complementary review methods. Static analysis and other code review methods can examine aspects that a finite collection of runtime executions may not reach.
What the Linux Foundation webinar covers
The Linux Foundation records the webinar as held on February 25, 2021, with Dmitry Vyukov identified on the event page as a Principal Software Engineer at Google. That is the role given on the 2021 event page, not a statement about his current position. The stated scope is an introduction to dynamic analysis, its strengths and weaknesses, a contrast with static analysis, and practical discussion of Linux kernel tools and bug classes. The event description says: “This talk will give a short introduction into dynamic analysis, outline its strengths and weaknesses and contrast with static analysis.” See the Linux Foundation webinar page and slides.
The event page attributes an aggregate outcome to the listed tools: “These tools allowed to discover and fix more than 3000 bugs in the Linux kernel.” It does not break that figure down by tool or provide further methodology, so it should be read as the event page’s combined claim rather than a measured result for any single analyzer. The session format was a 45-minute overview followed by 45 minutes of Q&A. The Linux Foundation event listing.
The recording is a historical overview, not current tool-maintenance guidance or a full transcript. For current support and usage details, consult the documentation for the specific tool and kernel or project version you plan to analyze.
Quick Recap
Best Value
Rank #4
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

