########## Some commands in pdb ########## # help: Display a list of available pdb commands or get help on a specific command. # break or b: Set a breakpoint at a specific line or function. # continue or c: Continue execution until the next breakpoint or the program finishes. # step or s: Step into the next line of code, diving into function calls. # next or n: Step over the next line of code, without diving into function calls. # return or r: Continue execution until the current function returns. # list or l: Show the current line of code and surrounding lines. # print or p: Evaluate and print the value of an expression or variable. # watch: Set a watchpoint on an expression or variable. The debugger will break when the value changes. # quit or q: Quit the debugger and stop execution. ########## There is a main() function at the end ########## # 2. Provide an example script where setting a breakpoint on a particular line # Then using either step over or step into will yield the same result. class Same_StepOverStepInto_Result: def calculation2(self, a, b): result = a + b product = self.multiply(a, b) # Step into this method call breakpoint() # Set a breakpoint here print(f"The sum is: {result}") print(f"The product is: {product}") def multiply(self, x, y): return x * y # calculator2 = Same_StepOverStepInto_Result() # calculator2.calculation2(6, 7) # 3. Here is another example which will provide different results from 'step' and 'next' commands class Diff_StepOverStepInto_Result: def multiply(self, a, b): return a * b def calculation3(self, a, b): result = a + b breakpoint() # Set a breakpoint here product = self.multiply(a, b) print(f"The sum is: {result}") print(f"The product is: {product}") # calculator3 = Diff_StepOverStepInto_Result() # calculator3.calculation3(6, 7) # Choose wich Class to run def main(): choice = input("Enter 2 to run Q2 class for same result, 3 to run Q3 class for different result: ") if choice == '2': print('Here is the sample task for Question 2:') calculator2 = Same_StepOverStepInto_Result() calculator2.calculation2(6, 7) elif choice == '3': print('Here is the sample task for Question 3:') calculator3 = Diff_StepOverStepInto_Result() calculator3.calculation3(6, 7) else: print("Please only choose between 2 and 3") if __name__ == "__main__": main()