Re: your favorite debugging tool?
On Aug 25, 2:55 pm, Esmail ebo...@hotmail.com wrote: Re pdb, if you have a 'pointer' (ie reference) to an object, is there an easy way to dump out its contents, ie all of its members short of writing a method that does that and then calling it? Usually pp vars(your_object) does what you want -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Esmail wrote: What is your favorite tool to help you debug your code? import pdb pdb.set_trace() pdb has commands to inspect code, variables, set breakpoints, watches, walk up and down stack frames, single-step through the program, run the rest of the function, run until return, etc... http://www.ferg.org/papers/debugging_in_python.html http://onlamp.com/pub/a/python/2005/09/01/debugger.html http://plone.org/documentation/how-to/using-pdb http://docs.python.org/library/pdb.html Greetings, -- The ability of the OSS process to collect and harness the collective IQ of thousands of individuals across the Internet is simply amazing. - Vinod Valloppillil http://www.catb.org/~esr/halloween/halloween4.html -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Hendrik van Rooyen hend...@microcorp.co.za writes: And the final arbiter is of course the interactive prompt. Oh yes, of course I forget to mention that! Write your code so it can be imported, and write your functionality so it has narrow interfaces, and you can do whatever inspection is needed from the interactive prompt. -- \“We have to go forth and crush every world view that doesn't | `\believe in tolerance and free speech.” —David Brin | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Dennis Lee Bieber wlfr...@ix.netcom.com writes: My normal debug technique is wolf fencing* (eg; print statements) That method was formerly completely automated on the web: http://www.st.cs.uni-saarland.de/askigor/faq.php It was amazing. Further info is here: http://www.st.cs.uni-saarland.de/dd/ -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
On 24 Aug 2009, Paul Rubin wrote: Esmail ebo...@hotmail.com writes: What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. Beyond print statements, I use pdb a lot. Winpdb (www.winpdb.org) is even better, but is kind of cumbersome to get working. And you can run it (pdb) within emacs - though I find a little roughness in working out the exact interactions keeps ending up (ie the source buffer displayed) in the wrong stack frame - afaict Robert -- La grenouille songe..dans son château d'eau Links and things http://rmstar.blogspot.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
On Aug 22, 4:25 pm, Esmail ebo...@hotmail.com wrote: Hi all, What is your favorite tool to help you debug your code? The times when I would just use 'print' are long past. Nowadays I spend lots of my time with code written by others than myself. I use pdb all the time, and now also ipdb (ipdb is very cool if you are used to ipython). M.S. -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Paul Rubin wrote: Esmail ebo...@hotmail.com writes: What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. Beyond print statements, I use pdb a lot. Winpdb (www.winpdb.org) is even better, but is kind of cumbersome to get working. Hi, 2 quick questions. Re pdb, if you have a 'pointer' (ie reference) to an object, is there an easy way to dump out its contents, ie all of its members short of writing a method that does that and then calling it? Anyone know what is going on with the winpdb site? I haven't been able to get to it in the last few days. Thanks, Esmail -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Michele Simionato wrote: On Aug 22, 4:25 pm, Esmail ebo...@hotmail.com wrote: Hi all, What is your favorite tool to help you debug your code? The times when I would just use 'print' are long past. Nowadays I spend lots of my time with code written by others than myself. I use pdb all the time, and now also ipdb (ipdb is very cool if you are used to ipython). Never heard of ipdb, I'll have to check it out. Thanks, Esmail -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Robert Marshall wrote: On 24 Aug 2009, Paul Rubin wrote: Esmail ebo...@hotmail.com writes: What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. Beyond print statements, I use pdb a lot. Winpdb (www.winpdb.org) is even better, but is kind of cumbersome to get working. And you can run it (pdb) within emacs - though I find a little roughness in working out the exact interactions keeps ending up (ie the source buffer displayed) in the wrong stack frame - afaict Thanks Robert, I'll have to give that a try. Esmail -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Esmail ebo...@hotmail.com writes: While I do believe in a minimalist approach (part of the reason I find Python so appealing), using print statements sometimes only goes so far (for me). Right, which is where the Python interactive interpreter (which I failed to mention in my initial response) comes in as my favourite debugging tool. -- \ “When I was a kid I used to pray every night for a new bicycle. | `\Then I realised that the Lord doesn't work that way so I stole | _o__) one and asked Him to forgive me.” —Emo Philips | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Hi Ben, Ben Finney wrote: Whenever a simple output statement is too cumbersome for debugging, I take it as a sign that the program is too cumbersome to follow. I'll have to think about this .. though my gut says this is true :-) re your other point about the interactive shell, I agree it's useful, but to me still doesn't quite do what a full-fledged debugger can - but perhaps that is a reflection of my skill with the shell at this point. Always more to learn. Esmail -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Esmail wrote: Hi Ben, Ben Finney wrote: Whenever a simple output statement is too cumbersome for debugging, I take it as a sign that the program is too cumbersome to follow. I'll have to think about this .. though my gut says this is true :-) That is not always true. When it comes to implement complex tasks, you can't always avoid writing complex code. Python does not get your code more complex than your algorithm, but it cannot always simplify it. Ben is right when he says that code can often be written in a more simpler manner, but they are some occasions when you have to write complex code, that the print debug statement won't be efficient enough to sort things out. I personally develop/maintain a full application written in python (and quite complex for some parts), using the ipdb debugger just saved my hours (days) of headache about some very difficult bug to spot re your other point about the interactive shell, I agree it's useful, but to me still doesn't quite do what a full-fledged debugger can - but perhaps that is a reflection of my skill with the shell at this point. Always more to learn. Esmail 90% of the time, print statements + ipython shell will do the trick. The post mortem debugging is also very useful. Execute your python file in ipython, then when it exits upon exception, execute import pdb ; pdb.pm() You can then inspect the symbols easily. JM -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Esmail ebo...@hotmail.com writes: Hi Ben, Ben Finney wrote: Whenever a simple output statement is too cumbersome for debugging, I take it as a sign that the program is too cumbersome to follow. I'll have to think about this .. though my gut says this is true :-) Note that it's only a sign, *not* an ironclad guarantee. But it's the right way to bet, IME. re your other point about the interactive shell, I agree it's useful, but to me still doesn't quite do what a full-fledged debugger can - but perhaps that is a reflection of my skill with the shell at this point. This, on the other hand, I find even more consistent: if the code can't be effectively inspected from the interactive interpreter, that's a sure sign that its external interfaces are poor or its internal dependencies too tightly coupled; or more likely both. Fixing that set of problems is both useful for debugging *and* good design. -- \ “Alternative explanations are always welcome in science, if | `\ they are better and explain more. Alternative explanations that | _o__) explain nothing are not welcome.” —Victor J. Stenger, 2001-11-05 | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
On Aug 23, 1:21 am, Hendrik van Rooyen hend...@microcorp.co.za wrote: On Saturday 22 August 2009 16:49:22 Aahz wrote: In article mailman.227.1250951162.2854.python-l...@python.org, Esmail ebo...@hotmail.com wrote: What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. Despite the fact that I've been using Python for more than a decade, print is still my mainstay (or possibly logging to a file). Same here, although I have not been abusing python for as long as Aahz has been using it. ... And the final arbiter is of course the interactive prompt. - Hendrik The only thing I would add to these comments is the fact that writing helper functions for using print with complicated routines is very simple, though perhaps not obvious. For example, consider the following for unrolling list comprehensions or generators without having to re-write them: def trace(iterable): for x in iterable: print x yield x ~G -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
On 2009-08-25 09:49 AM, Ben Finney wrote: Esmailebo...@hotmail.com writes: Hi Ben, Ben Finney wrote: Whenever a simple output statement is too cumbersome for debugging, I take it as a sign that the program is too cumbersome to follow. I'll have to think about this .. though my gut says this is true :-) Note that it's only a sign, *not* an ironclad guarantee. But it's the right way to bet, IME. re your other point about the interactive shell, I agree it's useful, but to me still doesn't quite do what a full-fledged debugger can - but perhaps that is a reflection of my skill with the shell at this point. This, on the other hand, I find even more consistent: if the code can't be effectively inspected from the interactive interpreter, that's a sure sign that its external interfaces are poor or its internal dependencies too tightly coupled; or more likely both. And a debugger is a great tool to help you figure out exactly why your code doesn't actually have the wonderful decoupling that you thought you designed into it so you can fix it. :-) -- Robert Kern I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
On 2009-08-25 06:57 AM, Esmail wrote: Michele Simionato wrote: On Aug 22, 4:25 pm, Esmail ebo...@hotmail.com wrote: Hi all, What is your favorite tool to help you debug your code? The times when I would just use 'print' are long past. Nowadays I spend lots of my time with code written by others than myself. I use pdb all the time, and now also ipdb (ipdb is very cool if you are used to ipython). Never heard of ipdb, I'll have to check it out. It's not really a separate thing, just the pdb integration into the IPython interactive shell (which I highly recommend that you check out). -- Robert Kern I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Ben Finney wrote: Esmail ebo...@hotmail.com writes: Hi Ben, Ben Finney wrote: Whenever a simple output statement is too cumbersome for debugging, I take it as a sign that the program is too cumbersome to follow. I'll have to think about this .. though my gut says this is true :-) Note that it's only a sign, *not* an ironclad guarantee. But it's the right way to bet, IME. :-) .. I took it as a rule of thumb too .. I didn't meant to imply anything more serious. These design guidelines help though. Thanks, Esmail -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Esmail wrote: Hi all, What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. I'm primarily interested in utilities for Linux (but if you have recommendations for Windows, I'll take them too :) I use emacs as my primary development environment, FWIW. Someone mentioned winpdb .. anyone have experience/comments on this? Others? Thanks, Esmail I execute the program within IPython. run test.py I usually write a CTRL+C except clause that will spawn an Ipython shell so I can inspect the namespace at that time. I'm also using the ipdb to spawn the debugger. import IPython ipdb = IPython.Debugger.Pdb(color_scheme='Linux') ipdb.set_trace() it spawns the IPython debugger, allowing step by step execution, code inspection, changing the namespace. You get all the IPython benefits (espacially the TAB completion, history ...) I used to proceed with print statements, but they are some situations where it won't just make it. Sometimes the code is so complex you can't anticipate all the required prints to catch a bug. JM -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Hello, thank you all for your suggestions/comments. While I do believe in a minimalist approach (part of the reason I find Python so appealing), using print statements sometimes only goes so far (for me). I probably should look into using iPython in the context of debugging (I already use this shell). For now I ended up giving winpdb a whirl and it did help me find the bug that had been elusive to my print statement approach :-) Thanks again .. and if there are additional postings, I'll be reading them too with great interest. Esmail -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Esmail ebo...@hotmail.com writes: What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. Beyond print statements, I use pdb a lot. Winpdb (www.winpdb.org) is even better, but is kind of cumbersome to get working. -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
On Saturday 22 August 2009 16:49:22 Aahz wrote: In article mailman.227.1250951162.2854.python-l...@python.org, Esmail ebo...@hotmail.com wrote: What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. Despite the fact that I've been using Python for more than a decade, print is still my mainstay (or possibly logging to a file). Same here, although I have not been abusing python for as long as Aahz has been using it. I find that python pretty much does more or less what I expect it to, and where it does not, a print quickly gets me to RTFM when I have been rolling along under intuition. And the final arbiter is of course the interactive prompt. - Hendrik -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
On 2009-08-22 07:25 AM, Esmail wrote: Hi all, What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. I'm primarily interested in utilities for Linux (but if you have recommendations for Windows, I'll take them too :) I use emacs as my primary development environment, FWIW. Someone mentioned winpdb .. anyone have experience/comments on this? Others? I am frequently in the IPython interactive prompt for testing out stuff and even as the main way of running my code. It has a nice feature that when you get a traceback, you can open up pdb post-mortem. In [8]: def f(x): ...: y = 1 / x ...: return y ...: In [9]: f(1) Out[9]: 1 In [10]: f(0) --- ZeroDivisionError Traceback (most recent call last) /Users/rkern/ipython console in module() /Users/rkern/ipython console in f(x) ZeroDivisionError: integer division or modulo by zero In [11]: %debug ipython console(2)f() ipdb print x 0 I have a little function that I've been using recently to print out the function I am currently in along with the arguments: def whereami(): Print the current function call. import kerntrace;kerntrace.whereami() import inspect frame = inspect.currentframe(1) args, varargs, varkw, f_locals = inspect.getargvalues(frame) if args[:1] == ['self']: del args[0] print '%s%s' % (frame.f_code.co_name, inspect.formatargvalues(args, varargs, varkw, f_locals)) I think pdb is okay, but I am looking forward to pydbgr's completion. http://code.google.com/p/pydbgr/ -- Robert Kern I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
On Aug 22, 4:25 pm, Esmail ebo...@hotmail.com wrote: Hi all, What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. I'm primarily interested in utilities for Linux (but if you have recommendations for Windows, I'll take them too :) I use emacs as my primary development environment, FWIW. Someone mentioned winpdb .. anyone have experience/comments on this? Others? Thanks, Esmail Although like the others I mostly use print statements, in a few occasions I have found useful to resort to a full-blown debugger. Of the ones I have used, the one provided by eclipse+pydev is the one I liked most. The one in pywin32 IDE is basic but can be useful. With emacs, one should be able to use pydb, but I never used that, although emacs is my most used programming environment on most platforms. About print cumbersomeness, I agree. As I posted elsewhere, I'd like a 'trace mechanism' with the following characteristics: 1. Can be enabled/disabled easily, and when it is dsabled it has no runtime costs ( i.e. disabled 'trace' statements do not generate any code) 2. Can be enabled/disabled on a class/function/method base (e.g. enable only the trace in a method ), to only get the trace output from the code you are debugging 3. Make it easy to report the context (i.e. generate messages which starts with 'class.method:', without hanving to hardcode class name and method name). I know about the 'trace' and 'logging' modules, but neither seem to satisfy the above requirements. Probably using python introspection and metaprogramming features it is possible to do somethinmg that covers at least 2 and 3. Not sure about one (using if __debug__ you can reduce the runtime cost when compiling in optimized mode, but probably not nullify it). Ciao - FB -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Il Sat, 22 Aug 2009 10:25:37 -0400, Esmail ha scritto: I use emacs as my primary development environment, FWIW. Someone mentioned winpdb .. anyone have experience/comments on this? Others? I use Winpdb on Windows and I feel quite comfortable. The interface is not so clever as more advanced (and expensive, winpdb is free) debuggers but there is all yuo need for deep-source debugging. It is especially suited for multi threaded programs and GUI debugging, where command line debugging is a pain. It supports remote debugging over encrypted connection also. regards David -- http://mail.python.org/mailman/listinfo/python-list
your favorite debugging tool?
Hi all, What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. I'm primarily interested in utilities for Linux (but if you have recommendations for Windows, I'll take them too :) I use emacs as my primary development environment, FWIW. Someone mentioned winpdb .. anyone have experience/comments on this? Others? Thanks, Esmail -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
In article mailman.227.1250951162.2854.python-l...@python.org, Esmail ebo...@hotmail.com wrote: What is your favorite tool to help you debug your code? I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. Despite the fact that I've been using Python for more than a decade, print is still my mainstay (or possibly logging to a file). -- Aahz (a...@pythoncraft.com) * http://www.pythoncraft.com/ I support family values -- Addams family values --www.nancybuttons.com -- http://mail.python.org/mailman/listinfo/python-list
Re: your favorite debugging tool?
Esmail ebo...@hotmail.com writes: What is your favorite tool to help you debug your code? A “print” statement (or equivalent, like logging output). I've been getting along with 'print' statements but that is getting old and somewhat cumbersome. Whenever a simple output statement is too cumbersome for debugging, I take it as a sign that the program is too cumbersome to follow. My debugging questions at that point are best taken to the unit test suite: record the questions and the expected answers, so that in the future anyone can get the benefit of them in a repeatable and automated fashion. -- \ “The power of accurate observation is frequently called | `\cynicism by those who don't have it.” —George Bernard Shaw | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list