[BangPypers] BangPypers Digest, Vol 29, Issue 31

learningpython at aol.com learningpython at aol.com
Sat Jan 30 06:18:26 CET 2010


 Hi Jeff,

Apologies for the delay, Unfortunately this email has gone to my spam folder and could only see fortunately.
I am really thankful for the response. 

What is the website i could log in to see the responses please i have forgotten over the period of time. 

python.org from there i am trying to go to bangalore but cannot go past the subscription page ..http://mail.python.org/mailman/listinfo/bangpypers




 Should i use the function 

import pdb; pdb.set_trace() in every function or should i create a def or class and call the instance separately. Sorry i am naive.

Thanks in advance 

Cheers
-- Anand


 

-----Original Message-----
From: bangpypers-request at python.org
To: bangpypers at python.org
Sent: Mon, Jan 25, 2010 12:00 am
Subject: BangPypers Digest, Vol 29, Issue 31


Send BangPypers mailing list submissions to
    bangpypers at python.org

To subscribe or unsubscribe via the World Wide Web, visit
    http://mail.python.org/mailman/listinfo/bangpypers
or, via email, send a message with subject or body 'help' to
    bangpypers-request at python.org

You can reach the person managing the list at
    bangpypers-owner at python.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of BangPypers digest..."


Today's Topics:

   1. Re: January user group meeting (Arvind Jamuna Dixit)
   2. Re: January user group meeting (Noufal Ibrahim)
   3. Python Maintainence code: Debugging,  Tracing and Profiling
      help (learningpython at aol.com)
   4. Re: Python Maintainence code: Debugging,  Tracing and
      Profiling help (Jeffrey Jose)


----------------------------------------------------------------------

Message: 1
Date: Sat, 23 Jan 2010 20:12:13 +0530
From: Arvind Jamuna Dixit <ardsrk at gmail.com>
To: Bangalore Python Users Group - India <bangpypers at python.org>
Subject: Re: [BangPypers] January user group meeting
Message-ID:
    <3d62196a1001230642m4c87571akd1bc91436c167d00 at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

How did the meet go. Couldn't come as I got stuck in MG Road traffic.

On Fri, Jan 22, 2010 at 5:19 PM, Noufal Ibrahim <noufal at gmail.com> wrote:

> Okay. This is set in stone. Hope to see you all there!
>
> On Wed, Jan 20, 2010 at 11:26 AM, Noufal Ibrahim <noufal at gmail.com> wrote:
> > So are we decided?
> >
> > Date : Jan 23
> > Time : 1530
> > Venue : ThoughtWorks, Diamond District
> > Topics : Baiju - Buildbot
> >              Noufal - py.test.
> >
> > Fine? Vishal had a -1 for 23. If there many others, we can change the
> date
> > to 24th.
> >
> >
> >
> > --
> > ~noufal
> > http://nibrahim.net.in
> >
>
>
>
> --
> ~noufal
> http://nibrahim.net.in
> _______________________________________________
> BangPypers mailing list
> BangPypers at python.org
> http://mail.python.org/mailman/listinfo/bangpypers
>



-- 
Arvind


------------------------------

Message: 2
Date: Sat, 23 Jan 2010 21:48:28 +0530
From: Noufal Ibrahim <noufal at gmail.com>
To: Bangalore Python Users Group - India <bangpypers at python.org>
Subject: Re: [BangPypers] January user group meeting
Message-ID:
    <9963e56e1001230818k371ce2a3lfda7be0addbeec47 at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

On Sat, Jan 23, 2010 at 8:12 PM, Arvind Jamuna Dixit <ardsrk at gmail.com> wrote:
> How did the meet go. Couldn't come as I got stuck in MG Road traffic.[..]

Pretty well. Baiju's presentation on using using buildout to easily
configure buildbot was nice. I also learnt that if you 'activate' a
virtualenv, you get a 'deactivate' command to go back to your system
wide install. Neat. :)

-- 
~noufal
http://nibrahim.net.in


------------------------------

Message: 3
Date: Sat, 23 Jan 2010 18:04:20 -0500
From: learningpython at aol.com
To: bangpypers at python.org
Subject: [BangPypers] Python Maintainence code: Debugging,  Tracing and
    Profiling help
Message-ID: <8CC6A97879CFBD3-124C-2081B at webmail-d010.sysops.aol.com>
Content-Type: text/plain; charset="us-ascii"



 
 Hi Experts,

I am back to python after a while of just formal introduction. Thistime i have 
to manage a huge files with numerous functions, i amdebugging a issue right now 
and would require to understand the flow ofthe code.

Please can you help me on what can i do to have better understanding ofthe 
profiling of classes, defs invoked each time and how to read them. 

The ones i plan to do is to insert lot of prints in every class, defs ex: print 
self.__class__.__name__ in every def, to see the flow which is tedious and time 
consuming as the size of files and project is huge. 

Any suggestions please and advice please.

