w3resource

What is conditional debugging, and how do you achieve it with pdb?

Achieving Conditional Debugging with 'pdb' in Python

Conditional debugging is a technique in which you set breakpoints to stop your program's execution only when specific conditions are met. Based on certain criteria, you can inspect the state and behavior of the program during its execution.

With pdb (Python Debugger), you can achieve conditional debugging by setting breakpoints with conditions. When the program execution reaches the breakpoint, pdb evaluates the condition. If the condition is True, it will pause execution, allowing you to inspect the variables and control flow at that particular moment.

To set a conditional breakpoint using 'pdb', you can use the b command followed by the line number or function name. You can also use the condition in square brackets. Here's the syntax:

b line_number [condition]
b function_name [condition]

Here's an example to demonstrate conditional debugging with pdb:

Code:

# test.py
import pdb
def some_function(a, b):
    result = a / b
    return result
x = 10
y = 0
# Set a conditional breakpoint at line 8: Stop execution only when y is not equal to 0
pdb.set_trace()
z = some_function(x, y)
print(z)

When you run the script above with python test.py, the 'pdb' debugger will start with the pdb.set_trace() statement. At this point, you can set a conditional breakpoint using the b command and specify the condition [y != 0].

Here's how you can do it:

Run the script and start the pdb debugger:

python test.py

When you run the script with python test.py, and it reaches the pdb.set_trace() statement, you can set the conditional breakpoint using the b command with the correct syntax. At the (Pdb) prompt, set the conditional breakpoint with the condition [y != 0]:

Run in the Anaconda open terminal:

(base) C:\Users\ME>python test.py
> c:\users\me\test.py(15)<module>()
-> z = some_function(x, y)
(Pdb) b 10, y != 0
Breakpoint 1 at c:\users\me\test.py:10
(Pdb) c
Traceback (most recent call last):
  File "C:\Users\ME\test.py", line 15, in <module>
    z = some_function(x, y)
  File "C:\Users\ME\test.py", line 6, in some_function
    result = a / b
ZeroDivisionError: division by zero
(base) C:\Users\ME>

With this syntax, the conditional breakpoint is correctly set, and the program execution will pause only when the condition y != 0 is met. Now you can continue debugging as usual.



Follow us on Facebook and Twitter for latest update.