[Eric] Re: eric 4.1.1 interactive python console problem
Melissa
melissalrice at hotmail.com
Mon Apr 14 07:55:45 BST 2008
Detlev Offenbach <detlev at ...> writes:
> can you please check, if the IDE is listening on a port? Can you try to start
> the debugger backend manually via the shell context menu 'Start->Python'
> entry?
As far as I can see (netstat -b) there is nothing listening on a port that
appears related to Eric or Python. Do you know how it would be identified? Or
which port it would use?
Running from a console window the only error messages I see are related to it
not finding some Qt translation files, which is fine because the default seems
to be English, which is working for me.
I manually executed DebugServer.py, if that's what you meant by the debugger
backend. No error message or anything but the console window disappear before I
could see what was going on. <grrr windows...> Perhaps tomorrow I can try to run
the code piece by piece and see what's failing....
In the meantime do you know any small tests I can do to isolate the problem?
Here are the bits of code from the call stack where the exception occurred:
Here is where the exception is thrown (see line marked "fails here"):
def connectDebugger(self,port,remoteAddress=None,redirect=1):
"""
Public method to establish a session with the debugger.
It opens a network connection to the debugger, connects it to stdin,
stdout and stderr and saves these file objects in case the application
being debugged redirects them itself.
@param port the port number to connect to (int)
@param remoteAddress the network address of the debug server host
(string)
@param redirect flag indicating redirection of stdin, stdout and stderr
(boolean)
"""
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
if remoteAddress is None:
sock.connect((DebugAddress,port)) # fails here
else:
sock.connect((remoteAddress,port))
sock.setblocking(0)
self.readstream = AsyncFile(sock,sys.stdin.mode,sys.stdin.name)
self.writestream = AsyncFile(sock,sys.stdout.mode,sys.stdout.name)
self.errorstream = AsyncFile(sock,sys.stderr.mode,sys.stderr.name)
if redirect:
sys.stdin = self.readstream
sys.stdout = self.writestream
sys.stderr = self.errorstream
self.redirect = redirect
# attach to the main thread here
self.attachThread(mainThread=1)
This is called from (see line marked "fails here"):
def main(self):
"""
Public method implementing the main method.
"""
if '--' in sys.argv:
args = sys.argv[1:]
host = None
port = None
wd = ''
tracePython = 0
exceptions = 1
redirect = 1
while args[0]:
if args[0] == '-h':
host = args[1]
del args[0]
del args[0]
elif args[0] == '-p':
port = args[1]
del args[0]
del args[0]
elif args[0] == '-w':
wd = args[1]
del args[0]
del args[0]
elif args[0] == '-t':
tracePython = 1
del args[0]
elif args[0] == '-e':
exceptions = 0
del args[0]
elif args[0] == '-n':
redirect = 0
del args[0]
elif args[0] == '--no-encoding':
self.noencoding = True
del args[0]
elif args[0] == '--':
del args[0]
break
else: # unknown option
del args[0]
if not args:
print "No program given. Aborting!"
else:
if not self.noencoding:
self.__coding = self.defaultCoding
## try:
## sys.setappdefaultencoding(self.defaultCoding)
## except AttributeError:
## pass
self.startProgInDebugger(args, wd, host, port,
exceptions=exceptions,
tracePython=tracePython,
redirect=redirect)
else:
if sys.argv[1] == '--no-encoding':
self.noencoding = True
del sys.argv[1]
if sys.argv[1] == '':
del sys.argv[1]
try:
port = long(sys.argv[1])
except:
port = -1
try:
redirect = int(sys.argv[2])
except:
redirect = 1
try:
remoteAddress = sys.argv[3]
except:
remoteAddress = None
sys.argv = ['']
if not '' in sys.path:
sys.path.insert(0, '')
if port >= 0:
if not self.noencoding:
self.__coding = self.defaultCoding
## try:
## sys.setappdefaultencoding(self.defaultCoding)
## except AttributeError:
## pass
self.connectDebugger(port, remoteAddress, redirect) # fails here
self.__interact()
else:
print "No network port given. Aborting..."
This is called from the marked line below:
# We are normally called by the debugger to execute directly.
if __name__ == '__main__':
debugClient = DebugClientThreads()
debugClient.main() # failed here
This is the error message in the eric error log file:
-------------------------------------------------------------------------------
2008-04-13, 23:19:00
--------------------------------------------------------------------------------
exceptions.AttributeError:
'NoneType' object has no attribute 'remoteStatement'
--------------------------------------------------------------------------------
File "C:\apps\Python\Lib\site-packages\eric4\ViewManager\ViewManager.py", line
4308, in __editorCommand
e4App().getObject("Shell").editorCommand(cmd)
File "C:\apps\Python\Lib\site-packages\eric4\QScintilla\Shell.py", line 613,
in editorCommand
self.supportedEditorCommands[cmd](cmd)
File "C:\apps\Python\Lib\site-packages\eric4\QScintilla\Shell.py", line 761,
in __QScintillaNewline
self.__executeCommand(buf)
File "C:\apps\Python\Lib\site-packages\eric4\QScintilla\Shell.py", line 1007,
in __executeCommand
self.dbs.remoteStatement(cmd)
File "C:\apps\Python\Lib\site-packages\eric4\Debugger\DebugServer.py", line
690, in remoteStatement
self.debuggerInterface.remoteStatement(stmt)
--------------------------------------------------------------------------------
Version Numbers:
Python 2.4.5
Qt 4.3.3
PyQt4 4.3.3
sip 4.7.4
QScintilla 2.2
eric4 4.1.2 (r2105)
Platform: win32
2.4.5 (#71, Mar 26 2008, 17:55:58) [MSC v.1310 32 bit (Intel)]
Thanks.
Melissa
More information about the Eric
mailing list