PS: how to post to comp.lang.python newsgroup please??

 
Cheers
Anand

 


 


------------------------------

Message: 4
Date: Sun, 24 Jan 2010 13:35:13 +0530
From: Jeffrey Jose <jeffjosejeff at gmail.com>
To: Bangalore Python Users Group - India <bangpypers at python.org>
Subject: Re: [BangPypers] Python Maintainence code: Debugging,  Tracing
    and     Profiling help
Message-ID:
    <cae1cffe1001240005i49a7a5bel51cae75b73f3a54d at mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Hi Anand,

I can talk a lil bit about your 2 queries. Debugging and seeing the flow of
the program.

*A. Debugging*

Surprisingly both of them come under the same banner. One of the reasons you
debug is to see how the code progresses. For debugging I highly recommend
Python Debugger. It would look a lot odd the first time you invoke it, but
trust me with a few neat tricks you'd be using it all the time.

There's just one thing you need to do to summon the Python Debugger. Insert
this one line in your code.

import pdb; pdb.set_trace()

The next time you run the code, it would drop into the debugger (you just
set a trace point). When you have the debugger prompt, you have access to
all the variables, stacktrace etc. You need to know a few commands to get
around.

c -> Continue (till the end of the program or till the next breakpoint)
n -> Execute next step
l -> See where you are
s -> Step into a function.

I accept this is not a natural way of doing things.. That's where we come to
the 'with-a-few-tricks-you'd-be-doing-this-all-the-time'
And the trick is this. Invoke Ipython from pdb. The good thing is you get
tab-competition (which pdb lacks). You can try out all kinds of things.
Introspect, import other modules, try and see the next line and see what its
output 'would be'. Its sweet. I highly recommend you take a look at this.

Starting ipython from
pdb<http://libreamoi.com/index.php/starting-ipython-from-pdb/>-
http://libreamoi.com/index.php/starting-ipython-from-pdb/
Hit Ctrl-D to exit from Ipython to go to pdb again and hit 'c' to continue
the program. While you're at pdb, you can still go into ipython again.

Remember Ipython is a regular prompt, so you cant do debugger-y things like
Step Into, Continue etc. For that you'll have to come 'out' of Ipython to
pdb. You can go back to Ipython anytime.

*B. Seeing Your Program Flow*

If I understand you correctly, I've seen this problem hit me lot of times.
If you're working on others code, and all of a sudden you wanna
understand/fix them - you'd be sitting there thinking - Damn, *how* does
this code work. I can see a lot of functions and I get what it does. But
when does this one get called. I see this main call from main() .. but is
there another place where it gets called ?. If so what are the arguments.
What does it return on this one specific call etc.

While its technically possible to do next-next-next using Python Debugger to
step through the program and sometimes that's all can you do.
But there's a much better way than inserting

print "Called me!"
print "Done with me!"

etc.

The idea here is to use sys.settrace() to insert to a utility function which
gets called before any important events. Events include,
# execution of any line (that means all the time)
# calling a function
# return from a function
# encountering an exception

This means your utility function can go .. hmm .. is this a function call ?
.. if so gimme the name of the caller and name of the function and let me
print it.

When you run the code you'd get a huge output with prints which shows the
flow of the program.
Again, refer this page for a better understanding.
Tracing Your Program As It Runs -
http://blog.doughellmann.com/2009/11/pymotw-sys-part-5-tracing-your-program.html
One caution : Do Not Abuse sys.settrace() Use sys.settrace() for debugging
only. You might be tempted to do crazy things like .. during every function
call .. I'll authorize the user or something. That better be done using
different methods. Just saying :)


Unfortunately, the place where I work doesnt care much about performance (or
unnecessary optimization) for the python code. So I cant help you there.
I'll let others chip in for those stuff.

HTH
Jeff


On Sun, Jan 24, 2010 at 4:34 AM, <learningpython at aol.com> wrote:

>
>
>
>  Hi Experts,
>
> I am back to python after a while of just formal introduction. Thistime i
> have to manage a huge files with numerous functions, i am debugging a issue
> right now and would require to understand the flow ofthe code.
>
> Please can you help me on what can i do to have better understanding ofthe
> profiling of classes, defs invoked each time and how to read them.
>
> The ones i plan to do is to insert lot of prints in every class, defs ex:
> print self.__class__.__name__ in every def, to see the flow which is tedious
> and time consuming as the size of files and project is huge.
>
> Any suggestions please and advice please.
>
> PS: how to post to comp.lang.python newsgroup please??
>
>
> Cheers
> Anand
>
>
>
>
>
> _______________________________________________
> BangPypers mailing list
> BangPypers at python.org
> http://mail.python.org/mailman/listinfo/bangpypers
>


------------------------------

_______________________________________________
BangPypers mailing list
BangPypers at python.org
http://mail.python.org/mailman/listinfo/bangpypers


End of BangPypers Digest, Vol 29, Issue 31
******************************************

 


More information about the BangPypers mailing list