{ "cells": [ { "cell_type": "markdown", "id": "4ea9ea00", "metadata": {}, "source": [ "# Index" ] }, { "cell_type": "markdown", "id": "d0bc7951", "metadata": {}, "source": [ "## A - E" ] }, { "cell_type": "markdown", "id": "657eca35", "metadata": {}, "source": [ "### A\n", "\n", "* a chapter with the same name in The Fuzzing Book — [Mining Function Specifications](DynamicInvariants.ipynb#Mining-Function-Specifications)\n", "* A Python implementation of grammar-based input reduction — [Reducing Failure-Inducing Inputs (Background)](DeltaDebugger.ipynb#Background)\n", "* a similar chapter in \"The Fuzzing Book\" — [Reducing Failure-Inducing Inputs](DeltaDebugger.ipynb#Reducing-Failure-Inducing-Inputs)\n", "* abstract failure-inducing inputs — [Generalizing Failure Circumstances (A Failing Program)](DDSetDebugger.ipynb#A-Failing-Program)\n", "* abstract syntax tree — [Tracing Executions (Exercise 2: Syntax-Based Instrumentation)](Tracer.ipynb#Exercise-2:-Syntax-Based-Instrumentation), [Reducing Failure-Inducing Inputs (Reducing Syntax Trees)](DeltaDebugger.ipynb#Reducing-Syntax-Trees)\n", "* _actual_ `` header file — [Asserting Expectations (Assertion Diagnostics)](Assertions.ipynb#Assertion-Diagnostics)\n", "* Address Sanitizer](http://clang.llvm.org/docs/AddressSanitizer.html) discussed in this chapter was developed at Google; the [paper by Serebryany — [Asserting Expectations (Background)](Assertions.ipynb#Background)\n", "* `add_call()` — [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* `add_collector()` — [Statistical Debugging (A Base Class for Statistical Debugging)](StatisticalDebugger.ipynb#A-Base-Class-for-Statistical-Debugging)\n", "* `add_conditions()` — [Repairing Code Automatically (Collecting Conditions)](Repairer.ipynb#Collecting-Conditions)\n", "* `add_definition()` — [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions)\n", "* `add_dependencies()` — [Tracking Failure Origins (Setting Variables)](Slicer.ipynb#Setting-Variables)\n", "* `add_hierarchy()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies)\n", "* `add_items_to_ignore()` — [Statistical Debugging (Error Prevention)](StatisticalDebugger.ipynb#Error-Prevention)\n", "* `add_statements()` — [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements)\n", "* `add_to()` — [Tracking Failure Origins (Calls and Augmented Assign)](Slicer.ipynb#Calls-and-Augmented-Assign), [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging)\n", "* `advance()` — [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion), [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion)\n", "* `after_collection()` — [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Reducing Failure-Inducing Inputs (Processing Multiple Arguments)](DeltaDebugger.ipynb#Processing-Multiple-Arguments), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class)\n", "* `allocate()` — [Asserting Expectations (Excursion: Dynamic Memory in C)](Assertions.ipynb#Excursion:-Dynamic-Memory-in-C), [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory)\n", "* `all_calls()` — [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* `all_conditions()` — [Repairing Code Automatically (Collecting Conditions)](Repairer.ipynb#Collecting-Conditions)\n", "* `all_events()` — [Statistical Debugging (A Base Class for Statistical Debugging)](StatisticalDebugger.ipynb#A-Base-Class-for-Statistical-Debugging)\n", "* `all_fail_events()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `all_functions()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies)\n", "* `all_invariants()` — [Mining Function Specifications (Extracting Invariants)](DynamicInvariants.ipynb#Extracting-Invariants)\n", "* `all_metrics()` — [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Other Metrics)](PerformanceDebugger.ipynb#Other-Metrics)\n", "* `all_pass_events()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `all_statements()` — [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements)\n", "* `all_statements_and_functions()` — [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements)\n", "* `all_vars()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies)\n", "* `AMBER` — [Asserting Expectations (Consider Leaving Some Assertions On)](Assertions.ipynb#Consider-Leaving-Some-Assertions-On)\n", "* Angelix — [Repairing Code Automatically (Background)](Repairer.ipynb#Background)\n", "* `annotate_arg()` — [Mining Function Specifications (Excursion: Annotating Functions with Given Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Given-Types)\n", "* `annotate_function_ast_with_invariants()` — [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `annotate_function_ast_with_types()` — [Mining Function Specifications (Excursion: Annotating Functions with Mined Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Mined-Types)\n", "* `annotate_function_with_invariants()` — [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `annotate_function_with_types()` — [Mining Function Specifications (Excursion: Annotating Functions with Mined Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Mined-Types)\n", "* `annotate_invariants()` — [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `annotate_types()` — [Mining Function Specifications (Excursion: Annotating Functions with Mined Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Mined-Types)\n", "* `arg()` — [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments), [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments)\n", "* `args()` — [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events)\n", "* `argstring()` — [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events)\n", "* `args_test()` — [Tracking Failure Origins (Excursion: Tracking Parameters)](Slicer.ipynb#Excursion:-Tracking-Parameters)\n", "* `assert_flow()` — [Tracking Failure Origins (Exercise 5: Flow Assertions)](Slicer.ipynb#Exercise-5:-Flow-Assertions)\n", "* `assign_command()` — [How Debuggers Work (Exercise 1: Changing State)](Debugger.ipynb#Exercise-1:-Changing-State)\n", "* `assign_test()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* AST — [Tracing Executions (Exercise 2: Syntax-Based Instrumentation)](Tracer.ipynb#Exercise-2:-Syntax-Based-Instrumentation), [Reducing Failure-Inducing Inputs (Reducing Syntax Trees)](DeltaDebugger.ipynb#Reducing-Syntax-Trees)\n", "* asyncio — [Repairing Code Automatically (Exercise 5: Parallel Repair)](Repairer.ipynb#Exercise-5:-Parallel-Repair)\n", "* `augment()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* AutoFix — [Repairing Code Automatically (Background)](Repairer.ipynb#Background)\n", "* Automata theory — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* `A_Class` class — [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy), [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n" ] }, { "cell_type": "markdown", "id": "e19308cd", "metadata": {}, "source": [ "### B\n", "\n", "* `backward_slice()` — [Tracking Failure Origins (Slices)](Slicer.ipynb#Slices)\n", "* `BAD_ATTR_INPUT` — [Generalizing Failure Circumstances (Testing for Generalization)](DDSetDebugger.ipynb#Testing-for-Generalization)\n", "* `BAD_INPUTS` — [Generalizing Failure Circumstances (A Failing Program)](DDSetDebugger.ipynb#A-Failing-Program)\n", "* `bad_input_tree_generalizer()` — [Generalizing Failure Circumstances (Testing for Generalization)](DDSetDebugger.ipynb#Testing-for-Generalization)\n", "* `bad_input_tree_mutator()` — [Generalizing Failure Circumstances (Referencing Subtrees)](DDSetDebugger.ipynb#Referencing-Subtrees)\n", "* `BAD_INPUT` — [Generalizing Failure Circumstances (A Failing Program)](DDSetDebugger.ipynb#A-Failing-Program), [Generalizing Failure Circumstances (Parsing)](DDSetDebugger.ipynb#Parsing), [Generalizing Failure Circumstances (Referencing Subtrees)](DDSetDebugger.ipynb#Referencing-Subtrees), [Generalizing Failure Circumstances (Testing for Generalization)](DDSetDebugger.ipynb#Testing-for-Generalization), [Generalizing Failure Circumstances (Generalizable Paths)](DDSetDebugger.ipynb#Generalizable-Paths), [Generalizing Failure Circumstances (Generalizing Arguments)](DDSetDebugger.ipynb#Generalizing-Arguments), [Generalizing Failure Circumstances (Exercise 1: Generalization and Specialization)](DDSetDebugger.ipynb#Exercise-1:-Generalization-and-Specialization)\n", "* `bar()` — [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n", "* `bar` class — [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations)\n", "* `BetterTime` class — [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion)\n", "* binary reduction of dependency graphs — [Reducing Failure-Inducing Inputs (Background)](DeltaDebugger.ipynb#Background)\n", "* bisecting — [Isolating Failure-Inducing Changes (Manual Bisecting)](ChangeDebugger.ipynb#Manual-Bisecting)\n", "* `BLACK` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* `BLOCK_LIST_START` — [Asserting Expectations (Excursion: Dynamic Memory in C)](Assertions.ipynb#Excursion:-Dynamic-Memory-in-C)\n", "* blog post — [Reducing Failure-Inducing Inputs (Background)](DeltaDebugger.ipynb#Background)\n", "* `BODY` — [Repairing Code Automatically (Swapping Statements)](Repairer.ipynb#Swapping-Statements), [Repairing Code Automatically (Swapping Statements)](Repairer.ipynb#Swapping-Statements), [Repairing Code Automatically (Inserting Statements)](Repairer.ipynb#Inserting-Statements), [Repairing Code Automatically (Deleting Statements)](Repairer.ipynb#Deleting-Statements)\n", "* `break_command()` — [How Debuggers Work (Setting Breakpoints)](Debugger.ipynb#Setting-Breakpoints)\n", "* `brightness()` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* `BROWSER` — [Tracking Bugs (Excursion: Remote Control with Selenium)](Tracking.ipynb#Excursion:-Remote-Control-with-Selenium), [Tracking Bugs (Excursion: Remote Control with Selenium)](Tracking.ipynb#Excursion:-Remote-Control-with-Selenium)\n", "* bug — [Introduction to Debugging (From Defect to Failure)](Intro_Debugging.ipynb#From-Defect-to-Failure), [Introduction to Debugging (Lessons Learned)](Intro_Debugging.ipynb#Lessons-Learned)\n", "* `buggy_square_root_with_postcondition()` — [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions)\n", "* Bugzilla bug database — [Tracking Bugs (Background)](Tracking.ipynb#Background)\n", "* `B_Class` class — [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n" ] }, { "cell_type": "markdown", "id": "92430f8b", "metadata": {}, "source": [ "### C\n", "\n", "* C-Reduce — [Reducing Failure-Inducing Inputs (Background)](DeltaDebugger.ipynb#Background)\n", "* `CachingCallReducer` class — [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching)\n", "* call stack — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `call()` — [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments), [Tracking Failure Origins (Excursion: Calls and Returns)](Slicer.ipynb#Excursion:-Calls-and-Returns), [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Reducing Failure-Inducing Inputs (Repeating a Call)](DeltaDebugger.ipynb#Repeating-a-Call)\n", "* `CallCollector` class — [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation), [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Reducing Failure-Inducing Inputs (Repeating a Call)](DeltaDebugger.ipynb#Repeating-a-Call), [Reducing Failure-Inducing Inputs (Repeating a Call)](DeltaDebugger.ipynb#Repeating-a-Call)\n", "* `callee()` — [Inspecting Call Stacks (Synopsis)](StackInspector.ipynb#Synopsis)\n", "* `caller()` — [Inspecting Call Stacks (Synopsis)](StackInspector.ipynb#Synopsis)\n", "* `callers()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `caller_frame()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `caller_function()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `caller_globals()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `caller_locals()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `caller_location()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `CallReducer` class — [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching), [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching)\n", "* `calls()` — [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* `calls_in_our_with_block()` — [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation)\n", "* `CallTracer` class — [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls), [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls), [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls), [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls), [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls), [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls), [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* `call_generator()` — [Tracking Failure Origins (Excursion: Calls and Returns)](Slicer.ipynb#Excursion:-Calls-and-Returns)\n", "* `call_test()` — [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments)\n", "* `cancel()` — [Timeout (Variant 1: Unix (using signals, efficient))](Timeout.ipynb#Variant-1:-Unix-(using-signals,-efficient)), [Timeout (Variant 2: Generic / Windows (using trace, not very efficient))](Timeout.ipynb#Variant-2:-Generic-/-Windows-(using-trace,-not-very-efficient))\n", "* `can_cross()` — [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs)\n", "* `can_generalize()` — [Generalizing Failure Circumstances (Testing for Generalization)](DDSetDebugger.ipynb#Testing-for-Generalization)\n", "* cause-effect chain — [Introduction to Debugging (From Defect to Failure)](Intro_Debugging.ipynb#From-Defect-to-Failure)\n", "* `ChangeCounter` class — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes), [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes), [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes), [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes), [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes)\n", "* `ChangeDebugger` class — [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class)\n", "* `changed_elems()` — [Where the Bugs are (Determining Changed Elements)](ChangeCounter.ipynb#Determining-Changed-Elements)\n", "* `changed_elems_by_mapping()` — [Where the Bugs are (Determining Changed Elements)](ChangeCounter.ipynb#Determining-Changed-Elements)\n", "* `changed_vars()` — [Tracing Executions (Tracing Variable Changes)](Tracer.ipynb#Tracing-Variable-Changes)\n", "* chapter on delta debugging](DeltaDebugger.ipynb), the [chapter on tracing](Tracer.ipynb), and excessively in the [chapter on slicing](Slicer.ipynb). The [official Python `ast` reference](http://docs.python.org/3/library/ast) is complete, but a bit brief; the documentation [\"Green Tree Snakes - the missing Python AST docs\" — [Repairing Code Automatically (Random Code Mutations)](Repairer.ipynb#Random-Code-Mutations)\n", "* \"Checking a Large Routine\" — [Asserting Expectations (Background)](Assertions.ipynb#Background)\n", "* `check_location()` — [Tracking Failure Origins (Reading Variables)](Slicer.ipynb#Reading-Variables), [Tracking Failure Origins (Checking Locations)](Slicer.ipynb#Checking-Locations)\n", "* `check_reproducibility()` — [Reducing Failure-Inducing Inputs (Processing Multiple Arguments)](DeltaDebugger.ipynb#Processing-Multiple-Arguments)\n", "* `check_time()` — [Timeout (Variant 2: Generic / Windows (using trace, not very efficient))](Timeout.ipynb#Variant-2:-Generic-/-Windows-(using-trace,-not-very-efficient))\n", "* `choose_bool_op()` — [Repairing Code Automatically (Mutating Conditions)](Repairer.ipynb#Mutating-Conditions)\n", "* `choose_condition()` — [Repairing Code Automatically (Mutating Conditions)](Repairer.ipynb#Mutating-Conditions)\n", "* `choose_op()` — [Repairing Code Automatically (Choosing a Mutation Method)](Repairer.ipynb#Choosing-a-Mutation-Method)\n", "* `choose_statement()` — [Repairing Code Automatically (Swapping Statements)](Repairer.ipynb#Swapping-Statements)\n", "* `classifier()` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* `ClassifyingDebugger` class — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers), [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers), [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers), [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers), [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers), [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers), [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers), [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* `CLASS_COLOR` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names), [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `CLASS_FONT` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names), [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `class_hierarchy()` — [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n", "* `class_items()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* `_class_items()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* `class_methods()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* `class_methods_string()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `class_set()` — [Class Diagrams (Getting a Class Tree)](ClassDiagram.ipynb#Getting-a-Class-Tree)\n", "* `class_tree()` — [Class Diagrams (Getting a Class Tree)](ClassDiagram.ipynb#Getting-a-Class-Tree)\n", "* `class_vars()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* `class_vars_string()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `clear_read()` — [Tracking Failure Origins (Checking Locations)](Slicer.ipynb#Checking-Locations)\n", "* `clock()` — [Timer (Measuring Time)](Timer.ipynb#Measuring-Time)\n", "* code snippet from StackOverflow — [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions)\n", "* `code()` — [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum)\n", "* `_code()` — [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies)\n", "* `code_with_coverage()` — [Statistical Debugging (Collecting Coverage)](StatisticalDebugger.ipynb#Collecting-Coverage)\n", "* `collect()` — [Reducing Failure-Inducing Inputs (Traversing Syntax Trees)](DeltaDebugger.ipynb#Traversing-Syntax-Trees), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Collecting Coverage)](StatisticalDebugger.ipynb#Collecting-Coverage), [Statistical Debugging (A Base Class for Statistical Debugging)](StatisticalDebugger.ipynb#A-Base-Class-for-Statistical-Debugging), [Statistical Debugging (Other Events besides Coverage)](StatisticalDebugger.ipynb#Other-Events-besides-Coverage), [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Other Metrics)](PerformanceDebugger.ipynb#Other-Metrics)\n", "* `collectors_without_event()` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* `collectors_with_event()` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* `Collector` class — [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Error Prevention)](StatisticalDebugger.ipynb#Error-Prevention), [Statistical Debugging (Error Prevention)](StatisticalDebugger.ipynb#Error-Prevention)\n", "* `collect_fail()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `collect_pass()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `color()` — [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum), [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum), [Debugging Performance Issues (Visualizing Time Spent)](PerformanceDebugger.ipynb#Visualizing-Time-Spent)\n", "* `commands()` — [How Debuggers Work (Excursion: Implementing execute())](Debugger.ipynb#Excursion:-Implementing-execute())\n", "* `command_method()` — [How Debuggers Work (Excursion: Implementing execute())](Debugger.ipynb#Excursion:-Implementing-execute())\n", "* commit hash — [Isolating Failure-Inducing Changes (Accessing Versions)](ChangeDebugger.ipynb#Accessing-Versions)\n", "* compiler testing — [Reducing Failure-Inducing Inputs (Background)](DeltaDebugger.ipynb#Background)\n", "* `compile_and_run()` — [Reducing Failure-Inducing Inputs (Reducing Program Code)](DeltaDebugger.ipynb#Reducing-Program-Code)\n", "* `compile_and_test_ast()` — [Reducing Failure-Inducing Inputs (Reducing Trees)](DeltaDebugger.ipynb#Reducing-Trees)\n", "* `compile_and_test_html_markup()` — [Reducing Failure-Inducing Inputs (Reducing Code Lines)](DeltaDebugger.ipynb#Reducing-Code-Lines)\n", "* `compile_and_test_html_markup_simple()` — [Reducing Failure-Inducing Inputs (Reducing Program Code)](DeltaDebugger.ipynb#Reducing-Program-Code)\n", "* `condition()` — [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions)\n", "* `ConditionalTracer` class — [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing), [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing), [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing), [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing), [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing)\n", "* `ConditionMutator` class — [Repairing Code Automatically (Mutating Conditions)](Repairer.ipynb#Mutating-Conditions), [Repairing Code Automatically (Mutating Conditions)](Repairer.ipynb#Mutating-Conditions)\n", "* `ConditionVisitor` class — [Repairing Code Automatically (Collecting Conditions)](Repairer.ipynb#Collecting-Conditions)\n", "* `CONDITION` — [How Debuggers Work (Watchpoints (\"watch\"))](Debugger.ipynb#Watchpoints-(\"watch\"))\n", "* context-free grammars — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* `continue_command()` — [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction)\n", "* `ContinuousSpectrumDebugger` class — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum), [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum), [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum), [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* contract — [Mining Function Specifications (Beyond Generic Failures)](DynamicInvariants.ipynb#Beyond-Generic-Failures)\n", "* `copy_and_reduce()` — [Reducing Failure-Inducing Inputs (Deleting Nodes)](DeltaDebugger.ipynb#Deleting-Nodes)\n", "* `coverage()` — [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Collecting Coverage)](StatisticalDebugger.ipynb#Collecting-Coverage), [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table)\n", "* `CoverageCollector` class — [Statistical Debugging (Collecting Coverage)](StatisticalDebugger.ipynb#Collecting-Coverage), [Statistical Debugging (Collecting Coverage)](StatisticalDebugger.ipynb#Collecting-Coverage), [Statistical Debugging (Collecting Coverage)](StatisticalDebugger.ipynb#Collecting-Coverage)\n", "* `covered_functions()` — [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Collecting Coverage)](StatisticalDebugger.ipynb#Collecting-Coverage), [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table)\n", "* `create_function()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* crossover — [Repairing Code Automatically (Crossover)](Repairer.ipynb#Crossover)\n", "* `crossover()` — [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs)\n", "* `CrossoverError` class — [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs)\n", "* `CrossoverOperator` class — [Repairing Code Automatically (Crossing Statement Lists)](Repairer.ipynb#Crossing-Statement-Lists), [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs), [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs), [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs), [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs)\n", "* `crossover_attr()` — [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs)\n", "* `crossover_branches()` — [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs)\n", "* `cross_bodies()` — [Repairing Code Automatically (Crossing Statement Lists)](Repairer.ipynb#Crossing-Statement-Lists)\n", "* `current_repo()` — [Where the Bugs are (Mining with PyDriller)](ChangeCounter.ipynb#Mining-with-PyDriller)\n", "* `C_Class` class — [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n" ] }, { "cell_type": "markdown", "id": "de81127b", "metadata": {}, "source": [ "### D\n", "\n", "* DAIKON dynamic invariant detector](https://plse.cs.washington.edu/daikon/) can be considered the mother of function specification miners. Continuously maintained and extended for more than 20 years, it mines likely invariants in the style of this chapter for a variety of languages, including C, C++, C#, Eiffel, F#, Java, Perl, and Visual Basic. On top of the functionality discussed above, it holds a rich catalog of patterns for likely invariants, supports data invariants, can eliminate invariants that are implied by others, and determines statistical confidence to disregard unlikely invariants. The corresponding paper \\cite{Ernst2001} is one of the seminal and most-cited papers of Software Engineering. A multitude of works have been published based on DAIKON and detecting invariants; see this [curated list — [Mining Function Specifications (Background)](DynamicInvariants.ipynb#Background)\n", "* Daniel Lemire puts it — [Asserting Expectations (Checking Memory Usage with Memory Sanitizer)](Assertions.ipynb#Checking-Memory-Usage-with-Memory-Sanitizer)\n", "* data flow — [Tracking Failure Origins (Data Dependencies)](Slicer.ipynb#Data-Dependencies)\n", "* `DataTrackerTester` class — [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses)\n", "* `DataTracker` class — [Tracking Failure Origins (A Data Tracker)](Slicer.ipynb#A-Data-Tracker), [Tracking Failure Origins (A Data Tracker)](Slicer.ipynb#A-Data-Tracker), [Tracking Failure Origins (A Data Tracker)](Slicer.ipynb#A-Data-Tracker), [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments), [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments), [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments), [Tracking Failure Origins (Excursion: Tracking Parameters)](Slicer.ipynb#Excursion:-Tracking-Parameters)\n", "* `DATA_TRACKER` — [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses)\n", "* `dd()` — [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging)\n", "* `ddmin()` — [Reducing Failure-Inducing Inputs (Delta Debugging)](DeltaDebugger.ipynb#Delta-Debugging)\n", "* `DDSetDebugger` class — [Generalizing Failure Circumstances (Constructor)](DDSetDebugger.ipynb#Constructor), [Generalizing Failure Circumstances (Generalizing Arguments)](DDSetDebugger.ipynb#Generalizing-Arguments), [Generalizing Failure Circumstances (Generalizing Arguments)](DDSetDebugger.ipynb#Generalizing-Arguments), [Generalizing Failure Circumstances (Fuzzing)](DDSetDebugger.ipynb#Fuzzing)\n", "* Debugger API](https://developer.mozilla.org/en-US/docs/Tools/Debugger-API) and Google's [chrome.debugger API — [Tracing Executions (High-Level Debugging Interfaces)](Tracer.ipynb#High-Level-Debugging-Interfaces)\n", "* debuggers — [How Debuggers Work (Debuggers)](Debugger.ipynb#Debuggers)\n", "* `Debugger` class — [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [How Debuggers Work (Excursion: Implementing execute())](Debugger.ipynb#Excursion:-Implementing-execute()), [How Debuggers Work (Excursion: Implementing execute())](Debugger.ipynb#Excursion:-Implementing-execute()), [How Debuggers Work (Excursion: Implementing execute())](Debugger.ipynb#Excursion:-Implementing-execute()), [How Debuggers Work (Excursion: Implementing execute())](Debugger.ipynb#Excursion:-Implementing-execute()), [How Debuggers Work (Printing Values)](Debugger.ipynb#Printing-Values), [How Debuggers Work (Printing Values)](Debugger.ipynb#Printing-Values), [How Debuggers Work (Listing Source Code)](Debugger.ipynb#Listing-Source-Code), [How Debuggers Work (Setting Breakpoints)](Debugger.ipynb#Setting-Breakpoints), [How Debuggers Work (Deleting Breakpoints)](Debugger.ipynb#Deleting-Breakpoints), [How Debuggers Work (Listings with Benefits)](Debugger.ipynb#Listings-with-Benefits), [How Debuggers Work (Quitting)](Debugger.ipynb#Quitting), [How Debuggers Work (Exercise 1: Changing State)](Debugger.ipynb#Exercise-1:-Changing-State)\n", "* debugging information — [Tracing Executions (Low-Level Debugging Interfaces)](Tracer.ipynb#Low-Level-Debugging-Interfaces)\n", "* `debuggingbook_change_counter()` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes)\n", "* `DEBUGGINGBOOK_REMOTE_REPO` — [Where the Bugs are (Mining with PyDriller)](ChangeCounter.ipynb#Mining-with-PyDriller)\n", "* `DEBUGGINGBOOK_REPO` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes)\n", "* Decision trees — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* `decorator()` — [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions), [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers)\n", "* `default_functions()` — [Repairing Code Automatically (Helper Functions)](Repairer.ipynb#Helper-Functions)\n", "* `default_items_to_instrument()` — [Tracking Failure Origins (An Instrumenter Base Class)](Slicer.ipynb#An-Instrumenter-Base-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation)\n", "* `defined_in()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* `DefinitionVisitor` class — [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions)\n", "* `delete()` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Repairing Code Automatically (Deleting Statements)](Repairer.ipynb#Deleting-Statements)\n", "* `delete_command()` — [How Debuggers Work (Deleting Breakpoints)](Debugger.ipynb#Deleting-Breakpoints)\n", "* `DELIMITERS` — [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations)\n", "* `DeltaDebugger` class — [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging), [Reducing Failure-Inducing Inputs (Processing Multiple Arguments)](DeltaDebugger.ipynb#Processing-Multiple-Arguments), [Reducing Failure-Inducing Inputs (Processing Multiple Arguments)](DeltaDebugger.ipynb#Processing-Multiple-Arguments), [Reducing Failure-Inducing Inputs (Processing Multiple Arguments)](DeltaDebugger.ipynb#Processing-Multiple-Arguments), [Reducing Failure-Inducing Inputs (Public API)](DeltaDebugger.ipynb#Public-API), [Reducing Failure-Inducing Inputs (Public API)](DeltaDebugger.ipynb#Public-API), [Reducing Failure-Inducing Inputs (Public API)](DeltaDebugger.ipynb#Public-API), [Reducing Failure-Inducing Inputs (Public API)](DeltaDebugger.ipynb#Public-API)\n", "* `demo()` — [Tracking Failure Origins (Synopsis)](Slicer.ipynb#Synopsis)\n", "* `demo4()` — [Tracking Failure Origins (Exercise 5: Flow Assertions)](Slicer.ipynb#Exercise-5:-Flow-Assertions)\n", "* `dependencies()` — [Tracking Failure Origins (Setting Variables)](Slicer.ipynb#Setting-Variables), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class)\n", "* `Dependencies` class — [Tracking Failure Origins (A Class for Dependencies)](Slicer.ipynb#A-Class-for-Dependencies), [Tracking Failure Origins (A Class for Dependencies)](Slicer.ipynb#A-Class-for-Dependencies), [Tracking Failure Origins (A Class for Dependencies)](Slicer.ipynb#A-Class-for-Dependencies), [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Tracking Failure Origins (Slices)](Slicer.ipynb#Slices), [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies), [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies), [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies), [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies), [Tracking Failure Origins (Excursion: Diagnostics)](Slicer.ipynb#Excursion:-Diagnostics)\n", "* `DependencyTrackerTester` class — [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments)\n", "* `DependencyTracker` class — [Tracking Failure Origins (Tracking Dependencies)](Slicer.ipynb#Tracking-Dependencies), [Tracking Failure Origins (Reading Variables)](Slicer.ipynb#Reading-Variables), [Tracking Failure Origins (Checking Locations)](Slicer.ipynb#Checking-Locations), [Tracking Failure Origins (Checking Locations)](Slicer.ipynb#Checking-Locations), [Tracking Failure Origins (Setting Variables)](Slicer.ipynb#Setting-Variables), [Tracking Failure Origins (Excursion: Control Dependencies)](Slicer.ipynb#Excursion:-Control-Dependencies), [Tracking Failure Origins (Excursion: Control Dependencies)](Slicer.ipynb#Excursion:-Control-Dependencies), [Tracking Failure Origins (Excursion: Control Dependencies)](Slicer.ipynb#Excursion:-Control-Dependencies), [Tracking Failure Origins (Excursion: Calls and Returns)](Slicer.ipynb#Excursion:-Calls-and-Returns), [Tracking Failure Origins (Excursion: Calls and Returns)](Slicer.ipynb#Excursion:-Calls-and-Returns), [Tracking Failure Origins (Excursion: Calls and Returns)](Slicer.ipynb#Excursion:-Calls-and-Returns), [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments), [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments)\n", "* derivation tree — [Generalizing Failure Circumstances (Derivation Trees)](DDSetDebugger.ipynb#Derivation-Trees)\n", "* description of red-black trees on Wikipedia — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* diagnosis — [Introduction to Debugging (Fixing the Bug)](Intro_Debugging.ipynb#Fixing-the-Bug)\n", "* `diff()` — [Isolating Failure-Inducing Changes (Computing and Applying Patches)](ChangeDebugger.ipynb#Computing-and-Applying-Patches)\n", "* diff-match-patch library — [Isolating Failure-Inducing Changes (Synopsis)](ChangeDebugger.ipynb#Synopsis), [Isolating Failure-Inducing Changes (Computing and Applying Patches)](ChangeDebugger.ipynb#Computing-and-Applying-Patches), [Isolating Failure-Inducing Changes (Programmatic Interface)](ChangeDebugger.ipynb#Programmatic-Interface)\n", "* `DifferenceDebugger` class — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs), [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `DiscreteSpectrumDebugger` class — [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum)\n", "* `display_class_hierarchy()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `display_class_node()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `display_class_trees()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `display_legend()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `display_tree()` — [Generalizing Failure Circumstances (Derivation Trees)](DDSetDebugger.ipynb#Derivation-Trees)\n", "* `display_versions()` — [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories)\n", "* `docstring()` — [Class Diagrams (Getting Docs)](ClassDiagram.ipynb#Getting-Docs)\n", "* `doc_class_methods()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* `DOC_INDENT` — [Class Diagrams (Getting Docs)](ClassDiagram.ipynb#Getting-Docs)\n", "* Donald J. Knuth — [Debugging Performance Issues (Improving Performance)](PerformanceDebugger.ipynb#Improving-Performance)\n", "* `do_report()` — [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing), [Tracing Executions (Watching Events)](Tracer.ipynb#Watching-Events)\n", "* `draw_dependencies()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies)\n", "* `draw_edge()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies)\n", "* `drop_shadow()` — [Tracking Bugs (Excursion: Screenshots with Drop Shadows)](Tracking.ipynb#Excursion:-Screenshots-with-Drop-Shadows)\n", "* `dump_tree()` — [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses)\n", "* `DynamicMemory` class — [Asserting Expectations (Excursion: Dynamic Memory in C)](Assertions.ipynb#Excursion:-Dynamic-Memory-in-C), [Asserting Expectations (Excursion: Dynamic Memory in C)](Assertions.ipynb#Excursion:-Dynamic-Memory-in-C)\n", "* `D_Class` class — [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy), [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n" ] }, { "cell_type": "markdown", "id": "6c52843c", "metadata": {}, "source": [ "### E\n", "\n", "* easyplotly — [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes), [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes), [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes)\n", "* `elapsed_time()` — [Timer (Measuring Time)](Timer.ipynb#Measuring-Time)\n", "* `elem_mapping()` — [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations)\n", "* `elem_size()` — [Where the Bugs are (Determining Changed Elements)](ChangeCounter.ipynb#Determining-Changed-Elements)\n", "* _Elitism_ — [Repairing Code Automatically (Exercise 2: Elitism)](Repairer.ipynb#Exercise-2:-Elitism)\n", "* `EmbeddedInvariantAnnotator` class — [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `EmbeddedInvariantTransformer` class — [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions), [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `empty()` — [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging)\n", "* `__enter__()` — [Tracing Executions (A Tracer Class)](Tracer.ipynb#A-Tracer-Class), [Asserting Expectations (Exercise 1 – Storage Assertions)](Assertions.ipynb#Exercise-1-–-Storage-Assertions), [Asserting Expectations (Task 2 – Global Consistency)](Assertions.ipynb#Task-2-–-Global-Consistency), [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses), [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Tracking Failure Origins (Excursion: Control Dependencies)](Slicer.ipynb#Excursion:-Control-Dependencies), [Tracking Failure Origins (An Instrumenter Base Class)](Slicer.ipynb#An-Instrumenter-Base-Class), [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class), [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs), [Debugging Performance Issues (Building a Profiler)](PerformanceDebugger.ipynb#Building-a-Profiler), [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Error Handling (Catching Errors)](ExpectError.ipynb#Catching-Errors), [Timer (Measuring Time)](Timer.ipynb#Measuring-Time), [Timeout (Variant 1: Unix (using signals, efficient))](Timeout.ipynb#Variant-1:-Unix-(using-signals,-efficient)), [Timeout (Variant 2: Generic / Windows (using trace, not very efficient))](Timeout.ipynb#Variant-2:-Generic-/-Windows-(using-trace,-not-very-efficient))\n", "* entire books about fuzzing — [Reducing Failure-Inducing Inputs (Why Reducing?)](DeltaDebugger.ipynb#Why-Reducing?)\n", "* `equalNumberOfBlackNodesOnSubtrees()` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* error — [Introduction to Debugging (From Defect to Failure)](Intro_Debugging.ipynb#From-Defect-to-Failure)\n", "* `escape()` — [Class Diagrams (Getting Docs)](ClassDiagram.ipynb#Getting-Docs)\n", "* `escape_doc()` — [Class Diagrams (Getting Docs)](ClassDiagram.ipynb#Getting-Docs)\n", "* `eval_in_context()` — [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing), [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing)\n", "* `events()` — [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Collecting Coverage)](StatisticalDebugger.ipynb#Collecting-Coverage), [Statistical Debugging (Other Events besides Coverage)](StatisticalDebugger.ipynb#Other-Events-besides-Coverage)\n", "* `events_changed()` — [Tracing Executions (Watching Events)](Tracer.ipynb#Watching-Events)\n", "* `EventTracer` class — [Tracing Executions (Watching Events)](Tracer.ipynb#Watching-Events), [Tracing Executions (Watching Events)](Tracer.ipynb#Watching-Events), [Tracing Executions (Watching Events)](Tracer.ipynb#Watching-Events)\n", "* `event_fraction()` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* `event_str()` — [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table)\n", "* `event_table()` — [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table)\n", "* `event_table_text()` — [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table)\n", "* `evolve()` — [Repairing Code Automatically (Evolving)](Repairer.ipynb#Evolving)\n", "* `evolve_middle()` — [Repairing Code Automatically (Evolution)](Repairer.ipynb#Evolution)\n", "* `exception()` — [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events)\n", "* `execute()` — [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [How Debuggers Work (Excursion: Implementing execute())](Debugger.ipynb#Excursion:-Implementing-execute()), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class)\n", "* execution log — [Tracing Executions (Tracing Python Programs)](Tracer.ipynb#Tracing-Python-Programs)\n", "* `execution_diagram()` — [Introduction to Debugging (From Defect to Failure)](Intro_Debugging.ipynb#From-Defect-to-Failure)\n", "* `__exit__()` — [Tracing Executions (A Tracer Class)](Tracer.ipynb#A-Tracer-Class), [Asserting Expectations (Exercise 1 – Storage Assertions)](Assertions.ipynb#Exercise-1-–-Storage-Assertions), [Asserting Expectations (Task 2 – Global Consistency)](Assertions.ipynb#Task-2-–-Global-Consistency), [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses), [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Tracking Failure Origins (Excursion: Control Dependencies)](Slicer.ipynb#Excursion:-Control-Dependencies), [Tracking Failure Origins (An Instrumenter Base Class)](Slicer.ipynb#An-Instrumenter-Base-Class), [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Statistical Debugging (Error Prevention)](StatisticalDebugger.ipynb#Error-Prevention), [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs), [Error Handling (Catching Errors)](ExpectError.ipynb#Catching-Errors), [Error Handling (Catching Timeouts)](ExpectError.ipynb#Catching-Timeouts), [Timer (Measuring Time)](Timer.ipynb#Measuring-Time), [Timeout (Variant 1: Unix (using signals, efficient))](Timeout.ipynb#Variant-1:-Unix-(using-signals,-efficient)), [Timeout (Variant 2: Generic / Windows (using trace, not very efficient))](Timeout.ipynb#Variant-2:-Generic-/-Windows-(using-trace,-not-very-efficient))\n", "* `expand_criteria()` — [Tracking Failure Origins (Slices)](Slicer.ipynb#Slices)\n", "* `ExpectError` class — [Error Handling (Catching Errors)](ExpectError.ipynb#Catching-Errors)\n", "* `ExpectTimeout` class — [Error Handling (Catching Timeouts)](ExpectError.ipynb#Catching-Timeouts)\n" ] }, { "cell_type": "markdown", "id": "c24434a6", "metadata": {}, "source": [ "## F - J" ] }, { "cell_type": "markdown", "id": "abb62652", "metadata": {}, "source": [ "### F\n", "\n", "* `f()` — [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments), [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations), [Where the Bugs are (Determining Changed Elements)](ChangeCounter.ipynb#Determining-Changed-Elements)\n", "* `fail()` — [Tracing Executions (Exercise 1: Exception Handling)](Tracer.ipynb#Exercise-1:-Exception-Handling)\n", "* `failed_fraction()` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* failure — [Introduction to Debugging (From Defect to Failure)](Intro_Debugging.ipynb#From-Defect-to-Failure)\n", "* `FailureNotReproducedError` class — [Reducing Failure-Inducing Inputs (Processing Multiple Arguments)](DeltaDebugger.ipynb#Processing-Multiple-Arguments), [Repairing Code Automatically (Running Tests)](Repairer.ipynb#Running-Tests)\n", "* `fail_collectors()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `FAIL_COLOR` — [Introduction to Debugging (Visualizing Code)](Intro_Debugging.ipynb#Visualizing-Code), [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories)\n", "* `fail_source()` — [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class)\n", "* `fail_test()` — [Error Handling (Catching Errors)](ExpectError.ipynb#Catching-Errors)\n", "* `FAIL_VALUE` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* `FAIL` — [Introduction to Debugging (Visualizing Code)](Intro_Debugging.ipynb#Visualizing-Code), [Reducing Failure-Inducing Inputs (Delta Debugging)](DeltaDebugger.ipynb#Delta-Debugging), [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories), [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `FALSE_TREE` — [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes)\n", "* fault — [Introduction to Debugging (From Defect to Failure)](Intro_Debugging.ipynb#From-Defect-to-Failure)\n", "* `features()` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* `feature_names()` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* `filter()` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes)\n", "* `find_paths()` — [Generalizing Failure Circumstances (Generalizable Paths)](DDSetDebugger.ipynb#Generalizable-Paths)\n", "* `FineChangeCounter` class — [Where the Bugs are (Putting it all Together)](ChangeCounter.ipynb#Putting-it-all-Together)\n", "* `FineFixCounter` class — [Where the Bugs are (Exercise 1: Fine-Grained Fixes)](ChangeCounter.ipynb#Exercise-1:-Fine-Grained-Fixes)\n", "* finite state machines — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* First actual case of bug being found — [Introduction to Debugging (Debugging Aftermath)](Intro_Debugging.ipynb#Debugging-Aftermath)\n", "* `fitness()` — [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions)\n", "* `fitness_key()` — [Repairing Code Automatically (Evolving)](Repairer.ipynb#Evolving)\n", "* `FixCounter` class — [Where the Bugs are (Counting Past Fixes)](ChangeCounter.ipynb#Counting-Past-Fixes), [Where the Bugs are (Counting Past Fixes)](ChangeCounter.ipynb#Counting-Past-Fixes)\n", "* `FONT_NAME` — [Introduction to Debugging (Visualizing Code)](Intro_Debugging.ipynb#Visualizing-Code), [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories)\n", "* `foo()` — [Tracing Executions (Exercise 2: Syntax-Based Instrumentation)](Tracer.ipynb#Exercise-2:-Syntax-Based-Instrumentation), [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations), [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations), [Where the Bugs are (Determining Changed Elements)](ChangeCounter.ipynb#Determining-Changed-Elements), [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy), [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy), [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n", "* formal languages — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* `format_call()` — [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Reducing Failure-Inducing Inputs (Repeating a Call)](DeltaDebugger.ipynb#Repeating-a-Call)\n", "* `format_exception()` — [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Reducing Failure-Inducing Inputs (Repeating a Call)](DeltaDebugger.ipynb#Repeating-a-Call)\n", "* `format_node()` — [Repairing Code Automatically (Choosing Suspicious Statements to Mutate)](Repairer.ipynb#Choosing-Suspicious-Statements-to-Mutate), [Repairing Code Automatically (Helpers)](Repairer.ipynb#Helpers)\n", "* `format_var()` — [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies)\n", "* `frame_module()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `free()` — [Asserting Expectations (Excursion: Dynamic Memory in C)](Assertions.ipynb#Excursion:-Dynamic-Memory-in-C), [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory)\n", "* `from_set()` — [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging)\n", "* full-fledged implementation of DDSET](https://rahul.gopinath.org/post/2020/07/15/ddset/) with plenty of details and experiments is available as a Jupyter Notebook. Our implementation follows the [simplified implementation of DDSET, as described by Gopinath — [Generalizing Failure Circumstances (Background)](DDSetDebugger.ipynb#Background)\n", "* `fun()` — [Asserting Expectations (Assertion Diagnostics)](Assertions.ipynb#Assertion-Diagnostics)\n", "* `funcs_in_our_with_block()` — [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation)\n", "* `function()` — [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table)\n", "* `functions_with_invariants()` — [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations)\n", "* `function_with_invariants()` — [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations), [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `function_with_invariants_ast()` — [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `FUNCTION` — [How Debuggers Work (Named breakpoints (\"break\"))](Debugger.ipynb#Named-breakpoints-(\"break\"))\n", "* `fun_1()` — [Tracking Failure Origins (End of Excursion)](Slicer.ipynb#End-of-Excursion)\n", "* `fun_2()` — [Tracking Failure Origins (End of Excursion)](Slicer.ipynb#End-of-Excursion)\n", "* `fuzz()` — [Reducing Failure-Inducing Inputs (Why Reducing?)](DeltaDebugger.ipynb#Why-Reducing?), [Generalizing Failure Circumstances (Fuzzing)](DDSetDebugger.ipynb#Fuzzing)\n", "* fuzzingbook — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* `fuzz_args()` — [Generalizing Failure Circumstances (Fuzzing)](DDSetDebugger.ipynb#Fuzzing)\n", "* `fuzz_tree()` — [Generalizing Failure Circumstances (Fuzzing with Patterns)](DDSetDebugger.ipynb#Fuzzing-with-Patterns)\n" ] }, { "cell_type": "markdown", "id": "51d53eeb", "metadata": {}, "source": [ "### G\n", "\n", "* GDB, the GNU debugger](https://www.gnu.org/software/gdb/), whose interface in turn goes back to earlier command-line debuggers such as [dbx — [How Debuggers Work (Background)](Debugger.ipynb#Background)\n", "* `gen()` — [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments)\n", "* `generalizable_paths()` — [Generalizing Failure Circumstances (Generalizable Paths)](DDSetDebugger.ipynb#Generalizable-Paths)\n", "* `generalize()` — [Generalizing Failure Circumstances (Generalizable Paths)](DDSetDebugger.ipynb#Generalizable-Paths), [Generalizing Failure Circumstances (Generalizing Arguments)](DDSetDebugger.ipynb#Generalizing-Arguments)\n", "* `generalize_path()` — [Generalizing Failure Circumstances (Generalizable Paths)](DDSetDebugger.ipynb#Generalizable-Paths)\n", "* `GenericTimeout` class — [Timeout (Variant 2: Generic / Windows (using trace, not very efficient))](Timeout.ipynb#Variant-2:-Generic-/-Windows-(using-trace,-not-very-efficient))\n", "* `generic_test()` — [Reducing Failure-Inducing Inputs (Delta Debugging)](DeltaDebugger.ipynb#Delta-Debugging)\n", "* `generic_visit()` — [Reducing Failure-Inducing Inputs (Traversing Syntax Trees)](DeltaDebugger.ipynb#Traversing-Syntax-Trees), [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements), [Repairing Code Automatically (Collecting Conditions)](Repairer.ipynb#Collecting-Conditions)\n", "* GenProg — [Repairing Code Automatically (Background)](Repairer.ipynb#Background)\n", "* `get()` — [Tracking Failure Origins (A Data Tracker)](Slicer.ipynb#A-Data-Tracker), [Tracking Failure Origins (Reading Variables)](Slicer.ipynb#Reading-Variables)\n", "* `__getitem__()` — [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Exercise 1 – Storage Assertions)](Assertions.ipynb#Exercise-1-–-Storage-Assertions), [Asserting Expectations (Task 2 – Global Consistency)](Assertions.ipynb#Task-2-–-Global-Consistency)\n", "* `getsource()` — [Repairing Code Automatically (Helper Functions)](Repairer.ipynb#Helper-Functions)\n", "* `get_arguments()` — [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* `get_output()` — [Isolating Failure-Inducing Changes (Accessing Versions)](ChangeDebugger.ipynb#Accessing-Versions)\n", "* `get_subtree()` — [Generalizing Failure Circumstances (Referencing Subtrees)](DDSetDebugger.ipynb#Referencing-Subtrees)\n", "* grammars — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* `graph()` — [Introduction to Debugging (Visualizing Code)](Intro_Debugging.ipynb#Visualizing-Code), [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories)\n", "* `graph_attr()` — [Generalizing Failure Circumstances (Derivation Trees)](DDSetDebugger.ipynb#Derivation-Trees)\n", "* `GREEN` — [Asserting Expectations (Consider Leaving Some Assertions On)](Assertions.ipynb#Consider-Leaving-Some-Assertions-On)\n" ] }, { "cell_type": "markdown", "id": "e6f6765f", "metadata": {}, "source": [ "### H\n", "\n", "* hardware breakpoints — [Tracing Executions (Tracing Binary Executables)](Tracer.ipynb#Tracing-Binary-Executables)\n", "* hardware watchpoints — [Tracing Executions (Tracing Binary Executables)](Tracer.ipynb#Tracing-Binary-Executables)\n", "* HDD — [Reducing Failure-Inducing Inputs (Background)](DeltaDebugger.ipynb#Background)\n", "* `HEADLESS` — [Tracking Bugs (Excursion: Remote Control with Selenium)](Tracking.ipynb#Excursion:-Remote-Control-with-Selenium)\n", "* `hello()` — [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* `help_command()` — [How Debuggers Work (Excursion: Implementing execute())](Debugger.ipynb#Excursion:-Implementing-execute()), [How Debuggers Work (Excursion: Implementing execute())](Debugger.ipynb#Excursion:-Implementing-execute())\n", "* Hierarchical Delta Debugging — [Reducing Failure-Inducing Inputs (Background)](DeltaDebugger.ipynb#Background)\n", "* `HitCollector` class — [Debugging Performance Issues (Other Metrics)](PerformanceDebugger.ipynb#Other-Metrics)\n", "* `hours()` — [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs), [Asserting Expectations (Excursion: Checked Getters and Setters in Python)](Assertions.ipynb#Excursion:-Checked-Getters-and-Setters-in-Python), [Asserting Expectations (Excursion: Checked Getters and Setters in Python)](Assertions.ipynb#Excursion:-Checked-Getters-and-Setters-in-Python)\n", "* `hue()` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum), [Statistical Debugging (The Ochiai Metric)](StatisticalDebugger.ipynb#The-Ochiai-Metric)\n", "* Hypothesis](https://hypothesis.works) fuzzer has a number of type-specific shrinking strategies; this [blog article — [Reducing Failure-Inducing Inputs (Background)](DeltaDebugger.ipynb#Background)\n" ] }, { "cell_type": "markdown", "id": "e15df2d7", "metadata": {}, "source": [ "### I\n", "\n", "* `id()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events)\n", "* `ignore_location_change()` — [Tracking Failure Origins (Checking Locations)](Slicer.ipynb#Checking-Locations)\n", "* `ignore_next_location_change()` — [Tracking Failure Origins (Checking Locations)](Slicer.ipynb#Checking-Locations)\n", "* `include()` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Counting Past Fixes)](ChangeCounter.ipynb#Counting-Past-Fixes)\n", "* infection — [Introduction to Debugging (From Defect to Failure)](Intro_Debugging.ipynb#From-Defect-to-Failure), [Introduction to Debugging (Lessons Learned)](Intro_Debugging.ipynb#Lessons-Learned)\n", "* `init()` — [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching)\n", "* `initial_population()` — [Repairing Code Automatically (Repairing)](Repairer.ipynb#Repairing)\n", "* `__init__()` — [Tracing Executions (A Tracer Class)](Tracer.ipynb#A-Tracer-Class), [Tracing Executions (Tracing Variable Changes)](Tracer.ipynb#Tracing-Variable-Changes), [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing), [Tracing Executions (Watching Events)](Tracer.ipynb#Watching-Events), [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs), [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs), [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Excursion: Dynamic Memory in C)](Assertions.ipynb#Excursion:-Dynamic-Memory-in-C), [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory), [Asserting Expectations (Exercise 1 – Storage Assertions)](Assertions.ipynb#Exercise-1-–-Storage-Assertions), [Asserting Expectations (Task 2 – Global Consistency)](Assertions.ipynb#Task-2-–-Global-Consistency), [Tracking Failure Origins (A Class for Dependencies)](Slicer.ipynb#A-Class-for-Dependencies), [Tracking Failure Origins (A Data Tracker)](Slicer.ipynb#A-Data-Tracker), [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses), [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Tracking Failure Origins (Excursion: Tracking Return Values)](Slicer.ipynb#Excursion:-Tracking-Return-Values), [Tracking Failure Origins (Tracking Dependencies)](Slicer.ipynb#Tracking-Dependencies), [Tracking Failure Origins (An Instrumenter Base Class)](Slicer.ipynb#An-Instrumenter-Base-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation), [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation), [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching), [Reducing Failure-Inducing Inputs (Traversing Syntax Trees)](DeltaDebugger.ipynb#Traversing-Syntax-Trees), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Collecting Coverage)](StatisticalDebugger.ipynb#Collecting-Coverage), [Statistical Debugging (A Base Class for Statistical Debugging)](StatisticalDebugger.ipynb#A-Base-Class-for-Statistical-Debugging), [Statistical Debugging (Other Events besides Coverage)](StatisticalDebugger.ipynb#Other-Events-besides-Coverage), [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls), [Mining Function Specifications (Excursion: Annotating Functions with Given Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Given-Types), [Mining Function Specifications (Extracting Invariants)](DynamicInvariants.ipynb#Extracting-Invariants), [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions), [Generalizing Failure Circumstances (Mutating the Tree)](DDSetDebugger.ipynb#Mutating-the-Tree), [Generalizing Failure Circumstances (Generalizing Trees)](DDSetDebugger.ipynb#Generalizing-Trees), [Generalizing Failure Circumstances (Constructor)](DDSetDebugger.ipynb#Constructor), [Debugging Performance Issues (Building a Profiler)](PerformanceDebugger.ipynb#Building-a-Profiler), [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Visualizing Time Spent)](PerformanceDebugger.ipynb#Visualizing-Time-Spent), [Debugging Performance Issues (Other Metrics)](PerformanceDebugger.ipynb#Other-Metrics), [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements), [Repairing Code Automatically (Mutating Statements)](Repairer.ipynb#Mutating-Statements), [Repairing Code Automatically (Crossing Statement Lists)](Repairer.ipynb#Crossing-Statement-Lists), [Repairing Code Automatically (Excursion: Implementing Repairer)](Repairer.ipynb#Excursion:-Implementing-Repairer), [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions), [Repairing Code Automatically (Collecting Conditions)](Repairer.ipynb#Collecting-Conditions), [Repairing Code Automatically (Mutating Conditions)](Repairer.ipynb#Mutating-Conditions), [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Error Handling (Catching Errors)](ExpectError.ipynb#Catching-Errors), [Error Handling (Catching Timeouts)](ExpectError.ipynb#Catching-Timeouts), [Timer (Measuring Time)](Timer.ipynb#Measuring-Time), [Timeout (Variant 1: Unix (using signals, efficient))](Timeout.ipynb#Variant-1:-Unix-(using-signals,-efficient)), [Timeout (Variant 2: Generic / Windows (using trace, not very efficient))](Timeout.ipynb#Variant-2:-Generic-/-Windows-(using-trace,-not-very-efficient))\n", "* `InjectPass` class — [Tracing Executions (Exercise 2: Syntax-Based Instrumentation)](Tracer.ipynb#Exercise-2:-Syntax-Based-Instrumentation)\n", "* input grammar in fuzzingbook format — [Generalizing Failure Circumstances (Synopsis)](DDSetDebugger.ipynb#Synopsis), [Generalizing Failure Circumstances (Synopsis)](DDSetDebugger.ipynb#Synopsis)\n", "* `insert()` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Repairing Code Automatically (Inserting Statements)](Repairer.ipynb#Inserting-Statements)\n", "* `insert_assertions()` — [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions), [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `insert_tracer()` — [Tracing Executions (Efficient Tracing)](Tracer.ipynb#Efficient-Tracing)\n", "* `instantiate_prop()` — [Mining Function Specifications (Instantiating Properties)](DynamicInvariants.ipynb#Instantiating-Properties)\n", "* `instantiate_prop_ast()` — [Mining Function Specifications (Instantiating Properties)](DynamicInvariants.ipynb#Instantiating-Properties)\n", "* `instrument()` — [Tracking Failure Origins (An Instrumenter Base Class)](Slicer.ipynb#An-Instrumenter-Base-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class)\n", "* `Instrumenter` class — [Tracking Failure Origins (An Instrumenter Base Class)](Slicer.ipynb#An-Instrumenter-Base-Class), [Tracking Failure Origins (An Instrumenter Base Class)](Slicer.ipynb#An-Instrumenter-Base-Class)\n", "* `instrument_call()` — [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments)\n", "* `interaction_loop()` — [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction)\n", "* `InvariantAnnotator` class — [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations), [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations), [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations), [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations)\n", "* invariants — [Mining Function Specifications (Mining Invariants)](DynamicInvariants.ipynb#Mining-Invariants)\n", "* `invariants()` — [Mining Function Specifications (Extracting Invariants)](DynamicInvariants.ipynb#Extracting-Invariants)\n", "* `InvariantTracer` class — [Mining Function Specifications (Extracting Invariants)](DynamicInvariants.ipynb#Extracting-Invariants), [Mining Function Specifications (Extracting Invariants)](DynamicInvariants.ipynb#Extracting-Invariants)\n", "* `INVARIANT_PROPERTIES` — [Mining Function Specifications (Defining Properties)](DynamicInvariants.ipynb#Defining-Properties), [Mining Function Specifications (Extracting Invariants)](DynamicInvariants.ipynb#Extracting-Invariants)\n", "* `in_generator()` — [Tracking Failure Origins (Excursion: Calls and Returns)](Slicer.ipynb#Excursion:-Calls-and-Returns)\n", "* ISO 8601 format — [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs)\n", "* `is_abstract()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `is_internal()` — [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses)\n", "* `is_internal_error()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `is_local_class()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `is_overloaded()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `is_public()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `is_reducible()` — [Reducing Failure-Inducing Inputs (Processing Multiple Arguments)](DeltaDebugger.ipynb#Processing-Multiple-Arguments)\n", "* `is_test()` — [Repairing Code Automatically (Helper Functions)](Repairer.ipynb#Helper-Functions)\n", "* `is_var()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* its documentation in the Python reference — [Tracing Executions (Tracing Python Programs)](Tracer.ipynb#Tracing-Python-Programs)\n" ] }, { "cell_type": "markdown", "id": "706b3dfe", "metadata": {}, "source": [ "### J\n", "\n", "* J-Reduce — [Reducing Failure-Inducing Inputs (Background)](DeltaDebugger.ipynb#Background)\n", "* Java Debug Interface](https://docs.oracle.com/javase/8/docs/jdk/api/jpda/jdi/) (JDI) is a _high-level interface_ for implementing a debugger (or tracer) on top of Java. [This introduction to JDI — [Tracing Executions (High-Level Debugging Interfaces)](Tracer.ipynb#High-Level-Debugging-Interfaces)\n", "* `JSON` — [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations)\n", "* `just_x()` — [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments)\n" ] }, { "cell_type": "markdown", "id": "419ac897", "metadata": {}, "source": [ "## L - P" ] }, { "cell_type": "markdown", "id": "fe53a926", "metadata": {}, "source": [ "### L\n", "\n", "* `label()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies)\n", "* language specifications — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* `LeftmostNameVisitor` class — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `leftmost_name()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `LINENO` — [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies)\n", "* `LINE` — [How Debuggers Work (Execute until line (\"until\"))](Debugger.ipynb#Execute-until-line-(\"until\")), [How Debuggers Work (Execute until line (\"until\"))](Debugger.ipynb#Execute-until-line-(\"until\"))\n", "* `list_command()` — [How Debuggers Work (Listing Source Code)](Debugger.ipynb#Listing-Source-Code), [How Debuggers Work (Listings with Benefits)](Debugger.ipynb#Listings-with-Benefits)\n", "* `list_error()` — [Reducing Failure-Inducing Inputs (Reducing other Collections)](DeltaDebugger.ipynb#Reducing-other-Collections)\n", "* `list_length()` — [Mining Function Specifications (A Recursive Function)](DynamicInvariants.ipynb#A-Recursive-Function)\n", "* `LoadVisitor` class — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `load_names()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `log()` — [Tracing Executions (A Tracer Class)](Tracer.ipynb#A-Tracer-Class)\n", "* `log_tree()` — [Repairing Code Automatically (Helper Functions)](Repairer.ipynb#Helper-Functions)\n", "* `long_running_test()` — [Error Handling (Catching Timeouts)](ExpectError.ipynb#Catching-Timeouts)\n" ] }, { "cell_type": "markdown", "id": "3984e881", "metadata": {}, "source": [ "### M\n", "\n", "* magic — [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations)\n", "* `main()` — [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations), [Where the Bugs are (Determining Changed Elements)](ChangeCounter.ipynb#Determining-Changed-Elements)\n", "* `make_call()` — [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments)\n", "* `make_data_tracker()` — [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses), [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments)\n", "* `make_get_data()` — [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses)\n", "* `make_graph()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies)\n", "* `make_set_data()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `make_test()` — [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control)\n", "* `make_with()` — [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control)\n", "* malfunction — [Introduction to Debugging (From Defect to Failure)](Intro_Debugging.ipynb#From-Defect-to-Failure), [Introduction to Debugging (Lessons Learned)](Intro_Debugging.ipynb#Lessons-Learned)\n", "* `ManagedMemory` class — [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory), [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory), [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory), [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory)\n", "* `map()` — [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes)\n", "* `map_colorscale()` — [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes)\n", "* `map_hoverinfo()` — [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes), [Where the Bugs are (Counting Past Fixes)](ChangeCounter.ipynb#Counting-Past-Fixes)\n", "* `map_node_color()` — [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes)\n", "* `map_node_sizes()` — [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes)\n", "* `map_node_text()` — [Where the Bugs are (Visualizing Past Changes)](ChangeCounter.ipynb#Visualizing-Past-Changes), [Where the Bugs are (Counting Past Fixes)](ChangeCounter.ipynb#Counting-Past-Fixes)\n", "* `mark_tracker()` — [Tracking Bugs (Managing Issues)](Tracking.ipynb#Managing-Issues)\n", "* Master Mind Board Grame — [Introduction to Debugging (Keep a Log)](Intro_Debugging.ipynb#Keep-a-Log)\n", "* `maximum()` — [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Visualizing Time Spent)](PerformanceDebugger.ipynb#Visualizing-Time-Spent)\n", "* `max_args()` — [Reducing Failure-Inducing Inputs (Public API)](DeltaDebugger.ipynb#Public-API)\n", "* `Memory` class — [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator)\n", "* `metavars()` — [Mining Function Specifications (Extracting Meta-Variables)](DynamicInvariants.ipynb#Extracting-Meta-Variables)\n", "* `METHOD_COLOR` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `METHOD_FONT` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `method_string()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `metric()` — [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Visualizing Time Spent)](PerformanceDebugger.ipynb#Visualizing-Time-Spent), [Debugging Performance Issues (Other Metrics)](PerformanceDebugger.ipynb#Other-Metrics)\n", "* `MetricCollector` class — [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent)\n", "* `MetricDebugger` class — [Debugging Performance Issues (Visualizing Time Spent)](PerformanceDebugger.ipynb#Visualizing-Time-Spent)\n", "* `middle()` — [Tracking Failure Origins (Dependencies)](Slicer.ipynb#Dependencies), [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* `middle_checked()` — [Statistical Debugging (Exercise 1: A Postcondition for Middle)](StatisticalDebugger.ipynb#Exercise-1:-A-Postcondition-for-Middle)\n", "* `middle_deps()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies)\n", "* `middle_failing_testcase()` — [Statistical Debugging (Using Large Test Suites)](StatisticalDebugger.ipynb#Using-Large-Test-Suites)\n", "* `MIDDLE_FAILING_TESTCASES` — [Statistical Debugging (Using Large Test Suites)](StatisticalDebugger.ipynb#Using-Large-Test-Suites)\n", "* `middle_fitness()` — [Repairing Code Automatically (Fitness)](Repairer.ipynb#Fitness)\n", "* `middle_fixed()` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* `middle_passing_testcase()` — [Statistical Debugging (Using Large Test Suites)](StatisticalDebugger.ipynb#Using-Large-Test-Suites)\n", "* `MIDDLE_PASSING_TESTCASES` — [Statistical Debugging (Using Large Test Suites)](StatisticalDebugger.ipynb#Using-Large-Test-Suites)\n", "* `MIDDLE_POPULATION` — [Repairing Code Automatically (Population)](Repairer.ipynb#Population), [Repairing Code Automatically (Evolution)](Repairer.ipynb#Evolution)\n", "* `middle_sort_of_fixed()` — [Repairing Code Automatically (Validated Repairs)](Repairer.ipynb#Validated-Repairs)\n", "* `middle_test()` — [Statistical Debugging (Using Large Test Suites)](StatisticalDebugger.ipynb#Using-Large-Test-Suites), [Generalizing Failure Circumstances (Middle)](DDSetDebugger.ipynb#Middle), [Repairing Code Automatically (A Test Suite)](Repairer.ipynb#A-Test-Suite)\n", "* `middle_testcase()` — [Statistical Debugging (Using Large Test Suites)](StatisticalDebugger.ipynb#Using-Large-Test-Suites)\n", "* `MIDDLE_TESTS` — [Statistical Debugging (Using Large Test Suites)](StatisticalDebugger.ipynb#Using-Large-Test-Suites)\n", "* `middle_tree()` — [Repairing Code Automatically (Random Code Mutations)](Repairer.ipynb#Random-Code-Mutations)\n", "* `mine()` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes)\n", "* `mine_commit()` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes)\n", "* `minutes()` — [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs)\n", "* `min_args()` — [Reducing Failure-Inducing Inputs (Public API)](DeltaDebugger.ipynb#Public-API)\n", "* `min_arg_diff()` — [Reducing Failure-Inducing Inputs (Public API)](DeltaDebugger.ipynb#Public-API)\n", "* `min_patches()` — [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class)\n", "* MonkeyType — [Mining Function Specifications (Background)](DynamicInvariants.ipynb#Background)\n", "* Mozilla _Bugzilla_ issue tracker — [Tracking Bugs (Reporting an Issue)](Tracking.ipynb#Reporting-an-Issue)\n", "* `mul_with()` — [Tracking Failure Origins (Calls and Augmented Assign)](Slicer.ipynb#Calls-and-Augmented-Assign)\n", "* `mutate()` — [Generalizing Failure Circumstances (Mutating the Tree)](DDSetDebugger.ipynb#Mutating-the-Tree), [Repairing Code Automatically (All Together)](Repairer.ipynb#All-Together)\n", "* mutation testing — [Tracking Failure Origins (Assessing Test Quality)](Slicer.ipynb#Assessing-Test-Quality)\n", "* `myeval()` — [Reducing Failure-Inducing Inputs (Synopsis)](DeltaDebugger.ipynb#Synopsis)\n", "* `MyInt` class — [Tracking Failure Origins (Wrapping Data Objects)](Slicer.ipynb#Wrapping-Data-Objects)\n", "* Mypy — [Mining Function Specifications (Static Type Checking)](DynamicInvariants.ipynb#Static-Type-Checking)\n", "* `mystery()` — [Reducing Failure-Inducing Inputs (Why Reducing?)](DeltaDebugger.ipynb#Why-Reducing?)\n", "* `MyTime` class — [Asserting Expectations (Excursion: Checked Getters and Setters in Python)](Assertions.ipynb#Excursion:-Checked-Getters-and-Setters-in-Python)\n", "* `my_own_assert()` — [Asserting Expectations (Assertions)](Assertions.ipynb#Assertions)\n", "* `my_square_root()` — [Asserting Expectations (Synopsis)](Assertions.ipynb#Synopsis)\n" ] }, { "cell_type": "markdown", "id": "7309e0c8", "metadata": {}, "source": [ "### N\n", "\n", "* `NAME` — [How Debuggers Work (Synopsis)](Debugger.ipynb#Synopsis), [How Debuggers Work (Printing Values)](Debugger.ipynb#Printing-Values), [How Debuggers Work (Synopsis)](Debugger.ipynb#Synopsis), [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies)\n", "* `NDEBUG` — [Asserting Expectations (Assertion Diagnostics)](Assertions.ipynb#Assertion-Diagnostics), [Asserting Expectations (Assertion Diagnostics)](Assertions.ipynb#Assertion-Diagnostics)\n", "* Newton–Raphson method — [Asserting Expectations (Checking Results)](Assertions.ipynb#Checking-Results)\n", "* `new_issue()` — [Tracking Bugs (Excursion: Adding Some More Issue Reports)](Tracking.ipynb#Excursion:-Adding-Some-More-Issue-Reports)\n", "* `new_tree()` — [Generalizing Failure Circumstances (Creating new Subtrees)](DDSetDebugger.ipynb#Creating-new-Subtrees)\n", "* `__new__()` — [Tracking Failure Origins (Wrapping Data Objects)](Slicer.ipynb#Wrapping-Data-Objects)\n", "* `NoCallError` class — [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call)\n", "* `NodeCollector` class — [Reducing Failure-Inducing Inputs (Traversing Syntax Trees)](DeltaDebugger.ipynb#Traversing-Syntax-Trees)\n", "* `NodeMarker` class — [Reducing Failure-Inducing Inputs (Deleting Nodes)](DeltaDebugger.ipynb#Deleting-Nodes)\n", "* `NodeReducer` class — [Reducing Failure-Inducing Inputs (Deleting Nodes)](DeltaDebugger.ipynb#Deleting-Nodes), [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes), [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes), [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes), [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes)\n", "* `node_attr()` — [Generalizing Failure Circumstances (Derivation Trees)](DDSetDebugger.ipynb#Derivation-Trees)\n", "* `NODE_COLOR` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies)\n", "* `NODE_MAX_LENGTH` — [Repairing Code Automatically (Helpers)](Repairer.ipynb#Helpers)\n", "* `node_suspiciousness()` — [Repairing Code Automatically (Choosing Suspicious Statements to Mutate)](Repairer.ipynb#Choosing-Suspicious-Statements-to-Mutate)\n", "* `node_to_be_mutated()` — [Repairing Code Automatically (Choosing Suspicious Statements to Mutate)](Repairer.ipynb#Choosing-Suspicious-Statements-to-Mutate)\n", "* `NODE` — [Repairing Code Automatically (Swapping Statements)](Repairer.ipynb#Swapping-Statements), [Repairing Code Automatically (Inserting Statements)](Repairer.ipynb#Inserting-Statements), [Repairing Code Automatically (Inserting Statements)](Repairer.ipynb#Inserting-Statements), [Repairing Code Automatically (Inserting Statements)](Repairer.ipynb#Inserting-Statements), [Repairing Code Automatically (Deleting Statements)](Repairer.ipynb#Deleting-Statements), [Repairing Code Automatically (Deleting Statements)](Repairer.ipynb#Deleting-Statements)\n", "* `NotFailingError` class — [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging)\n", "* `NotPassingError` class — [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class)\n", "* `NUM_WORKERS` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes)\n" ] }, { "cell_type": "markdown", "id": "91764097", "metadata": {}, "source": [ "### O\n", "\n", "* `OchiaiDebugger` class — [Statistical Debugging (The Ochiai Metric)](StatisticalDebugger.ipynb#The-Ochiai-Metric)\n", "* official Python `ast` reference — [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses), [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements), [Repairing Code Automatically (Mutating Statements)](Repairer.ipynb#Mutating-Statements)\n", "* official Python `ast` reference](http://docs.python.org/3/library/ast) for a list of nodes (and some ideas on what to replace them by). The documentation [\"Green Tree Snakes - the missing Python AST docs\" — [Reducing Failure-Inducing Inputs (Exercise 1: Advanced Syntactic Code Reduction)](DeltaDebugger.ipynb#Exercise-1:-Advanced-Syntactic-Code-Reduction)\n", "* official Python `ast` reference](http://docs.python.org/3/library/ast) is complete, but a bit brief; the documentation [\"Green Tree Snakes - the missing Python AST docs\" — [Tracing Executions (Exercise 2: Syntax-Based Instrumentation)](Tracer.ipynb#Exercise-2:-Syntax-Based-Instrumentation), [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses), [Reducing Failure-Inducing Inputs (Traversing Syntax Trees)](DeltaDebugger.ipynb#Traversing-Syntax-Trees)\n", "* `only_fail_events()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `only_pass_events()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* oracles — [Mining Function Specifications (Checking Specifications)](DynamicInvariants.ipynb#Checking-Specifications)\n", "* `our_frame()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `our_with_block()` — [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation)\n", "* `overloaded_class_methods()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* overview at Livable Software](https://livablesoftware.com/tools-mine-analyze-github-git-software-data/) gives a great overview of platforms and tools for mining development data. One of the most ambitious ones is [GrimoireLab — [Where the Bugs are (Background)](ChangeCounter.ipynb#Background)\n" ] }, { "cell_type": "markdown", "id": "a4e16bd9", "metadata": {}, "source": [ "### P\n", "\n", "* `p1()` — [Repairing Code Automatically (Crossing Statement Lists)](Repairer.ipynb#Crossing-Statement-Lists), [Repairing Code Automatically (Crossover in Action)](Repairer.ipynb#Crossover-in-Action)\n", "* `p2()` — [Repairing Code Automatically (Crossing Statement Lists)](Repairer.ipynb#Crossing-Statement-Lists), [Repairing Code Automatically (Crossover in Action)](Repairer.ipynb#Crossover-in-Action)\n", "* `param()` — [Tracking Failure Origins (Excursion: Tracking Parameters)](Slicer.ipynb#Excursion:-Tracking-Parameters), [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments)\n", "* `params()` — [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations)\n", "* `parentsAreConsistent()` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* parse tree — [Generalizing Failure Circumstances (Parsing)](DDSetDebugger.ipynb#Parsing)\n", "* `parse()` — [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Repairing Code Automatically (Helper Functions)](Repairer.ipynb#Helper-Functions)\n", "* `parse_type()` — [Mining Function Specifications (Excursion: Annotating Functions with Given Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Given-Types)\n", "* `passed_fraction()` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* `password_checker()` — [Tracking Failure Origins (Verifying Information Flows)](Slicer.ipynb#Verifying-Information-Flows)\n", "* `pass_collectors()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `PASS_COLOR` — [Introduction to Debugging (Visualizing Code)](Intro_Debugging.ipynb#Visualizing-Code), [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories)\n", "* `pass_source()` — [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class)\n", "* `PASS_TREE` — [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes)\n", "* `PASS_VALUE` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* `PASS` — [Introduction to Debugging (Visualizing Code)](Intro_Debugging.ipynb#Visualizing-Code), [Reducing Failure-Inducing Inputs (Delta Debugging)](DeltaDebugger.ipynb#Delta-Debugging), [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories), [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `patch()` — [Isolating Failure-Inducing Changes (Computing and Applying Patches)](ChangeDebugger.ipynb#Computing-and-Applying-Patches)\n", "* `patches()` — [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class)\n", "* `patch_string()` — [Isolating Failure-Inducing Changes (Computing and Applying Patches)](ChangeDebugger.ipynb#Computing-and-Applying-Patches)\n", "* `percentage()` — [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum)\n", "* `PerformanceDebugger` class — [Debugging Performance Issues (Visualizing Time Spent)](PerformanceDebugger.ipynb#Visualizing-Time-Spent)\n", "* `PerformanceTracer` class — [Debugging Performance Issues (Building a Profiler)](PerformanceDebugger.ipynb#Building-a-Profiler), [Debugging Performance Issues (Building a Profiler)](PerformanceDebugger.ipynb#Building-a-Profiler), [Debugging Performance Issues (Building a Profiler)](PerformanceDebugger.ipynb#Building-a-Profiler)\n", "* plastic surgery hypothesis — [Repairing Code Automatically (Random Code Mutations)](Repairer.ipynb#Random-Code-Mutations)\n", "* `POPULATION_SIZE` — [Repairing Code Automatically (Population)](Repairer.ipynb#Population), [Repairing Code Automatically (Exercise 1: Automated Repair Parameters)](Repairer.ipynb#Exercise-1:-Automated-Repair-Parameters)\n", "* `postcondition()` — [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions)\n", "* `postconditions()` — [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations), [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers), [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `precondition()` — [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions)\n", "* `preconditions()` — [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations), [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers), [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `PreconditionTransformer` class — [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions)\n", "* `pretty_invariants()` — [Mining Function Specifications (Extracting Invariants)](DynamicInvariants.ipynb#Extracting-Invariants)\n", "* `primes_generator()` — [Generalizing Failure Circumstances (Referencing Subtrees)](DDSetDebugger.ipynb#Referencing-Subtrees)\n", "* `print_command()` — [How Debuggers Work (Printing Values)](Debugger.ipynb#Printing-Values), [How Debuggers Work (Printing Values)](Debugger.ipynb#Printing-Values)\n", "* `print_debugger_status()` — [Tracing Executions (Tracing Variable Changes)](Tracer.ipynb#Tracing-Variable-Changes), [Tracing Executions (Exercise 1: Exception Handling)](Tracer.ipynb#Exercise-1:-Exception-Handling)\n", "* `print_patch()` — [Isolating Failure-Inducing Changes (Computing and Applying Patches)](ChangeDebugger.ipynb#Computing-and-Applying-Patches)\n", "* `print_sum()` — [Mining Function Specifications (Sum of two Numbers)](DynamicInvariants.ipynb#Sum-of-two-Numbers)\n", "* `process_args()` — [Reducing Failure-Inducing Inputs (Processing Multiple Arguments)](DeltaDebugger.ipynb#Processing-Multiple-Arguments)\n", "* profile or cProfile — [Debugging Performance Issues (Measuring Performance)](PerformanceDebugger.ipynb#Measuring-Performance)\n", "* profiling — [Debugging Performance Issues (Measuring Performance)](PerformanceDebugger.ipynb#Measuring-Performance)\n", "* profiling](https://en.wikipedia.org/wiki/Profiling_(computer_programming)) and [performance analysis tools — [Debugging Performance Issues (Background)](PerformanceDebugger.ipynb#Background)\n", "* program-repair.org — [Repairing Code Automatically (Background)](Repairer.ipynb#Background)\n", "* `PROJECT` — [Isolating Failure-Inducing Changes (Create a Working Directory)](ChangeDebugger.ipynb#Create-a-Working-Directory)\n", "* `prop_function()` — [Mining Function Specifications (Evaluating Properties)](DynamicInvariants.ipynb#Evaluating-Properties)\n", "* `prop_function_text()` — [Mining Function Specifications (Evaluating Properties)](DynamicInvariants.ipynb#Evaluating-Properties)\n", "* ptrace() — [Tracing Executions (Low-Level Debugging Interfaces)](Tracer.ipynb#Low-Level-Debugging-Interfaces)\n", "* `public_class_methods()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* PyAnnotate — [Mining Function Specifications (Background)](DynamicInvariants.ipynb#Background)\n", "* PyDriller — [Debugging Performance Issues (Tracing Execution Profiles)](PerformanceDebugger.ipynb#Tracing-Execution-Profiles), [Where the Bugs are (Synopsis)](ChangeCounter.ipynb#Synopsis), [Where the Bugs are (Mining with PyDriller)](ChangeCounter.ipynb#Mining-with-PyDriller), [Where the Bugs are (Synopsis)](ChangeCounter.ipynb#Synopsis)\n", "* Python abstract syntax tree — [Repairing Code Automatically (Synopsis)](Repairer.ipynb#Synopsis), [Repairing Code Automatically (Synopsis)](Repairer.ipynb#Synopsis)\n", "* Python tutorial — [Introduction to Debugging (Understanding Python Programs)](Intro_Debugging.ipynb#Understanding-Python-Programs)\n" ] }, { "cell_type": "markdown", "id": "6c08ca24", "metadata": {}, "source": [ "## Q - U" ] }, { "cell_type": "markdown", "id": "08e22fd2", "metadata": {}, "source": [ "### Q\n", "\n", "* `quit_command()` — [How Debuggers Work (Quitting)](Debugger.ipynb#Quitting)\n", "* `quux()` — [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n", "* `qux()` — [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n", "* `qux` class — [Where the Bugs are (Determining Changed Elements)](ChangeCounter.ipynb#Determining-Changed-Elements)\n" ] }, { "cell_type": "markdown", "id": "ccce1c96", "metadata": {}, "source": [ "### R\n", "\n", "* `random_html()` — [Repairing Code Automatically (Excursion: Creating HTML Test Cases)](Repairer.ipynb#Excursion:-Creating-HTML-Test-Cases)\n", "* `random_id()` — [Repairing Code Automatically (Excursion: Creating HTML Test Cases)](Repairer.ipynb#Excursion:-Creating-HTML-Test-Cases)\n", "* `random_plain()` — [Repairing Code Automatically (Excursion: Creating HTML Test Cases)](Repairer.ipynb#Excursion:-Creating-HTML-Test-Cases)\n", "* `random_string()` — [Repairing Code Automatically (Excursion: Creating HTML Test Cases)](Repairer.ipynb#Excursion:-Creating-HTML-Test-Cases)\n", "* `random_string_noquotes()` — [Repairing Code Automatically (Excursion: Creating HTML Test Cases)](Repairer.ipynb#Excursion:-Creating-HTML-Test-Cases)\n", "* `rank()` — [Statistical Debugging (Ranking Lines by Suspiciousness)](StatisticalDebugger.ipynb#Ranking-Lines-by-Suspiciousness)\n", "* `RankingDebugger` class — [Statistical Debugging (Ranking Lines by Suspiciousness)](StatisticalDebugger.ipynb#Ranking-Lines-by-Suspiciousness)\n", "* `read()` — [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory)\n", "* record+replay \"rr\" debugger — [How Debuggers Work (Background)](Debugger.ipynb#Background)\n", "* red-black search tree — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* Red-Black Tree — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* `RedBlackNode` class — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* `RedBlackTree` class — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* `redNodesHaveOnlyBlackChildren()` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* `reduce()` — [Repairing Code Automatically (Simplifying)](Repairer.ipynb#Simplifying)\n", "* `reduce_arg()` — [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching)\n", "* `RED` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Consider Leaving Some Assertions On)](Assertions.ipynb#Consider-Leaving-Some-Assertions-On)\n", "* Regular expressions — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* `remove_first_char()` — [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers), [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers)\n", "* `REMOVE_HTML_FAILING_TESTCASES` — [Repairing Code Automatically (Removing HTML Markup)](Repairer.ipynb#Removing-HTML-Markup), [Repairing Code Automatically (Excursion: Creating HTML Test Cases)](Repairer.ipynb#Excursion:-Creating-HTML-Test-Cases)\n", "* `remove_html_markup()` — [Introduction to Debugging (Your Task: Remove HTML Markup)](Intro_Debugging.ipynb#Your-Task:-Remove-HTML-Markup), [Introduction to Debugging (A First Fix)](Intro_Debugging.ipynb#A-First-Fix), [Introduction to Debugging (Fixing the Code)](Intro_Debugging.ipynb#Fixing-the-Code), [Introduction to Debugging (Add Assertions)](Intro_Debugging.ipynb#Add-Assertions), [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [Asserting Expectations (Partial Checks)](Assertions.ipynb#Partial-Checks), [Asserting Expectations (Partial Checks)](Assertions.ipynb#Partial-Checks), [Isolating Failure-Inducing Changes (Initialize Git)](ChangeDebugger.ipynb#Initialize-Git), [Isolating Failure-Inducing Changes (Initialize Git)](ChangeDebugger.ipynb#Initialize-Git), [Isolating Failure-Inducing Changes (Excursion: Adding More Revisions)](ChangeDebugger.ipynb#Excursion:-Adding-More-Revisions), [Isolating Failure-Inducing Changes (Excursion: Adding More Revisions)](ChangeDebugger.ipynb#Excursion:-Adding-More-Revisions), [Isolating Failure-Inducing Changes (Excursion: Adding More Revisions)](ChangeDebugger.ipynb#Excursion:-Adding-More-Revisions), [Isolating Failure-Inducing Changes (Excursion: Adding More Revisions)](ChangeDebugger.ipynb#Excursion:-Adding-More-Revisions), [Isolating Failure-Inducing Changes (Excursion: Adding More Revisions)](ChangeDebugger.ipynb#Excursion:-Adding-More-Revisions), [Isolating Failure-Inducing Changes (End of Excursion)](ChangeDebugger.ipynb#End-of-Excursion), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Generalizing Failure Circumstances (A Failing Program)](DDSetDebugger.ipynb#A-Failing-Program), [Repairing Code Automatically (Removing HTML Markup)](Repairer.ipynb#Removing-HTML-Markup)\n", "* `remove_html_markup_ampersand()` — [Debugging Performance Issues (Integrating with Delta Debugging)](PerformanceDebugger.ipynb#Integrating-with-Delta-Debugging)\n", "* `remove_html_markup_deps()` — [Tracking Failure Origins (Slices)](Slicer.ipynb#Slices)\n", "* `remove_html_markup_fixed()` — [Introduction to Debugging (Use the Most Obvious Fix)](Intro_Debugging.ipynb#Use-the-Most-Obvious-Fix)\n", "* `remove_html_markup_test()` — [Repairing Code Automatically (Removing HTML Markup)](Repairer.ipynb#Removing-HTML-Markup)\n", "* `remove_html_markup_traced()` — [Tracing Executions (Tracing Python Programs)](Tracer.ipynb#Tracing-Python-Programs)\n", "* `remove_html_markup_tree()` — [Repairing Code Automatically (Removing HTML Markup)](Repairer.ipynb#Removing-HTML-Markup)\n", "* `remove_html_markup_without_quotes()` — [Introduction to Debugging (Debugging into Existence)](Intro_Debugging.ipynb#Debugging-into-Existence)\n", "* `remove_html_markup_with_print()` — [Introduction to Debugging (Printf Debugging)](Intro_Debugging.ipynb#Printf-Debugging)\n", "* `remove_html_markup_with_proper_quotes()` — [Introduction to Debugging (Part 3: Fix the Problem)](Intro_Debugging.ipynb#Part-3:-Fix-the-Problem)\n", "* `remove_html_markup_with_quote_assert()` — [Introduction to Debugging (Refuting a Hypothesis)](Intro_Debugging.ipynb#Refuting-a-Hypothesis)\n", "* `remove_html_markup_with_tag_assert()` — [Introduction to Debugging (Refining a Hypothesis)](Intro_Debugging.ipynb#Refining-a-Hypothesis)\n", "* `REMOVE_HTML_PASSING_TESTCASES` — [Repairing Code Automatically (Removing HTML Markup)](Repairer.ipynb#Removing-HTML-Markup), [Repairing Code Automatically (Excursion: Creating HTML Test Cases)](Repairer.ipynb#Excursion:-Creating-HTML-Test-Cases)\n", "* `remove_html_test()` — [Debugging Performance Issues (Integrating with Delta Debugging)](PerformanceDebugger.ipynb#Integrating-with-Delta-Debugging)\n", "* `remove_html_testcase()` — [Repairing Code Automatically (Excursion: Creating HTML Test Cases)](Repairer.ipynb#Excursion:-Creating-HTML-Test-Cases)\n", "* `REMOVE_HTML_TESTS` — [Repairing Code Automatically (Excursion: Creating HTML Test Cases)](Repairer.ipynb#Excursion:-Creating-HTML-Test-Cases)\n", "* `repair()` — [Repairing Code Automatically (Repairing)](Repairer.ipynb#Repairing)\n", "* `Repairer` class — [Repairing Code Automatically (Excursion: Implementing Repairer)](Repairer.ipynb#Excursion:-Implementing-Repairer), [Repairing Code Automatically (Helper Functions)](Repairer.ipynb#Helper-Functions), [Repairing Code Automatically (Helper Functions)](Repairer.ipynb#Helper-Functions), [Repairing Code Automatically (Helper Functions)](Repairer.ipynb#Helper-Functions), [Repairing Code Automatically (Helper Functions)](Repairer.ipynb#Helper-Functions), [Repairing Code Automatically (Running Tests)](Repairer.ipynb#Running-Tests), [Repairing Code Automatically (Running Tests)](Repairer.ipynb#Running-Tests), [Repairing Code Automatically (Running Tests)](Repairer.ipynb#Running-Tests), [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions), [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions), [Repairing Code Automatically (Repairing)](Repairer.ipynb#Repairing), [Repairing Code Automatically (Evolving)](Repairer.ipynb#Evolving), [Repairing Code Automatically (Evolving)](Repairer.ipynb#Evolving), [Repairing Code Automatically (Simplifying)](Repairer.ipynb#Simplifying), [Repairing Code Automatically (Simplifying)](Repairer.ipynb#Simplifying)\n", "* `repOK()` — [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion), [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures), [Asserting Expectations (Task 2 – Global Consistency)](Assertions.ipynb#Task-2-–-Global-Consistency)\n", "* `repr_dependencies()` — [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies)\n", "* `repr_deps()` — [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies)\n", "* `_repr_html_()` — [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum)\n", "* `_repr_markdown_()` — [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table)\n", "* `_repr_mimebundle_()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class)\n", "* `repr_var()` — [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies)\n", "* `__repr__()` — [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs), [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies), [Tracking Failure Origins (Wrapping Data Objects)](Slicer.ipynb#Wrapping-Data-Objects), [Reducing Failure-Inducing Inputs (Public API)](DeltaDebugger.ipynb#Public-API), [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum), [Statistical Debugging (Ranking Lines by Suspiciousness)](StatisticalDebugger.ipynb#Ranking-Lines-by-Suspiciousness), [Mining Function Specifications (Excursion: A Type Annotator Class)](DynamicInvariants.ipynb#Excursion:-A-Type-Annotator-Class), [Mining Function Specifications (Converting Mined Invariants to Annotations)](DynamicInvariants.ipynb#Converting-Mined-Invariants-to-Annotations), [Generalizing Failure Circumstances (Generalizing Arguments)](DDSetDebugger.ipynb#Generalizing-Arguments)\n", "* `reset()` — [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching), [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* `reset_timer()` — [Debugging Performance Issues (Building a Profiler)](PerformanceDebugger.ipynb#Building-a-Profiler), [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent)\n", "* `restore()` — [Tracking Failure Origins (An Instrumenter Base Class)](Slicer.ipynb#An-Instrumenter-Base-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class)\n", "* `ret()` — [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments), [Tracking Failure Origins (Excursion: Calls and Returns)](Slicer.ipynb#Excursion:-Calls-and-Returns), [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging)\n", "* `return_value()` — [Tracking Failure Origins (Excursion: Tracking Return Values)](Slicer.ipynb#Excursion:-Tracking-Return-Values)\n", "* `RETURN_VALUE` — [Mining Function Specifications (Extracting Invariants)](DynamicInvariants.ipynb#Extracting-Invariants)\n", "* `ret_generator()` — [Tracking Failure Origins (Excursion: Calls and Returns)](Slicer.ipynb#Excursion:-Calls-and-Returns)\n", "* `RE_SPACE` — [Repairing Code Automatically (Choosing a Mutation Method)](Repairer.ipynb#Choosing-a-Mutation-Method)\n", "* `rootHasNoParent()` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* `rootIsBlack()` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* rubber duck debugging — [Introduction to Debugging (Rubberducking)](Intro_Debugging.ipynb#Rubberducking)\n", "* Rubber duck debugging — [Introduction to Debugging (Rubberducking)](Intro_Debugging.ipynb#Rubberducking)\n", "* rubberducking — [Introduction to Debugging (Rubberducking)](Intro_Debugging.ipynb#Rubberducking)\n", "* `run()` — [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching)\n", "* `run_redmine()` — [Tracking Bugs (Excursion: Starting Redmine)](Tracking.ipynb#Excursion:-Starting-Redmine)\n", "* `run_tests()` — [Repairing Code Automatically (Running Tests)](Repairer.ipynb#Running-Tests)\n", "* `run_test_set()` — [Repairing Code Automatically (Running Tests)](Repairer.ipynb#Running-Tests)\n", "* `rxdelim()` — [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations)\n" ] }, { "cell_type": "markdown", "id": "ed961910", "metadata": {}, "source": [ "### S\n", "\n", "* `samples()` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* scalene — [Debugging Performance Issues (Measuring Performance)](PerformanceDebugger.ipynb#Measuring-Performance)\n", "* Scalene — [Debugging Performance Issues (Sampling Execution Profiles)](PerformanceDebugger.ipynb#Sampling-Execution-Profiles), [Debugging Performance Issues (Background)](PerformanceDebugger.ipynb#Background)\n", "* scientific method — [Introduction to Debugging (The Scientific Method)](Intro_Debugging.ipynb#The-Scientific-Method)\n", "* `screenshot()` — [Tracking Bugs (Excursion: Screenshots with Drop Shadows)](Tracking.ipynb#Excursion:-Screenshots-with-Drop-Shadows)\n", "* `search_frame()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `search_func()` — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `search_superclasses()` — [Class Diagrams (Getting Methods and Variables)](ClassDiagram.ipynb#Getting-Methods-and-Variables)\n", "* `second()` — [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n", "* `seconds()` — [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs)\n", "* `seconds_since_midnight()` — [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion)\n", "* `SECRET_HASH_DIGEST` — [Tracking Failure Origins (Verifying Information Flows)](Slicer.ipynb#Verifying-Information-Flows)\n", "* Selenium](https://www.seleniumhq.org) is a framework for testing Web applications by _automating interaction in the browser_. Selenium provides an API that allows one to launch a Web browser, query the state of the user interface, and interact with individual user interface elements. The Selenium API is available in a number of languages; we use the [Selenium API for Python — [Tracking Bugs (Excursion: Remote Control with Selenium)](Tracking.ipynb#Excursion:-Remote-Control-with-Selenium)\n", "* SemFix — [Repairing Code Automatically (Background)](Repairer.ipynb#Background)\n", "* `set()` — [Tracking Failure Origins (A Data Tracker)](Slicer.ipynb#A-Data-Tracker), [Tracking Failure Origins (Setting Variables)](Slicer.ipynb#Setting-Variables)\n", "* `__setitem__()` — [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Exercise 1 – Storage Assertions)](Assertions.ipynb#Exercise-1-–-Storage-Assertions), [Asserting Expectations (Task 1 – Local Consistency)](Assertions.ipynb#Task-1-–-Local-Consistency), [Asserting Expectations (Task 2 – Global Consistency)](Assertions.ipynb#Task-2-–-Global-Consistency)\n", "* `set_hours()` — [Asserting Expectations (Invariant Checkers)](Assertions.ipynb#Invariant-Checkers), [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion)\n", "* `SGML` — [Where the Bugs are (Mapping Elements to Locations)](ChangeCounter.ipynb#Mapping-Elements-to-Locations)\n", "* `ShadowStorage` class — [Asserting Expectations (Task 2 – Global Consistency)](Assertions.ipynb#Task-2-–-Global-Consistency)\n", "* `shape()` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* `shelve` — [Asserting Expectations (Exercise 1 – Storage Assertions)](Assertions.ipynb#Exercise-1-–-Storage-Assertions)\n", "* showast — [Mining Function Specifications (Excursion: Accessing Function Structure)](DynamicInvariants.ipynb#Excursion:-Accessing-Function-Structure)\n", "* `show_allocated()` — [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory)\n", "* `show_classifier()` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n", "* `show_contents()` — [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory)\n", "* `show_header()` — [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Excursion: Dynamic Memory in C)](Assertions.ipynb#Excursion:-Dynamic-Memory-in-C)\n", "* `show_initialized()` — [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory)\n", "* `show_sep()` — [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator)\n", "* sibling book on test generation — [Isolating Failure-Inducing Changes (Changes and Bugs)](ChangeDebugger.ipynb#Changes-and-Bugs)\n", "* `SIGALRM` — [Timeout (Synopsis)](Timeout.ipynb#Synopsis), [Timeout (Synopsis)](Timeout.ipynb#Synopsis)\n", "* `SIGALRM` signals](https://docs.python.org/3.10/library/signal.html) (interrupts) to implement timeouts; this has no effect on performance of the tracked code. On other systems (notably Windows), `Timeout` uses the [`sys.settrace()` — [Timeout (Synopsis)](Timeout.ipynb#Synopsis), [Timeout (Synopsis)](Timeout.ipynb#Synopsis)\n", "* `SignalTimeout` class — [Timeout (Variant 1: Unix (using signals, efficient))](Timeout.ipynb#Variant-1:-Unix-(using-signals,-efficient))\n", "* `simple_call_string()` — [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* `SIMPLE_HTML_GRAMMAR` — [Generalizing Failure Circumstances (Parsing)](DDSetDebugger.ipynb#Parsing)\n", "* `SKIP_LIST` — [Repairing Code Automatically (Applying Crossover on Programs)](Repairer.ipynb#Applying-Crossover-on-Programs)\n", "* `Slicer` class — [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class), [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation), [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation), [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation), [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation)\n", "* slicing criteria — [Tracking Failure Origins (Slices)](Slicer.ipynb#Slices)\n", "* `slider()` — [How Debuggers Work (Part 3: Graphical User Interface)](Debugger.ipynb#Part-3:-Graphical-User-Interface)\n", "* `some_extreme_function()` — [Tracing Executions (Efficient Tracing)](Tracer.ipynb#Efficient-Tracing)\n", "* `some_long_running_function()` — [Timer (Measuring Time)](Timer.ipynb#Measuring-Time), [Timeout (Variant 1: Unix (using signals, efficient))](Timeout.ipynb#Variant-1:-Unix-(using-signals,-efficient))\n", "* `some_obscure_function()` — [Asserting Expectations (Assertions and Documentation)](Assertions.ipynb#Assertions-and-Documentation)\n", "* `_source()` — [Tracking Failure Origins (A Class for Dependencies)](Slicer.ipynb#A-Class-for-Dependencies)\n", "* `source()` — [Tracking Failure Origins (A Class for Dependencies)](Slicer.ipynb#A-Class-for-Dependencies)\n", "* `SpectrumDebugger` class — [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum)\n", "* `split()` — [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging)\n", "* `sq()` — [Tracking Failure Origins (Excursion: Function Arguments)](Slicer.ipynb#Excursion:-Function-Arguments)\n", "* `square_root()` — [Asserting Expectations (Checking Preconditions)](Assertions.ipynb#Checking-Preconditions), [Asserting Expectations (Checking Preconditions)](Assertions.ipynb#Checking-Preconditions), [Asserting Expectations (Checking Results)](Assertions.ipynb#Checking-Results), [Asserting Expectations (Checking Results)](Assertions.ipynb#Checking-Results), [Asserting Expectations (Checking Results)](Assertions.ipynb#Checking-Results), [Asserting Expectations (Checking Results)](Assertions.ipynb#Checking-Results), [Mining Function Specifications (Specifications and Assertions)](DynamicInvariants.ipynb#Specifications-and-Assertions), [Mining Function Specifications (Beyond Generic Failures)](DynamicInvariants.ipynb#Beyond-Generic-Failures)\n", "* `square_root_annotated()` — [Mining Function Specifications (Getting Types)](DynamicInvariants.ipynb#Getting-Types)\n", "* `square_root_fixed()` — [Repairing Code Automatically (Exercise 3: Evolving Values)](Repairer.ipynb#Exercise-3:-Evolving-Values)\n", "* `square_root_test()` — [Generalizing Failure Circumstances (Square Root)](DDSetDebugger.ipynb#Square-Root)\n", "* `square_root_unchecked()` — [Tracking Failure Origins (Assessing Test Quality)](Slicer.ipynb#Assessing-Test-Quality)\n", "* `square_root_with_invariants()` — [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions)\n", "* `square_root_with_local_types()` — [Mining Function Specifications (Exercise 2: Types for Local Variables)](DynamicInvariants.ipynb#Exercise-2:-Types-for-Local-Variables)\n", "* `square_root_with_postcondition()` — [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions)\n", "* `square_root_with_precondition()` — [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions)\n", "* `square_root_with_type_annotations()` — [Mining Function Specifications (Mining Data Types)](DynamicInvariants.ipynb#Mining-Data-Types)\n", "* `square_root_with_union_type()` — [Mining Function Specifications (Exercise 1: Union Types)](DynamicInvariants.ipynb#Exercise-1:-Union-Types)\n", "* `StackInspectorDemo` class — [Inspecting Call Stacks (Synopsis)](StackInspector.ipynb#Synopsis)\n", "* `StackInspector` class — [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks), [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks), [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks), [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks), [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks), [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks), [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `start_redmine()` — [Tracking Bugs (Excursion: Starting Redmine)](Tracking.ipynb#Excursion:-Starting-Redmine)\n", "* `start_webdriver()` — [Tracking Bugs (Excursion: Remote Control with Selenium)](Tracking.ipynb#Excursion:-Remote-Control-with-Selenium)\n", "* `StatementMutator` class — [Repairing Code Automatically (Mutating Statements)](Repairer.ipynb#Mutating-Statements), [Repairing Code Automatically (Choosing Suspicious Statements to Mutate)](Repairer.ipynb#Choosing-Suspicious-Statements-to-Mutate), [Repairing Code Automatically (Choosing Suspicious Statements to Mutate)](Repairer.ipynb#Choosing-Suspicious-Statements-to-Mutate), [Repairing Code Automatically (Choosing a Mutation Method)](Repairer.ipynb#Choosing-a-Mutation-Method), [Repairing Code Automatically (Swapping Statements)](Repairer.ipynb#Swapping-Statements), [Repairing Code Automatically (Swapping Statements)](Repairer.ipynb#Swapping-Statements), [Repairing Code Automatically (Inserting Statements)](Repairer.ipynb#Inserting-Statements), [Repairing Code Automatically (Deleting Statements)](Repairer.ipynb#Deleting-Statements), [Repairing Code Automatically (Helpers)](Repairer.ipynb#Helpers), [Repairing Code Automatically (All Together)](Repairer.ipynb#All-Together)\n", "* `StatementVisitor` class — [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements)\n", "* `StatisticalDebugger` class — [Statistical Debugging (A Base Class for Statistical Debugging)](StatisticalDebugger.ipynb#A-Base-Class-for-Statistical-Debugging), [Statistical Debugging (A Base Class for Statistical Debugging)](StatisticalDebugger.ipynb#A-Base-Class-for-Statistical-Debugging), [Statistical Debugging (A Base Class for Statistical Debugging)](StatisticalDebugger.ipynb#A-Base-Class-for-Statistical-Debugging), [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table)\n", "* `STEP_COLOR` — [Introduction to Debugging (Visualizing Code)](Intro_Debugging.ipynb#Visualizing-Code), [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories)\n", "* `step_command()` — [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction)\n", "* `stop_here()` — [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction)\n", "* `Storage` class — [Asserting Expectations (Exercise 1 – Storage Assertions)](Assertions.ipynb#Exercise-1-–-Storage-Assertions), [Asserting Expectations (Task 1 – Local Consistency)](Assertions.ipynb#Task-1-–-Local-Consistency)\n", "* `StoreVisitor` class — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `store_names()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `string_error()` — [Reducing Failure-Inducing Inputs (Reducing Multiple Arguments)](DeltaDebugger.ipynb#Reducing-Multiple-Arguments)\n", "* `__str__()` — [Tracking Failure Origins (Excursion: Listing Dependencies)](Slicer.ipynb#Excursion:-Listing-Dependencies), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum)\n", "* `sum2()` — [Mining Function Specifications (Avoiding Overspecialization)](DynamicInvariants.ipynb#Avoiding-Overspecialization), [Mining Function Specifications (Synopsis)](DynamicInvariants.ipynb#Synopsis)\n", "* `sum3()` — [Mining Function Specifications (Excursion: Handling Multiple Types)](DynamicInvariants.ipynb#Excursion:-Handling-Multiple-Types)\n", "* `susp()` — [Statistical Debugging (Ranking Lines by Suspiciousness)](StatisticalDebugger.ipynb#Ranking-Lines-by-Suspiciousness)\n", "* `suspiciousness()` — [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum), [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum), [Statistical Debugging (The Ochiai Metric)](StatisticalDebugger.ipynb#The-Ochiai-Metric), [Debugging Performance Issues (Visualizing Time Spent)](PerformanceDebugger.ipynb#Visualizing-Time-Spent)\n", "* `suspiciousness_func()` — [Repairing Code Automatically (Mutating Statements)](Repairer.ipynb#Mutating-Statements)\n", "* `swap()` — [Repairing Code Automatically (Swapping Statements)](Repairer.ipynb#Swapping-Statements), [Repairing Code Automatically (Mutating Conditions)](Repairer.ipynb#Mutating-Conditions)\n", "* syntactical structure — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* syntax tree — [Generalizing Failure Circumstances (Derivation Trees)](DDSetDebugger.ipynb#Derivation-Trees)\n" ] }, { "cell_type": "markdown", "id": "cec421c1", "metadata": {}, "source": [ "### T\n", "\n", "* `T1` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `T2` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `T3` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* `TarantulaDebugger` class — [Statistical Debugging (The Tarantula Metric)](StatisticalDebugger.ipynb#The-Tarantula-Metric)\n", "* test — [Introduction to Debugging (Running a Function)](Intro_Debugging.ipynb#Running-a-Function)\n", "* `test()` — [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Tracking Failure Origins (Excursion: Control Dependencies)](Slicer.ipynb#Excursion:-Control-Dependencies), [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching), [Reducing Failure-Inducing Inputs (Testing, Logging, and Caching)](DeltaDebugger.ipynb#Testing,-Logging,-and-Caching), [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging), [Isolating Failure-Inducing Changes (High-Level Interface)](ChangeDebugger.ipynb#High-Level-Interface), [Generalizing Failure Circumstances (Generalizing Arguments)](DDSetDebugger.ipynb#Generalizing-Arguments), [Inspecting Call Stacks (Synopsis)](StackInspector.ipynb#Synopsis)\n", "* `test_call()` — [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments)\n", "* `test_debugger_html()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `test_debugger_html_simple()` — [Statistical Debugging (Collecting Passing and Failing Runs)](StatisticalDebugger.ipynb#Collecting-Passing-and-Failing-Runs)\n", "* `test_debugger_middle()` — [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum)\n", "* `test_math()` — [Tracking Failure Origins (Calls and Augmented Assign)](Slicer.ipynb#Calls-and-Augmented-Assign)\n", "* `test_middle_lines()` — [Repairing Code Automatically (Simplifying)](Repairer.ipynb#Simplifying)\n", "* `test_patches()` — [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class)\n", "* `test_reduce()` — [Repairing Code Automatically (Simplifying)](Repairer.ipynb#Simplifying)\n", "* `test_remove_html_markup()` — [Isolating Failure-Inducing Changes (A ChangeDebugger class)](ChangeDebugger.ipynb#A-ChangeDebugger-class)\n", "* `test_remove_html_markup_patches()` — [Isolating Failure-Inducing Changes (Delta Debugging on Patches)](ChangeDebugger.ipynb#Delta-Debugging-on-Patches)\n", "* `test_square_root()` — [Asserting Expectations (Assertions)](Assertions.ipynb#Assertions)\n", "* `test_tree()` — [Generalizing Failure Circumstances (Generalizing Trees)](DDSetDebugger.ipynb#Generalizing-Trees)\n", "* `TEST` — [Tracking Failure Origins (Setting Variables)](Slicer.ipynb#Setting-Variables)\n", "* the etymology of the word \"bug\"](http://www.catb.org/~esr/jargon/html/B/bug.html) in [The Jargon File](http://www.catb.org/~esr/jargon/). Also check out the [Wikipedia entry on debugging — [Introduction to Debugging (Debugging Aftermath)](Intro_Debugging.ipynb#Debugging-Aftermath)\n", "* The Fuzzing Book — [Mining Function Specifications (Avoiding Overspecialization)](DynamicInvariants.ipynb#Avoiding-Overspecialization)\n", "* the fuzzing book — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars), [Generalizing Failure Circumstances (Parsing)](DDSetDebugger.ipynb#Parsing)\n", "* the GNU command-line debugger (GDB) — [How Debuggers Work (Exercise 2: More Commands)](Debugger.ipynb#Exercise-2:-More-Commands)\n", "* \"The state of type hints in Python\" — [Mining Function Specifications (Background)](DynamicInvariants.ipynb#Background)\n", "* the Whyline — [Tracking Failure Origins (Background)](Slicer.ipynb#Background)\n", "* theory — [Introduction to Debugging (The Scientific Method)](Intro_Debugging.ipynb#The-Scientific-Method), [Introduction to Debugging (Fixing the Bug)](Intro_Debugging.ipynb#Fixing-the-Bug)\n", "* this blog post — [How Debuggers Work (Exercise 1: Changing State)](Debugger.ipynb#Exercise-1:-Changing-State)\n", "* this discussion in StackOverflow — [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging)\n", "* `TimeCollector` class — [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent)\n", "* `timeout_handler()` — [Timeout (Variant 1: Unix (using signals, efficient))](Timeout.ipynb#Variant-1:-Unix-(using-signals,-efficient))\n", "* `Timer` class — [Timer (Measuring Time)](Timer.ipynb#Measuring-Time)\n", "* `Time` class — [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs), [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs), [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs), [Asserting Expectations (Times and Time Bombs)](Assertions.ipynb#Times-and-Time-Bombs), [Asserting Expectations (Invariant Checkers)](Assertions.ipynb#Invariant-Checkers), [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion), [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion), [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion), [Asserting Expectations (End of Excursion)](Assertions.ipynb#End-of-Excursion)\n", "* `tooltip()` — [Tracking Failure Origins (Drawing Dependencies)](Slicer.ipynb#Drawing-Dependencies), [Statistical Debugging (Excursion: Printing an Event Table)](StatisticalDebugger.ipynb#Excursion:-Printing-an-Event-Table), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum), [Statistical Debugging (Discrete Spectrum)](StatisticalDebugger.ipynb#Discrete-Spectrum), [Statistical Debugging (Continuous Spectrum)](StatisticalDebugger.ipynb#Continuous-Spectrum), [Debugging Performance Issues (Visualizing Time Spent)](PerformanceDebugger.ipynb#Visualizing-Time-Spent)\n", "* `toplevel_defs()` — [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions)\n", "* `total()` — [Debugging Performance Issues (Collecting Time Spent)](PerformanceDebugger.ipynb#Collecting-Time-Spent), [Debugging Performance Issues (Visualizing Time Spent)](PerformanceDebugger.ipynb#Visualizing-Time-Spent)\n", "* `to_set()` — [Reducing Failure-Inducing Inputs (General Delta Debugging)](DeltaDebugger.ipynb#General-Delta-Debugging)\n", "* trace — [Tracing Executions (Tracing Python Programs)](Tracer.ipynb#Tracing-Python-Programs)\n", "* `traceit()` — [Tracing Executions (Tracing Python Programs)](Tracer.ipynb#Tracing-Python-Programs), [Tracing Executions (Tracing Python Programs)](Tracer.ipynb#Tracing-Python-Programs), [Tracing Executions (Tracing Python Programs)](Tracer.ipynb#Tracing-Python-Programs), [Tracing Executions (Tracing Python Programs)](Tracer.ipynb#Tracing-Python-Programs), [Tracing Executions (A Tracer Class)](Tracer.ipynb#A-Tracer-Class), [Tracing Executions (Accessing Source Code)](Tracer.ipynb#Accessing-Source-Code), [Tracing Executions (Tracing Calls and Returns)](Tracer.ipynb#Tracing-Calls-and-Returns), [Tracing Executions (Tracing Variable Changes)](Tracer.ipynb#Tracing-Variable-Changes), [Tracing Executions (Conditional Tracing)](Tracer.ipynb#Conditional-Tracing), [How Debuggers Work (Debugger Interaction)](Debugger.ipynb#Debugger-Interaction), [Reducing Failure-Inducing Inputs (Collecting a Call)](DeltaDebugger.ipynb#Collecting-a-Call), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Statistical Debugging (Collecting Events)](StatisticalDebugger.ipynb#Collecting-Events), [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls), [Debugging Performance Issues (Building a Profiler)](PerformanceDebugger.ipynb#Building-a-Profiler)\n", "* `_traceit()` — [Tracing Executions (A Tracer Class)](Tracer.ipynb#A-Tracer-Class)\n", "* `tracemalloc` module — [Debugging Performance Issues (Exercise 1: Profiling Memory Usage)](PerformanceDebugger.ipynb#Exercise-1:-Profiling-Memory-Usage)\n", "* `TRACER_CODE` — [Tracing Executions (Efficient Tracing)](Tracer.ipynb#Efficient-Tracing)\n", "* `TRACER` — [Tracing Executions (Efficient Tracing)](Tracer.ipynb#Efficient-Tracing), [Tracing Executions (Efficient Tracing)](Tracer.ipynb#Efficient-Tracing)\n", "* `Tracer` class — [Tracing Executions (A Tracer Class)](Tracer.ipynb#A-Tracer-Class), [Tracing Executions (Accessing Source Code)](Tracer.ipynb#Accessing-Source-Code), [Tracing Executions (Tracing Calls and Returns)](Tracer.ipynb#Tracing-Calls-and-Returns), [Tracing Executions (Tracing Variable Changes)](Tracer.ipynb#Tracing-Variable-Changes), [Tracing Executions (Tracing Variable Changes)](Tracer.ipynb#Tracing-Variable-Changes), [Tracing Executions (Exercise 1: Exception Handling)](Tracer.ipynb#Exercise-1:-Exception-Handling)\n", "* `trace_call()` — [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* `trace_return()` — [Mining Function Specifications (Tracing Calls)](DynamicInvariants.ipynb#Tracing-Calls)\n", "* tracing function — [Tracing Executions (Tracing Python Programs)](Tracer.ipynb#Tracing-Python-Programs)\n", "* `TrackCallTransformer` class — [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments)\n", "* `TrackControlTransformer` class — [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control)\n", "* `TrackGetTransformer` class — [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses)\n", "* `TrackParamsTransformer` class — [Tracking Failure Origins (Excursion: Tracking Parameters)](Slicer.ipynb#Excursion:-Tracking-Parameters)\n", "* `TrackReturnTransformer` class — [Tracking Failure Origins (Excursion: Tracking Return Values)](Slicer.ipynb#Excursion:-Tracking-Return-Values)\n", "* `TrackSetTransformer` class — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `transform()` — [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class)\n", "* `transformers()` — [Tracking Failure Origins (The Slicer Class)](Slicer.ipynb#The-Slicer-Class)\n", "* `traverse_tree()` — [Class Diagrams (Getting a Class Tree)](ClassDiagram.ipynb#Getting-a-Class-Tree)\n", "* `TreeGeneralizer` class — [Generalizing Failure Circumstances (Generalizing Trees)](DDSetDebugger.ipynb#Generalizing-Trees), [Generalizing Failure Circumstances (Generalizing Trees)](DDSetDebugger.ipynb#Generalizing-Trees), [Generalizing Failure Circumstances (Testing for Generalization)](DDSetDebugger.ipynb#Testing-for-Generalization), [Generalizing Failure Circumstances (Generalizable Paths)](DDSetDebugger.ipynb#Generalizable-Paths), [Generalizing Failure Circumstances (Generalizable Paths)](DDSetDebugger.ipynb#Generalizable-Paths), [Generalizing Failure Circumstances (Generalizable Paths)](DDSetDebugger.ipynb#Generalizable-Paths), [Generalizing Failure Circumstances (Fuzzing with Patterns)](DDSetDebugger.ipynb#Fuzzing-with-Patterns)\n", "* `treeIsAcyclic()` — [Asserting Expectations (Large Data Structures)](Assertions.ipynb#Large-Data-Structures)\n", "* `TreeMutator` class — [Generalizing Failure Circumstances (Mutating the Tree)](DDSetDebugger.ipynb#Mutating-the-Tree), [Generalizing Failure Circumstances (Referencing Subtrees)](DDSetDebugger.ipynb#Referencing-Subtrees), [Generalizing Failure Circumstances (Creating new Subtrees)](DDSetDebugger.ipynb#Creating-new-Subtrees), [Generalizing Failure Circumstances (Mutating the Tree)](DDSetDebugger.ipynb#Mutating-the-Tree)\n", "* `true_property_instantiations()` — [Mining Function Specifications (Checking Invariants)](DynamicInvariants.ipynb#Checking-Invariants)\n", "* Turing machines — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* `TypeAnnotator` class — [Mining Function Specifications (Excursion: A Type Annotator Class)](DynamicInvariants.ipynb#Excursion:-A-Type-Annotator-Class)\n", "* `typed_function()` — [Mining Function Specifications (Excursion: A Type Annotator Class)](DynamicInvariants.ipynb#Excursion:-A-Type-Annotator-Class)\n", "* `typed_functions()` — [Mining Function Specifications (Excursion: A Type Annotator Class)](DynamicInvariants.ipynb#Excursion:-A-Type-Annotator-Class)\n", "* `typed_functions_ast()` — [Mining Function Specifications (Excursion: A Type Annotator Class)](DynamicInvariants.ipynb#Excursion:-A-Type-Annotator-Class)\n", "* `typed_function_ast()` — [Mining Function Specifications (Excursion: A Type Annotator Class)](DynamicInvariants.ipynb#Excursion:-A-Type-Annotator-Class)\n", "* types — [Mining Function Specifications (Mining Data Types)](DynamicInvariants.ipynb#Mining-Data-Types)\n", "* `TypeTracer` class — [Mining Function Specifications (Excursion: A Type Annotator Class)](DynamicInvariants.ipynb#Excursion:-A-Type-Annotator-Class)\n", "* `TypeTransformer` class — [Mining Function Specifications (Excursion: Annotating Functions with Given Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Given-Types), [Mining Function Specifications (Excursion: Annotating Functions with Given Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Given-Types), [Mining Function Specifications (Excursion: Annotating Functions with Given Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Given-Types)\n", "* `type_string()` — [Mining Function Specifications (Excursion: Annotating Functions with Mined Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Mined-Types)\n" ] }, { "cell_type": "markdown", "id": "74ceb2ea", "metadata": {}, "source": [ "### U\n", "\n", "* universal grammars — [Generalizing Failure Circumstances (Grammars)](DDSetDebugger.ipynb#Grammars)\n", "* `unknown()` — [Class Diagrams (Getting Docs)](ClassDiagram.ipynb#Getting-Docs), [Inspecting Call Stacks (Inspecting Call Stacks)](StackInspector.ipynb#Inspecting-Call-Stacks)\n", "* `UNRESOLVED` — [Reducing Failure-Inducing Inputs (Delta Debugging)](DeltaDebugger.ipynb#Delta-Debugging), [Reducing Failure-Inducing Inputs (Reducing Code Lines)](DeltaDebugger.ipynb#Reducing-Code-Lines), [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories)\n", "* `update_changes()` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes)\n", "* `update_elems()` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes), [Where the Bugs are (Putting it all Together)](ChangeCounter.ipynb#Putting-it-all-Together)\n", "* `update_size()` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes)\n", "* `update_stats()` — [Where the Bugs are (Counting Changes)](ChangeCounter.ipynb#Counting-Changes)\n" ] }, { "cell_type": "markdown", "id": "ab026721", "metadata": {}, "source": [ "## V - Y" ] }, { "cell_type": "markdown", "id": "4e978082", "metadata": {}, "source": [ "### V\n", "\n", "* Valgrind — [Asserting Expectations (Checking Memory Usage with Valgrind)](Assertions.ipynb#Checking-Memory-Usage-with-Valgrind)\n", "* Valgrind](https://valgrind.org) originated as an academic tool which has seen lots of industrial usage. A [list of papers — [Asserting Expectations (Background)](Assertions.ipynb#Background)\n", "* `validate()` — [Tracking Failure Origins (A Class for Dependencies)](Slicer.ipynb#A-Class-for-Dependencies), [Tracking Failure Origins (Excursion: Diagnostics)](Slicer.ipynb#Excursion:-Diagnostics), [Repairing Code Automatically (Running Tests)](Repairer.ipynb#Running-Tests)\n", "* `ValueCollector` class — [Statistical Debugging (Other Events besides Coverage)](StatisticalDebugger.ipynb#Other-Events-besides-Coverage)\n", "* `VALUE` — [How Debuggers Work (Exercise 1: Changing State)](Debugger.ipynb#Exercise-1:-Changing-State)\n", "* `var_string()` — [Class Diagrams (Drawing Class Hierarchy with Method Names)](ClassDiagram.ipynb#Drawing-Class-Hierarchy-with-Method-Names)\n", "* `VAR` — [How Debuggers Work (Exercise 1: Changing State)](Debugger.ipynb#Exercise-1:-Changing-State), [Class Diagrams (Getting a Class Hierarchy)](ClassDiagram.ipynb#Getting-a-Class-Hierarchy)\n", "* `VerboseInvariantAnnotator` class — [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers), [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers)\n", "* `verbose_condition()` — [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers)\n", "* `verbose_postcondition()` — [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers)\n", "* `verbose_precondition()` — [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers)\n", "* `VERSIONS` — [Isolating Failure-Inducing Changes (Leveraging Version Histories)](ChangeDebugger.ipynb#Leveraging-Version-Histories)\n", "* `visit()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Reducing Failure-Inducing Inputs (Deleting Nodes)](DeltaDebugger.ipynb#Deleting-Nodes), [Reducing Failure-Inducing Inputs (Deleting Nodes)](DeltaDebugger.ipynb#Deleting-Nodes), [Repairing Code Automatically (Choosing a Mutation Method)](Repairer.ipynb#Choosing-a-Mutation-Method)\n", "* `visit_AnnAssign()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `visit_Assert()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `visit_Assign()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes)\n", "* `visit_AsyncFor()` — [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control)\n", "* `visit_AsyncFunctionDef()` — [Tracking Failure Origins (Excursion: Tracking Return Values)](Slicer.ipynb#Excursion:-Tracking-Return-Values), [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements), [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions)\n", "* `visit_AugAssign()` — [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions)\n", "* `visit_BoolOp()` — [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes), [Repairing Code Automatically (Collecting Conditions)](Repairer.ipynb#Collecting-Conditions)\n", "* `visit_Call()` — [Tracking Failure Origins (Excursion: Tracking Calls and Arguments)](Slicer.ipynb#Excursion:-Tracking-Calls-and-Arguments), [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation)\n", "* `visit_ClassDef()` — [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements), [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions)\n", "* `visit_Compare()` — [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes)\n", "* `visit_comprehension()` — [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control)\n", "* `visit_Expr()` — [Mining Function Specifications (Excursion: Annotating Functions with Given Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Given-Types)\n", "* `visit_For()` — [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control)\n", "* `visit_FunctionDef()` — [Tracing Executions (Exercise 2: Syntax-Based Instrumentation)](Tracer.ipynb#Exercise-2:-Syntax-Based-Instrumentation), [Tracking Failure Origins (Excursion: Tracking Return Values)](Slicer.ipynb#Excursion:-Tracking-Return-Values), [Tracking Failure Origins (Excursion: Tracking Parameters)](Slicer.ipynb#Excursion:-Tracking-Parameters), [Mining Function Specifications (Excursion: Annotating Functions with Given Types)](DynamicInvariants.ipynb#Excursion:-Annotating-Functions-with-Given-Types), [Mining Function Specifications (Exercise 7: Embedding Invariants as Assertions)](DynamicInvariants.ipynb#Exercise-7:-Embedding-Invariants-as-Assertions), [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements), [Repairing Code Automatically ((Re)defining Functions)](Repairer.ipynb#(Re)defining-Functions)\n", "* `visit_If()` — [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control), [Reducing Failure-Inducing Inputs (Transforming Nodes)](DeltaDebugger.ipynb#Transforming-Nodes)\n", "* `visit_Module()` — [Reducing Failure-Inducing Inputs (Deleting Nodes)](DeltaDebugger.ipynb#Deleting-Nodes), [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements)\n", "* `visit_Name()` — [Tracking Failure Origins (Tracking Variable Accesses)](Slicer.ipynb#Tracking-Variable-Accesses), [Tracking Failure Origins (Excursion: Tracking Assignments and Assertions)](Slicer.ipynb#Excursion:-Tracking-Assignments-and-Assertions), [Mining Function Specifications (Extracting Meta-Variables)](DynamicInvariants.ipynb#Extracting-Meta-Variables), [Mining Function Specifications (Instantiating Properties)](DynamicInvariants.ipynb#Instantiating-Properties)\n", "* `visit_Node()` — [Reducing Failure-Inducing Inputs (Deleting Nodes)](DeltaDebugger.ipynb#Deleting-Nodes)\n", "* `visit_node()` — [Repairing Code Automatically (Picking Statements)](Repairer.ipynb#Picking-Statements)\n", "* `visit_Return()` — [Tracking Failure Origins (Excursion: Tracking Return Values)](Slicer.ipynb#Excursion:-Tracking-Return-Values)\n", "* `visit_return_or_yield()` — [Tracking Failure Origins (Excursion: Tracking Return Values)](Slicer.ipynb#Excursion:-Tracking-Return-Values)\n", "* `visit_UnaryOp()` — [Repairing Code Automatically (Collecting Conditions)](Repairer.ipynb#Collecting-Conditions)\n", "* `visit_While()` — [Tracking Failure Origins (Excursion: Tracking Control)](Slicer.ipynb#Excursion:-Tracking-Control)\n", "* `visit_With()` — [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation)\n", "* `visit_Yield()` — [Tracking Failure Origins (Excursion: Tracking Return Values)](Slicer.ipynb#Excursion:-Tracking-Return-Values)\n", "* `visit_YieldFrom()` — [Tracking Failure Origins (Excursion: Tracking Return Values)](Slicer.ipynb#Excursion:-Tracking-Return-Values)\n" ] }, { "cell_type": "markdown", "id": "0c57238b", "metadata": {}, "source": [ "### W\n", "\n", "* watchpoints — [Tracing Executions (Watching Events)](Tracer.ipynb#Watching-Events)\n", "* web driver — [Tracking Bugs (Excursion: Remote Control with Selenium)](Tracking.ipynb#Excursion:-Remote-Control-with-Selenium)\n", "* `weight()` — [Repairing Code Automatically (Running Tests)](Repairer.ipynb#Running-Tests)\n", "* `WEIGHT_FAILING` — [Repairing Code Automatically (Fitness)](Repairer.ipynb#Fitness), [Repairing Code Automatically (Fitness)](Repairer.ipynb#Fitness), [Repairing Code Automatically (Exercise 1: Automated Repair Parameters)](Repairer.ipynb#Exercise-1:-Automated-Repair-Parameters)\n", "* `WEIGHT_PASSING` — [Repairing Code Automatically (Fitness)](Repairer.ipynb#Fitness), [Repairing Code Automatically (Fitness)](Repairer.ipynb#Fitness), [Repairing Code Automatically (Fitness)](Repairer.ipynb#Fitness), [Repairing Code Automatically (Exercise 1: Automated Repair Parameters)](Repairer.ipynb#Exercise-1:-Automated-Repair-Parameters)\n", "* `WithVisitor` class — [Tracking Failure Origins (Excursion: Implementing Dynamic Instrumentation)](Slicer.ipynb#Excursion:-Implementing-Dynamic-Instrumentation)\n", "* `with_mysql()` — [Tracking Bugs (Excursion: Setting up Redmine)](Tracking.ipynb#Excursion:-Setting-up-Redmine)\n", "* `with_ruby()` — [Tracking Bugs (Excursion: Setting up Redmine)](Tracking.ipynb#Excursion:-Setting-up-Redmine)\n", "* `wrapper()` — [Tracking Failure Origins (Excursion: Calls and Returns)](Slicer.ipynb#Excursion:-Calls-and-Returns), [Mining Function Specifications (Annotating Functions with Pre- and Postconditions)](DynamicInvariants.ipynb#Annotating-Functions-with-Pre--and-Postconditions), [Mining Function Specifications (Exercise 3: Verbose Invariant Checkers)](DynamicInvariants.ipynb#Exercise-3:-Verbose-Invariant-Checkers)\n", "* `write()` — [Asserting Expectations (Excursion: A C Memory Model Simulator)](Assertions.ipynb#Excursion:-A-C-Memory-Model-Simulator), [Asserting Expectations (Excursion: Managed Memory)](Assertions.ipynb#Excursion:-Managed-Memory)\n", "* `write_source()` — [Isolating Failure-Inducing Changes (Initialize Git)](ChangeDebugger.ipynb#Initialize-Git)\n" ] }, { "cell_type": "markdown", "id": "597d76b1", "metadata": {}, "source": [ "### X\n", "\n", "* `X()` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n" ] }, { "cell_type": "markdown", "id": "ec2ed44d", "metadata": {}, "source": [ "### Y\n", "\n", "* `Y()` — [Statistical Debugging (Training Classifiers)](StatisticalDebugger.ipynb#Training-Classifiers)\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.6" }, "toc-autonumbering": false }, "nbformat": 4, "nbformat_minor": 5 }