conditional breakpoint using pdb
Question: Sounds like I'm missing something extremely simple, I'm trying to set a
breakpoint in my python code using:

    
    
    if(some condition):
            pdb.set_trace()
    

My error in the code comes after a large number of iterations..difficult to
debug using print etc. I am able to print stuff when the condition hits but I
would like to set brk-pt.

\--EDIT--

Actual code:

    
    
    import pdb
    if (node_num == 16):
        print node_num
        pdb.set_trace()
    


Answer: I am not sure as to why your code isn't working, but what you can do is on
your local machine, create a new file for your minimum example to see if you
can do what you want to do

    
    
    import pdb
    
    for node_num in range(50):
        if node_num == 16:
            print(node_num)
            pdb.set_trace()
    

Now running it:

    
    
    16
    > /tmp/tmp.py(3)<module>()
    -> for node_num in range(50):
    (Pdb) p node_num
    16
    

As you can see this worked as intended with this trivial example, it's up to
you to figure out how to adapt this to your code, and/or figure out what else
did you do to your code/environment that prevented that prompt from showing
up.

Alternatively, if you have a function that is dying in an exception and you
want to know the exact line that caused it, you should use `post_mortem`
instead. Wrap the problematic section of code with this

    
    
    try:
        problem_function()
    except Exception:  # or the specific exception type thrown
        pdb.post_mortem()
        raise
    

What post_mortem would do is dump a break point right at the point where the
exception happened (specifically in that stack frame), and so this allows all
values to be inspected and then let you continue execution. However I also put
a raise at the end to allow the exception to continue as normal, and this is
intended as execution doesn't normally from where it die but just pause at
that exception handling block due to the `post_mortem` call. Might as well
just give up after inspecting what went wrong.

