[EMAIL PROTECTED] writes: > I am trying to figure out how to use the pdb module to debug Python > programs, and I'm having difficulties. I am pretty familiar with GDB > which seems to be similar,
If you are pretty familiar with gdb, try http://bashdb.sourceforge.net/pydb. It is a great deal more similar. ;-) > however I cannot even get the Python > debugger to break into a program so I can step through it. I wrote a > simple program and below is an example of the steps I tried, as well as > the results I got: > > >>> import pdb > >>> import MyProgram > >>> pdb.run('MyProgram.mainFunction') > > <string>(1)?() > (Pdb) b MyProgram.MyClass.method > Breakpoint 1 at MyProgram.py:8 > (Pdb) cont > >>> > > The program should have printed a message to the screen when execution > was continued, and it should have hit the breakpoint during that > execution. Instead the debugger exitted to the main prompt. > > What is the reason the dubugger behaves like this? I think you misunderstand what pdb.run is supposed to do. It's not at all like gdb's "run" command. In fact pdb doesn't even have a debugger *command* called "run", although it does have top-level function called "run". pdb.run is evaluating MyProgram.mainfunction the same as if you were to type it at Python's >>> prompt. Except it will call the debugger control WHEN IT ENCOUNTERS THE FIRST STATEMENT. I think if you were issu MyProgram.mainFunction at the python prompt you'd get back something like: <function mainFunction at 0xb7f5c304>. It wouldn't *call* the routine. To call it, you'd type something like Myprogram.mainFunction() But before you try to issue pdb.run('Myprogram.mainFunction()'), read on. The way to use pdb.run is to insert it somewhere in your program like MyProgram and have the debugger kick in, not something you issue from a Python prompt. > What is the correct way to accomplish what I am trying to do? > > I have tried this process on Python 2.3.5 and 2.4.3 with the same > results on each version. Perhaps what you are looking for is: python /usr/lib/python2.4/pdb.py Myprogram.py (Subtitute the correct path name for pdb.py.) If you have pydb installed it adds a symbolic link to pydb.py. So here you should be able to issue: pydb Myprogram.py -- http://mail.python.org/mailman/listinfo/python-list