[PyKDE] eric3 - debugging & svn integration
Robin Bryce
robin at wiretooth.com
Mon Jun 14 22:50:00 BST 2004
Great. thanks. I'll sort out that diff soonest.
Robin
On Mon, 2004-06-14 at 19:42, Detlev Offenbach wrote:
> Hi,
>
> some more info on your observations.
>
> for 1.
> I'll check out your solution. Maybe you can send a diff of DebugBase.py
> to make my job easier.
>
> for 2.
> This is a bug which will be fixed in the next snapshot.
>
> for 3.
> The idea was to follow (enforce) the guideline as mentioned in the
> subversion book and have the dialogs for Subversion and CVS as identical
> as possible. I'll check the source and may give the user more freedom
> here (not enforcing the guideline).
>
> for 4.
> I'll include this change in the next snapshot.
>
> for 5.
> see below
>
> Regards,
> Detlev
>
> Am Montag, 14. Juni 2004 12:35 schrieb Robin Bryce:
> > Hi Detlev,
> >
> > > "Developers" is 99% just me.
> >
> > good job ! and thanks for your help. here is some more info on the
> > https svn thing and a request for some advice re tinkering I've done
> > with DebugClientBase.
> >
> >
> > svn first.
> >
> > for 5. checking out from a url of the form
> > https://xxx.xxxx.com:NNN/path/to/project
> >
> > using the project->version control-> new from repository menu after
> > making the mods to svnURL I mentioned in prev mail failed to checkout.
> > the problem seemed to relate to handling of the case when the server
> > hosting the repository is accessed via ssl and the hosts ssl
> > certificates are self signed. this means they are not signed by a
> > trusted authority as far as the svn client layer is concerned so it
> > prompts the user to chose whether to accept the certificate
> > temporarily, permanently or not at all. I had recently resigned the
> > certificate because I had forgotten to set a sensible validity period
> > hence the resigned certificate was 'new' as far as my local cache of
> > acceptable 'untrusted' certificates was concerned.
> >
> > I just tried to reproduce this, without resigning the certificate, and
> > couldn't. so it seems that once its accepted via command line eric3 is
> > ok. but please understand that I haven't gone through the steps
> > thoroughly enough to be certain any or all of the above is 'fact'.
> >
> > so in summary I have managed to create a project using the
> > project->version control-> new from repository menu and a url of the
> > form "https://xxx.xxxx.com:NNN/path/to/project" but it definitely
> > failed earlier. sorry this is such a weak explanation.
> >
> > oh... I remember now. the first time I was running eric as sudo
> > /path/to/eric3. <smack/> doh~ not doing that anymore.
> >
> >
> > the other way I tried was the project -> new menu and ticking the VCS
> > integration. (ruining eric3 with my user, group) url was as above and
> > the project directory was in my home directory (I definitely had write
> > permissions). after a pause with nothing much happening a dialogue
> > poped up titled 'read project file' message was
> >
> > "
> > The project
> > file /the/path/ispecified/projectname.e3pz
> > could not be read
> > "
> >
> > with a single button 'abort'
>
> Was the project generated in the repository? Maybe you can give step by
> step instructions on how to reproduce this problem.
>
> >
> > I'll probably stick to the command line svn client for now.
> >
> > ok debugger stuff.
> >
> >
> > I took on board your comment re bdb.py, rolled up my sleeves and had a
> > look. cant be that hard, I thought at 9pm this morning. many fun filed
> > hours later, plus a headache ;-), I settled on the following changes.
> > my question is if I work with this setup what problems have I created
> > for myself ?
> >
> > . overrode dispatch_call from bdb as a method in DebugBase.py. it is
> > identical to the original except the first thing it does is:
> >
> > self._dbgClient.eventPoll()
> >
> > . added the method eventPoll to DebugClientBase
> >
> > first it does:
> >
> > lasteventpolltime = getattr(self, 'lasteventpolltime', time.time())
> > now = time.time()
> > if now - lasteventpolltime < 0.5:
> > self.lasteventpolltime = lasteventpolltime
> > return
> > else:
> > self.lasteventpolltime = now
> >
> > then assuming enough time has elapsed it does a single pass over a
> > copy of the body of the while self.eventExit is None: loop in
> > eventLoop but sets the timeout parameter for the select call to 0.
> >
> > this of course will not help with apps that run a non python main loop
> > and go for long periods without executing python. what happens for
> > this case with eric3 ?
> >
> > having done all this I have the ability to 'inject' break points into
> > my running app after a continue with no break points in the subsequent
> > code path. this was the one feature I was really missing from wingide.
> > I'm now hoping I can debug the background thread of my application
> > from the ide but haven't tried this yet.
> >
> > Best,
> >
> > Robin
> >
> > On Sun, 2004-06-13 at 09:31, Detlev Offenbach wrote:
> > > Hi,
> > >
> > > thanks you very much for this lengthy report. I'll look into the
> > > topics and will try to fix the problem areas. Some comments can be
> > > found below.
> > >
> > > Detlev
> > >
> > > Am Sonntag, 13. Juni 2004 04:45 schrieb Robin Bryce:
> > > > hi all,
> > > > Newbie eric3 user migrating from winglite. I like the eric3
> > > > environment a lot but I've had some problems with the debugger and
> > > > svn integration. also big apologies to all if this is
> > > > inappropriate post.
> > > >
> > > > fedora core 2
> > > > Python 2.3.3
> > > > Qt 3.2.2-2
> > > > PyQt-3.12
> > > > QScintilla 1.3
> > > > BRM 0.9 cvs20040211
> > > > eric-3.4.2 installed from a source tar ball.
> > > >
> > > > so stuff I've had trouble with:
> > > >
> > > > 1. if I clear all break points, hit F6, I cant interrupt the
> > > > program by setting a new break point. I can imagine a number of
> > > > work around that would require hackery in my source. thats fine
> > > > but if there is a better way ...
> > >
> > > That's the way the Python debugger (bdb.py) works.
> > >
> > > > 2. attempted to use passive debugging mode in conjunction with the
> > > > multi threaded client. using the following command line:
> > > > python
> > > > /usr/lib/python2.3/site-packages/eric3/Debugger/DebugClientThreads
> > > >.py -w /home/myhome/mydevdir -- /usr/bin/twistd --originalname
> > > > --pidfile blackmiled.pid -nof blackmiled.tap
> > > >
> > > > this caused infinite loop in DebugClientBase.py in the argument
> > > > processing loop beginning at line 1106. changing all the del
> > > > args[1]'s to del args[0]'s fixed this.
> > > >
> > > > with that change the debugger connected to the ide but fell over
> > > > in: DebugClientBase.shouldSkip line 751
> > > >
> > > > attributeError: tracePython
> > > >
> > > > call stack was (verbatim trace at end of email)
> > > > DebugClientThreads.py 183 shouldSkip
> > > > DebugBase.py 386 stop_here
> > > > bdb.py 70 dispatch_call
> > > > bdb.py 50 trace_dispatch
> > > > twistd 23 "import sys, os, string"
> > > > string:1
> > > >
> > > > DebugClientBase 1079 startProgInDebugger
> > > > DebugClientBase 1132 main
> > > > DebugClientThreads 183
> > > >
> > > > I'm guessing line 293 in DebugClientBase.py has not been executed
> > > > at the point the exception is thrown but I'm out of my depth here.
> > > >
> > > > passive mode works fine using same command line but with
> > > > DebugClientNoQt instead of DebugClientThreads
> > > >
> > > > 3. svn checkout forces '/trunk' onto the end of the repository
> > > > path if no tag is specified. what I really wanted was a 'just use
> > > > _this_ path' setting. changing line 177 in subversion.py to svnUrl
> > > > = vcsDir had the effect I was after.
> > >
> > > The subversion integration is following the recommendations given by
> > > the subversion book. However, it might be possible to add an option
> > > to change this.
> > >
> > > > 4. urls of the form https://svn.domain.com:PORTNUM/repos/ were
> > > > problematic. ended up changing the body of svnURL in supbersion.py
> > > > line 1066 to:
> > > >
> > > > url = tuple(url.split(':', 2))
> > > > if len(url) == 3:
> > > > scheme = url[0]
> > > > host = url[1]
> > > > port, path = url[2].split("/",1)
> > > > return "%s:%s:%s/%s" % (scheme, host,port,urllib.quote(path))
> > > > else:
> > > > return "%s:%s" % (url[0], urllib.quote(url[1]))
> > > >
> > > > 5. I really wanted an option to accept self signed ssl
> > > > certificates. I understand the issues with this but I want the
> > > > choice. could anyone point me in the right direction so I can
> > > > either kluge this in localy or implement 'as best I can' ? I gave
> > > > up with this in the end and just used ssh + localport forwarding.
> > >
> > > Could you please give some detailed explanations?
> > >
> > > > 6. I very much want to have one eric project with subfolders that
> > > > are bound to different parts of a svn archive. ie:
> > > > svnpath/projectA
> > > > svnpath/otherprojects/projectB, projectC
> > > > svnpath/yetmoreprojects/projectD
> > > >
> > > > and have an eric project with vcs integration with a direcory tree
> > > > like this:
> > > > /home/build/masterproject/
> > > > projectA,
> > > > projectB
> > > > projectC
> > > > projectD
> > > >
> > > >
> > > > Any how, a big thank you to the developers of eric3. I think its
> > > > really very nice!
> > >
> > > "Developers" is 99% just me.
> > >
> > > > Best Regards,
> > > >
> > > > Robin Bryce
> > > >
> > > >
> > > > ------------------------------------------------------------------
> > > >---- --- full stack trace for attribute error thing with passive
> > > > debugging
> > > >
> > > > File
> > > > "/usr/lib/python2.3/site-packages/eric3/Debugger/DebugClientThread
> > > >s.py ", line 183, in ?
> > > > debugClient.main()
> > > > File
> > > > "/usr/lib/python2.3/site-packages/eric3/Debugger/DebugClientBase.p
> > > >y", line 1132, in main
> > > > self.startProgInDebugger(args, wd, host, port)
> > > > File
> > > > "/usr/lib/python2.3/site-packages/eric3/Debugger/DebugClientBase.p
> > > >y", line 1079, in startProgInDebugger
> > > > res = self.mainThread.run('execfile(' + `self.running` +
> > > > ')',self.debugMod.__dict__)
> > > > File "/usr/lib/python2.3/bdb.py", line 350, in run
> > > > exec cmd in globals, locals
> > > > File "<string>", line 1, in ?
> > > > File "/usr/bin/twistd", line 23, in ?
> > > > import sys, os, string
> > > > File "/usr/lib/python2.3/site-packages/Debugger/DebugThread.py",
> > > > line 111, in trace_dispatch
> > > > File "/usr/lib/python2.3/bdb.py", line 50, in trace_dispatch
> > > > return self.dispatch_call(frame, arg)
> > > > File "/usr/lib/python2.3/bdb.py", line 70, in dispatch_call
> > > > if not (self.stop_here(frame) or self.break_anywhere(frame)):
> > > > File "/usr/lib/python2.3/site-packages/Debugger/DebugBase.py",
> > > > line 386, in stop_here
> > > > File
> > > > "/usr/lib/python2.3/site-packages/eric3/Debugger/DebugClientBase.p
> > > >y", line 751, in shouldSkip
> > > > if self.mainThread.tracePython: # trace into Python
> > > > library AttributeError: tracePython
> > >
> > > Detlev
> >
> > _______________________________________________
> > PyKDE mailing list PyKDE at mats.imk.fraunhofer.de
> > http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
More information about the PyQt
mailing list