The post explores the application of hash-based bisect debugging techniques for compilers and runtimes, particularly focusing on how binary search methods can be applied to pinpoint issues in code and version history. The discussion extends to tools like `git bisect` and introduces a new tool, `bisect`, which can identify specific lines of code or call stacks causing errors. Examples include function selection, language changes, library changes, and comprehensive details on implementing the bisect-reduce algorithm.

36m read timeFrom research.swtch.com
Post cover image
Table of contents
Setting the StageBinary Search and Bisecting DataBisecting Version HistoryA New Trick: Bisecting Program LocationsExample: Bisecting Function OptimizationBisect-ReduceList-Based Bisect-ReduceCounter-Based Bisect-ReduceHash-Based Bisect-ReduceUse Case: Function SelectionUse Case: SSA Rewrite SelectionUse Case: Fused Multiply-AddUse Case: Language ChangesUse Case: Library ChangesInteresting Lessons LearnedTry Bisect

Sort: