Sun, 04 Sep 2016 13:46:43 +0200
Worked on the last TODOs for the modernized debugger protocol.
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
4631
5c1a96925da4
Updated copyright for 2016.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4604
diff
changeset
|
3 | # Copyright (c) 2002 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a debug client base class. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import sys |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | import socket |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | import select |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | import codeop |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | import traceback |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | import os |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | import time |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | import imp |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | import re |
2371
72e2f353f34b
Fixed severe bugs in the coverage integration.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
19 | import atexit |
4366
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
20 | import signal |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
21 | import inspect |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | import DebugClientCapabilities |
803
86f10944dc83
Removed some pyflakes warnings in the Python2 debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
25 | from DebugBase import setRecursionLimit, printerr # __IGNORE_WARNING__ |
1112
8a7d1b9d18db
Improved code quality by getting rid of star imports. That way pyflakes can do its job. A few bugs fixed found by flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1029
diff
changeset
|
26 | from AsyncFile import AsyncFile, AsyncPendingWrite |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | from DebugConfig import ConfigVarTypeStrings |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | from FlexCompleter import Completer |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
29 | from DebugUtilities import prepareJsonCommand |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | DebugClientInstance = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
34 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
36 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | def DebugClientRawInput(prompt="", echo=1): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | Replacement for the standard raw_input builtin. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | This function works with the split debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
43 | @param prompt prompt to be shown. (string) |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
44 | @param echo flag indicating echoing of the input (boolean) |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
45 | @return result of the raw_input() call |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
47 | if DebugClientInstance is None or not DebugClientInstance.redirect: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | return DebugClientOrigRawInput(prompt) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | return DebugClientInstance.raw_input(prompt, echo) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | # Use our own raw_input(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | DebugClientOrigRawInput = __builtins__.__dict__['raw_input'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | __builtins__.__dict__['raw_input'] = DebugClientRawInput |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | except (AttributeError, KeyError): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | import __main__ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | DebugClientOrigRawInput = __main__.__builtins__.__dict__['raw_input'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | __main__.__builtins__.__dict__['raw_input'] = DebugClientRawInput |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
61 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
63 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | def DebugClientInput(prompt=""): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | Replacement for the standard input builtin. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | This function works with the split debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
70 | @param prompt prompt to be shown (string) |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
71 | @return result of the input() call |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | if DebugClientInstance is None or DebugClientInstance.redirect == 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | return DebugClientOrigInput(prompt) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | return DebugClientInstance.input(prompt) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | # Use our own input(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | DebugClientOrigInput = __builtins__.__dict__['input'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | __builtins__.__dict__['input'] = DebugClientInput |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | except (AttributeError, KeyError): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | import __main__ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | DebugClientOrigInput = __main__.__builtins__.__dict__['input'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | __main__.__builtins__.__dict__['input'] = DebugClientInput |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
87 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
89 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | def DebugClientFork(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | Replacement for the standard os.fork(). |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
93 | |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
94 | @return result of the fork() call |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | if DebugClientInstance is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | return DebugClientOrigFork() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | return DebugClientInstance.fork() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | # use our own fork(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | if 'fork' in dir(os): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | DebugClientOrigFork = os.fork |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | os.fork = DebugClientFork |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
106 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
108 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | def DebugClientClose(fd): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | Replacement for the standard os.close(fd). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | @param fd open file descriptor to be closed (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | if DebugClientInstance is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | DebugClientOrigClose(fd) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | DebugClientInstance.close(fd) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | # use our own close(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | if 'close' in dir(os): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | DebugClientOrigClose = os.close |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | os.close = DebugClientClose |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
125 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
127 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | def DebugClientSetRecursionLimit(limit): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | Replacement for the standard sys.setrecursionlimit(limit). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | @param limit recursion limit (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | rl = max(limit, 64) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | setRecursionLimit(rl) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | DebugClientOrigSetRecursionLimit(rl + 64) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | # use our own setrecursionlimit(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | if 'setrecursionlimit' in dir(sys): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | DebugClientOrigSetRecursionLimit = sys.setrecursionlimit |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | sys.setrecursionlimit = DebugClientSetRecursionLimit |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | DebugClientSetRecursionLimit(sys.getrecursionlimit()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
144 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
146 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | class DebugClientBase(object): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | Class implementing the client side of the debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
151 | It provides access to the Python interpeter from a debugger running in |
5135
04905a8681dc
Did some cleanup in the modernized debugger code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5134
diff
changeset
|
152 | another process. |
04905a8681dc
Did some cleanup in the modernized debugger code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5134
diff
changeset
|
153 | |
04905a8681dc
Did some cleanup in the modernized debugger code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5134
diff
changeset
|
154 | The protocol between the debugger and the client is based on JSONRPC 2.0 |
04905a8681dc
Did some cleanup in the modernized debugger code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5134
diff
changeset
|
155 | PDUs. Each one is sent on a single line, i.e. commands or responses are |
04905a8681dc
Did some cleanup in the modernized debugger code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5134
diff
changeset
|
156 | separated by a linefeed character. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | If the debugger closes the session there is no response from the client. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | The client may close the session at any time as a result of the script |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | being debugged closing or crashing. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
162 | <b>Note</b>: This class is meant to be subclassed by individual |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
163 | DebugClient classes. Do not instantiate it directly. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | clientCapabilities = DebugClientCapabilities.HasAll |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | def __init__(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | self.breakpoints = {} |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
172 | self.redirect = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
173 | self.__receiveBuffer = "" |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | # The next couple of members are needed for the threaded version. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | # For this base class they contain static values for the non threaded |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | # debugger |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | # dictionary of all threads running |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | self.threads = {} |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
182 | # the "current" thread, basically the thread we are at a |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
183 | # breakpoint for. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | self.currentThread = self |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | # special objects representing the main scripts thread and frame |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | self.mainThread = self |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | self.mainFrame = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | self.framenr = 0 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | # The context to run the debugged program in. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | self.debugMod = imp.new_module('__main__') |
3729
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
193 | self.debugMod.__dict__['__builtins__'] = __builtins__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | # The list of complete lines to execute. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | self.buffer = '' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | # The list of regexp objects to filter variables against |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | self.globalsFilterObjects = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | self.localsFilterObjects = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | |
1706
d0871e278075
Fixed an issue uncovered by the recent change to the DebugClientBase classes (only on Windows).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1607
diff
changeset
|
202 | self._fncache = {} |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | self.dircache = [] |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
204 | self.passive = False # used to indicate the passive mode |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | self.running = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | self.test = None |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
207 | self.tracePython = False |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
208 | self.debugging = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | self.fork_auto = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | self.fork_child = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | self.readstream = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | self.writestream = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | self.errorstream = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | self.pollingDisabled = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | |
2171
c7dd548d67d8
Finished the coding part of the call trace functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2157
diff
changeset
|
218 | self.callTraceEnabled = False |
c7dd548d67d8
Finished the coding part of the call trace functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2157
diff
changeset
|
219 | self.__newCallTraceEnabled = False |
c7dd548d67d8
Finished the coding part of the call trace functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2157
diff
changeset
|
220 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | self.skipdirs = sys.path[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | self.variant = 'You should not see this' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | # commandline completion stuff |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | self.complete = Completer(self.debugMod.__dict__).complete |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | if sys.hexversion < 0x2020000: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | self.compile_command = codeop.compile_command |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | self.compile_command = codeop.CommandCompiler() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | self.coding_re = re.compile(r"coding[:=]\s*([-\w_.]+)") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | self.defaultCoding = 'utf-8' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | self.__coding = self.defaultCoding |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | self.noencoding = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | def getCoding(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | Public method to return the current coding. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | @return codec name (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | return self.__coding |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | def __setCoding(self, filename): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | Private method to set the coding used by a python file. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | @param filename name of the file to inspect (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | if self.noencoding: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | self.__coding = sys.getdefaultencoding() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | default = 'latin-1' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | f = open(filename, 'rb') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | # read the first and second line |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | text = f.readline() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | text = "%s%s" % (text, f.readline()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | f.close() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | except IOError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | self.__coding = default |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | for l in text.splitlines(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | m = self.coding_re.search(l) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | if m: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | self.__coding = m.group(1) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | self.__coding = default |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
273 | def attachThread(self, target=None, args=None, kwargs=None, mainThread=0): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | Public method to setup a thread for DebugClient to debug. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
277 | If mainThread is non-zero, then we are attaching to the already |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | started mainthread of the app and the rest of the args are ignored. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | This is just an empty function and is overridden in the threaded |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
283 | @param target the start function of the target thread (i.e. the user |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
284 | code) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | @param args arguments to pass to target |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | @param kwargs keyword arguments to pass to target |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
287 | @param mainThread non-zero, if we are attaching to the already |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | started mainthread of the app |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | if self.debugging: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | sys.setprofile(self.profile) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | def __dumpThreadList(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
295 | Private method to send the list of threads. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | threadList = [] |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
298 | if self.threads and self.currentThread: |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
299 | # indication for the threaded debugger |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | currentId = self.currentThread.get_ident() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | for t in self.threads.values(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | d = {} |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | d["id"] = t.get_ident() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | d["name"] = t.get_name() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | d["broken"] = t.isBroken() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | threadList.append(d) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | currentId = -1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | d = {} |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | d["id"] = -1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | d["name"] = "MainThread" |
4063
b7269498aa95
Fixed a serious issue handling 'non-error' exceptions in the debugger. This bug was about 10 years old.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
312 | if hasattr(self, "isBroken"): |
b7269498aa95
Fixed a serious issue handling 'non-error' exceptions in the debugger. This bug was about 10 years old.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
313 | d["broken"] = self.isBroken() |
b7269498aa95
Fixed a serious issue handling 'non-error' exceptions in the debugger. This bug was about 10 years old.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
314 | else: |
b7269498aa95
Fixed a serious issue handling 'non-error' exceptions in the debugger. This bug was about 10 years old.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4021
diff
changeset
|
315 | d["broken"] = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | threadList.append(d) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
318 | self.sendJsonCommand("ResponseThreadList", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
319 | "currentID": currentId, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
320 | "threadList": threadList, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
321 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
323 | def raw_input(self, prompt, echo): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | Public method to implement raw_input() using the event loop. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | @param prompt the prompt to be shown (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | @param echo Flag indicating echoing of the input (boolean) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329 | @return the entered string |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
331 | self.sendJsonCommand("RequestRaw", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
332 | "prompt": prompt, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
333 | "echo": echo, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
334 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | self.eventLoop(True) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | return self.rawLine |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
338 | def input(self, prompt): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | Public method to implement input() using the event loop. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | @param prompt the prompt to be shown (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | @return the entered string evaluated as a Python expresion |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
344 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | return eval(self.raw_input(prompt, 1)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
347 | def sessionClose(self, exit=True): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | """ |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
349 | Public method to close the session with the debugger and optionally |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
350 | terminate. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | @param exit flag indicating to terminate (boolean) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | self.set_quit() |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
356 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
359 | self.debugging = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | # make sure we close down our end of the socket |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | # might be overkill as normally stdin, stdout and stderr |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | # SHOULD be closed on exit, but it does not hurt to do it here |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
364 | self.readstream.close(True) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
365 | self.writestream.close(True) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
366 | self.errorstream.close(True) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | if exit: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | # Ok, go away. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | sys.exit() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
372 | def handleLine(self, line): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | Public method to handle the receipt of a complete line. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
376 | It first looks for a valid protocol token at the start of the line. |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
377 | Thereafter it trys to execute the lines accumulated so far. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | @param line the received line |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | # Remove any newline. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | if line[-1] == '\n': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
383 | line = line[:-1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385 | ## printerr(line) ##debug |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
386 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
387 | self.handleJsonCommand(line) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
388 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
389 | def handleJsonCommand(self, jsonStr): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
390 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
391 | Public method to handle a command serialized as a JSON string. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
392 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
393 | @param jsonStr string containing the command received from the IDE |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
394 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
395 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
396 | import json |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
397 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
398 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
399 | commandDict = json.loads(jsonStr.strip()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
400 | except json.JSONDecodeError as err: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
401 | printerr(str(err)) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
402 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
403 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
404 | method = commandDict["method"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
405 | params = commandDict["params"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
406 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
407 | if method == "RequestVariables": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
408 | self.__dumpVariables( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
409 | params["frameNumber"], params["scope"], params["filters"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
410 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
411 | elif method == "RequestVariable": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
412 | self.__dumpVariable( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
413 | params["variable"], params["frameNumber"], |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
414 | params["scope"], params["filters"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
415 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
416 | elif method == "RequestThreadList": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
417 | self.__dumpThreadList() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
418 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
419 | elif method == "RequestThreadSet": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
420 | if params["threadID"] in self.threads: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
421 | self.setCurrentThread(params["threadID"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
422 | self.sendJsonCommand("ResponseThreadSet", {}) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
423 | stack = self.currentThread.getStack() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
424 | self.sendJsonCommand("ResponseStack", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
425 | "stack": stack, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
426 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
427 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
428 | elif method == "RequestCapabilities": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
429 | self.sendJsonCommand("ResponseCapabilities", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
430 | "capabilities": self.__clientCapabilities(), |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
431 | "clientType": "Python3" |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
432 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
433 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
434 | elif method == "RequestBanner": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
435 | self.sendJsonCommand("ResponseBanner", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
436 | "version": "Python {0}".format(sys.version), |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
437 | "platform": socket.gethostname(), |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
438 | "dbgclient": self.variant, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
439 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
440 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
441 | elif method == "RequestSetFilter": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
442 | self.__generateFilterObjects(params["scope"], params["filter"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
443 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
444 | elif method == "RequestCallTrace": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
445 | if self.debugging: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
446 | self.callTraceEnabled = params["enable"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
447 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
448 | self.__newCallTraceEnabled = params["enable"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
449 | # remember for later |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
450 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
451 | elif method == "RequestEnvironment": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
452 | for key, value in params["environment"].items(): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
453 | if key.endswith("+"): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
454 | if key[:-1] in os.environ: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
455 | os.environ[key[:-1]] += value |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456 | else: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
457 | os.environ[key[:-1]] = value |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458 | else: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
459 | os.environ[key] = value |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
460 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
461 | elif method == "RequestLoad": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
462 | self._fncache = {} |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
463 | self.dircache = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
464 | sys.argv = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
465 | params["filename"] = params["filename"].encode( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
466 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
467 | self.__setCoding(params["filename"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
468 | sys.argv.append(params["filename"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
469 | sys.argv.extend(params["argv"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
470 | sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
471 | if params["workdir"] == '': |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
472 | os.chdir(sys.path[1]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
473 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
474 | os.chdir(params["workdir"]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
475 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
476 | self.running = sys.argv[0] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
477 | self.mainFrame = None |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
478 | self.debugging = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
479 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
480 | self.fork_auto = params["autofork"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
481 | self.fork_child = params["forkChild"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
482 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
483 | self.threads.clear() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
484 | self.attachThread(mainThread=True) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
486 | # set the system exception handling function to ensure, that |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
487 | # we report on all unhandled exceptions |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
488 | sys.excepthook = self.__unhandled_exception |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
489 | self.__interceptSignals() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
490 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
491 | # clear all old breakpoints, they'll get set after we have |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
492 | # started |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
493 | self.mainThread.clear_all_breaks() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
494 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
495 | self.mainThread.tracePython = params["traceInterpreter"] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
497 | # This will eventually enter a local event loop. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
498 | self.debugMod.__dict__['__file__'] = self.running |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
499 | sys.modules['__main__'] = self.debugMod |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
500 | self.callTraceEnabled = self.__newCallTraceEnabled |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
501 | res = self.mainThread.run( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
502 | 'execfile(' + repr(self.running) + ')', |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
503 | self.debugMod.__dict__) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
504 | self.progTerminated(res) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
505 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
506 | elif method == "RequestRun": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
507 | sys.argv = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
508 | params["filename"] = params["filename"].encode( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
509 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
510 | self.__setCoding(params["filename"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
511 | sys.argv.append(params["filename"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
512 | sys.argv.extend(params["argv"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
513 | sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
514 | if params["workdir"] == '': |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
515 | os.chdir(sys.path[1]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
516 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
517 | os.chdir(params["workdir"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
518 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
519 | self.running = sys.argv[0] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
520 | self.mainFrame = None |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
521 | self.botframe = None |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
523 | self.fork_auto = params["autofork"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
524 | self.fork_child = params["forkChild"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
525 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
526 | self.threads.clear() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
527 | self.attachThread(mainThread=True) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
528 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
529 | # set the system exception handling function to ensure, that |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
530 | # we report on all unhandled exceptions |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
531 | sys.excepthook = self.__unhandled_exception |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
532 | self.__interceptSignals() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
533 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
534 | self.mainThread.tracePython = False |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
535 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
536 | self.debugMod.__dict__['__file__'] = sys.argv[0] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
537 | sys.modules['__main__'] = self.debugMod |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
538 | res = 0 |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
539 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
540 | execfile(sys.argv[0], self.debugMod.__dict__) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
541 | except SystemExit as exc: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
542 | res = exc.code |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
543 | atexit._run_exitfuncs() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
544 | self.writestream.flush() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
545 | self.progTerminated(res) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
546 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
547 | elif method == "RequestCoverage": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
548 | from coverage import coverage |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
549 | sys.argv = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
550 | params["filename"] = params["filename"].encode( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
551 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
552 | self.__setCoding(params["filename"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
553 | sys.argv.append(params["filename"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
554 | sys.argv.extend(params["argv"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
555 | sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
556 | if params["workdir"] == '': |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
557 | os.chdir(sys.path[1]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
558 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
559 | os.chdir(params["workdir"]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
560 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
561 | # set the system exception handling function to ensure, that |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
562 | # we report on all unhandled exceptions |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
563 | sys.excepthook = self.__unhandled_exception |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
564 | self.__interceptSignals() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
565 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
566 | # generate a coverage object |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
567 | self.cover = coverage( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
568 | auto_data=True, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
569 | data_file="%s.coverage" % os.path.splitext(sys.argv[0])[0]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
570 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
571 | if params["erase"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
572 | self.cover.erase() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
573 | sys.modules['__main__'] = self.debugMod |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
574 | self.debugMod.__dict__['__file__'] = sys.argv[0] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
575 | self.running = sys.argv[0] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
576 | res = 0 |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
577 | self.cover.start() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
578 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
579 | execfile(sys.argv[0], self.debugMod.__dict__) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
580 | except SystemExit as exc: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
581 | res = exc.code |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
582 | atexit._run_exitfuncs() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
583 | self.cover.stop() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
584 | self.cover.save() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
585 | self.writestream.flush() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
586 | self.progTerminated(res) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
587 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
588 | elif method == "RequestProfile": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
589 | sys.setprofile(None) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
590 | import PyProfile |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
591 | sys.argv = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
592 | params["filename"] = params["filename"].encode( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
593 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
594 | self.__setCoding(params["filename"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
595 | sys.argv.append(params["filename"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
596 | sys.argv.extend(params["argv"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
597 | sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
598 | if params["workdir"] == '': |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
599 | os.chdir(sys.path[1]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
600 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
601 | os.chdir(params["workdir"]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
602 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
603 | # set the system exception handling function to ensure, that |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
604 | # we report on all unhandled exceptions |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
605 | sys.excepthook = self.__unhandled_exception |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
606 | self.__interceptSignals() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
607 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
608 | # generate a profile object |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
609 | self.prof = PyProfile.PyProfile(sys.argv[0]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
610 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
611 | if params["erase"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
612 | self.prof.erase() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
613 | self.debugMod.__dict__['__file__'] = sys.argv[0] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
614 | sys.modules['__main__'] = self.debugMod |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
615 | self.running = sys.argv[0] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
616 | res = 0 |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
617 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
618 | self.prof.run('execfile(%r)' % sys.argv[0]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
619 | except SystemExit as exc: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
620 | res = exc.code |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
621 | atexit._run_exitfuncs() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
622 | self.prof.save() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
623 | self.writestream.flush() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
624 | self.progTerminated(res) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
625 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
626 | elif method == "ExecuteStatement": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
627 | if self.buffer: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
628 | self.buffer = self.buffer + '\n' + params["statement"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
629 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
630 | self.buffer = params["statement"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
631 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
632 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
633 | code = self.compile_command(self.buffer, self.readstream.name) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
634 | except (OverflowError, SyntaxError, ValueError): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
635 | # Report the exception |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
636 | sys.last_type, sys.last_value, sys.last_traceback = \ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
637 | sys.exc_info() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
638 | self.sendJsonCommand("ClientOutput", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
639 | "text": "".join(traceback.format_exception_only( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
640 | sys.last_type, sys.last_value)) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
641 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
642 | self.buffer = '' |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
643 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
644 | if code is None: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
645 | self.sendJsonCommand("ResponseContinue", {}) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
646 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
647 | else: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
648 | self.buffer = '' |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
649 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
650 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
651 | if self.running is None: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
652 | exec code in self.debugMod.__dict__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
653 | else: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
654 | if self.currentThread is None: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
655 | # program has terminated |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
656 | self.running = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
657 | _globals = self.debugMod.__dict__ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
658 | _locals = _globals |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
659 | else: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
660 | cf = self.currentThread.getCurrentFrame() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
661 | # program has terminated |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
662 | if cf is None: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
663 | self.running = None |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
664 | _globals = self.debugMod.__dict__ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
665 | _locals = _globals |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
666 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
667 | frmnr = self.framenr |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
668 | while cf is not None and frmnr > 0: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
669 | cf = cf.f_back |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
670 | frmnr -= 1 |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
671 | _globals = cf.f_globals |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
672 | _locals = \ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
673 | self.currentThread.getFrameLocals( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
674 | self.framenr) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
675 | # reset sys.stdout to our redirector |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
676 | # (unconditionally) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
677 | if "sys" in _globals: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
678 | __stdout = _globals["sys"].stdout |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
679 | _globals["sys"].stdout = self.writestream |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
680 | exec code in _globals, _locals |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
681 | _globals["sys"].stdout = __stdout |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
682 | elif "sys" in _locals: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
683 | __stdout = _locals["sys"].stdout |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
684 | _locals["sys"].stdout = self.writestream |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
685 | exec code in _globals, _locals |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
686 | _locals["sys"].stdout = __stdout |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
687 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
688 | exec code in _globals, _locals |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
689 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
690 | self.currentThread.storeFrameLocals(self.framenr) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
691 | except SystemExit, exc: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
692 | self.progTerminated(exc.code) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
693 | except Exception: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
694 | # Report the exception and the traceback |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
695 | tlist = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
696 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
697 | exc_type, exc_value, exc_tb = sys.exc_info() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
698 | sys.last_type = exc_type |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
699 | sys.last_value = exc_value |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
700 | sys.last_traceback = exc_tb |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
701 | tblist = traceback.extract_tb(exc_tb) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
702 | del tblist[:1] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
703 | tlist = traceback.format_list(tblist) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
704 | if tlist: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
705 | tlist.insert( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
706 | 0, "Traceback (innermost last):\n") |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
707 | tlist.extend(traceback.format_exception_only( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
708 | exc_type, exc_value)) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
709 | finally: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
710 | tblist = exc_tb = None |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
711 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
712 | self.sendJsonCommand("ClientOutput", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
713 | "text": "".join(tlist) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
714 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
715 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
716 | self.sendJsonCommand("ResponseOK", {}) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
717 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
718 | elif method == "RequestStep": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
719 | self.currentThread.step(True) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
720 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
721 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
722 | elif method == "RequestStepOver": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
723 | self.currentThread.step(False) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
724 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
725 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
726 | elif method == "RequestStepOut": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
727 | self.currentThread.stepOut() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
728 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
729 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
730 | elif method == "RequestStepQuit": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
731 | if self.passive: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
732 | self.progTerminated(42) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
733 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
734 | self.set_quit() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
735 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
736 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
737 | elif method == "RequestContinue": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
738 | self.currentThread.go(params["special"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
739 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
740 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
741 | elif method == "RawInput": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
742 | # If we are handling raw mode input then break out of the current |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
743 | # event loop. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
744 | self.rawLine = params["input"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
745 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
746 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
747 | elif method == "RequestBreakpoint": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
748 | params["filename"] = params["filename"].encode( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
749 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
750 | if params["setBreakpoint"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
751 | if params["condition"] in ['None', '']: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
752 | params["condition"] = None |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
753 | elif params["condition"] is not None: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
754 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
755 | compile(params["condition"], '<string>', 'eval') |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
756 | except SyntaxError: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
757 | self.sendJsonCommand("ResponseBPConditionError", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
758 | "filename": params["filename"], |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
759 | "line": params["line"], |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
760 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
761 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
762 | self.mainThread.set_break( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
763 | params["filename"], params["line"], params["temporary"], |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
764 | params["condition"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
765 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
766 | self.mainThread.clear_break(params["filename"], params["line"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
767 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
768 | elif method == "RequestBreakpointEnable": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
769 | params["filename"] = params["filename"].encode( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
770 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
771 | bp = self.mainThread.get_break(params["filename"], params["line"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
772 | if bp is not None: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
773 | if params["enable"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
774 | bp.enable() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
775 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
776 | bp.disable() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
777 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
778 | elif method == "RequestBreakpointIgnore": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
779 | params["filename"] = params["filename"].encode( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
780 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
781 | bp = self.mainThread.get_break(params["filename"], params["line"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
782 | if bp is not None: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
783 | bp.ignore = params["count"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
784 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
785 | elif method == "RequestWatch": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
786 | if params["setWatch"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
787 | if not params["condition"].endswith( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
788 | ('??created??', '??changed??')): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
789 | try: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
790 | compile(params["condition"], '<string>', 'eval') |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
791 | except SyntaxError: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
792 | self.sendJsonCommand("ResponseWatchConditionError", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
793 | "condition": params["condition"], |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
794 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
795 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
796 | self.mainThread.set_watch( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
797 | params["condition"], params["temporary"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
798 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
799 | self.mainThread.clear_watch(params["condition"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
800 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
801 | elif method == "RequestWatchEnable": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
802 | wp = self.mainThread.get_watch(params["condition"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
803 | if wp is not None: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
804 | if params["enable"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
805 | wp.enable() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
806 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
807 | wp.disable() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
808 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
809 | elif method == "RequestWatchIgnore": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
810 | wp = self.mainThread.get_watch(params["condition"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
811 | if wp is not None: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
812 | wp.ignore = params["count"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
813 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
814 | elif method == "RequestShutdown": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
815 | self.sessionClose() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
816 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
817 | elif method == "RequestCompletion": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
818 | self.__completionList(params["text"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
819 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
820 | elif method == "RequestUTPrepare": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
821 | params["filename"] = params["filename"].encode( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
822 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
823 | sys.path.insert( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
824 | 0, os.path.dirname(os.path.abspath(params["filename"]))) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
825 | os.chdir(sys.path[0]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
826 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
827 | # set the system exception handling function to ensure, that |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
828 | # we report on all unhandled exceptions |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
829 | sys.excepthook = self.__unhandled_exception |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
830 | self.__interceptSignals() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
831 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
832 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
833 | import unittest |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
834 | utModule = __import__(params["testname"]) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
835 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
836 | if params["failed"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
837 | self.test = unittest.defaultTestLoader\ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
838 | .loadTestsFromNames(params["failed"], utModule) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
839 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
840 | self.test = unittest.defaultTestLoader\ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
841 | .loadTestsFromName(params["testfunctionname"], |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
842 | utModule) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
843 | except AttributeError: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
844 | self.test = unittest.defaultTestLoader\ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
845 | .loadTestsFromModule(utModule) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
846 | except Exception: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
847 | exc_type, exc_value, exc_tb = sys.exc_info() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
848 | self.sendJsonCommand("ResponseUTPrepared", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
849 | "count": 0, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
850 | "exception": exc_type.__name__, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
851 | "message": str(exc_value), |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
852 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
853 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
854 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
855 | # generate a coverage object |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
856 | if params["coverage"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
857 | from coverage import coverage |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
858 | self.cover = coverage( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
859 | auto_data=True, |
5134
4a4212a6f40c
Removed two obsolete modules in the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5133
diff
changeset
|
860 | data_file="%s.coverage" % ( |
4a4212a6f40c
Removed two obsolete modules in the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5133
diff
changeset
|
861 | os.path.splitext(params["coveragefile"])[0])) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
862 | if params["coverageerase"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
863 | self.cover.erase() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
864 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
865 | self.cover = None |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
866 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
867 | self.sendJsonCommand("ResponseUTPrepared", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
868 | "count": self.test.countTestCases(), |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
869 | "exception": "", |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
870 | "message": "", |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
871 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
872 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
873 | elif method == "RequestUTRun": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
874 | from DCTestResult import DCTestResult |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
875 | self.testResult = DCTestResult(self) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
876 | if self.cover: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
877 | self.cover.start() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
878 | self.test.run(self.testResult) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
879 | if self.cover: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
880 | self.cover.stop() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
881 | self.cover.save() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
882 | self.sendJsonCommand("ResponseUTFinished", {}) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
883 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
884 | elif method == "RequestUTStop": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
885 | self.testResult.stop() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
886 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
887 | elif method == "ResponseForkTo": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
888 | # this results from a separate event loop |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
889 | self.fork_child = (params["target"] == 'child') |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
890 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
891 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
892 | def sendJsonCommand(self, method, params): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
893 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
894 | Public method to send a single command or response to the IDE. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
895 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
896 | @param method command or response command name to be sent |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
897 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
898 | @param params dictionary of named parameters for the command or |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
899 | response |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
900 | @type dict |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
901 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
902 | cmd = prepareJsonCommand(method, params) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
903 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
904 | self.writestream.write_p(cmd) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
905 | self.writestream.flush() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
906 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
907 | def sendClearTemporaryBreakpoint(self, filename, lineno): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
908 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
909 | Public method to signal the deletion of a temporary breakpoint. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
910 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
911 | @param filename name of the file the bp belongs to |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
912 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
913 | @param lineno linenumber of the bp |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
914 | @type int |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
915 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
916 | self.sendJsonCommand("ResponseClearBreakpoint", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
917 | "filename": filename, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
918 | "line": lineno |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
919 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
920 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
921 | def sendClearTemporaryWatch(self, condition): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
922 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
923 | Public method to signal the deletion of a temporary watch expression. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
924 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
925 | @param condition condition of the watch expression to be cleared |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
926 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
927 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
928 | self.sendJsonCommand("ResponseClearWatch", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
929 | "condition": condition, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
930 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
931 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
932 | def sendResponseLine(self, stack): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
933 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
934 | Public method to send the current call stack. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
935 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
936 | @param stack call stack |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
937 | @type list |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
938 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
939 | self.sendJsonCommand("ResponseLine", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
940 | "stack": stack, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
941 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
942 | |
5140
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
943 | def sendCallTrace(self, event, fromInfo, toInfo): |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
944 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
945 | Public method to send a call trace entry. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
946 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
947 | @param event trace event (call or return) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
948 | @type str |
5140
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
949 | @param fromInfo dictionary containing the origin info |
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
950 | @type dict with 'filename', 'linenumber' and 'codename' |
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
951 | as keys |
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
952 | @param toInfo dictionary containing the target info |
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
953 | @type dict with 'filename', 'linenumber' and 'codename' |
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
954 | as keys |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
955 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
956 | self.sendJsonCommand("CallTrace", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
957 | "event": event[0], |
5140
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
958 | "from": fromInfo, |
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
959 | "to": toInfo, |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
960 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
961 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
962 | def sendException(self, exceptionType, exceptionMessage, stack): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
963 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
964 | Public method to send information for an exception. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
965 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
966 | @param exceptionType type of exception raised |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
967 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
968 | @param exceptionMessage message of the exception |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
969 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
970 | @param stack stack trace information |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
971 | @type list |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
972 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
973 | self.sendJsonCommand("ResponseException", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
974 | "type": exceptionType, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
975 | "message": exceptionMessage, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
976 | "stack": stack, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
977 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
978 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
979 | def sendSyntaxError(self, message, filename, lineno, charno): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
980 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
981 | Public method to send information for a syntax error. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
982 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
983 | @param message syntax error message |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
984 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
985 | @param filename name of the faulty file |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
986 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
987 | @param lineno line number info |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
988 | @type int |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
989 | @param charno character number info |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
990 | @tyoe int |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
991 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
992 | self.sendJsonCommand("ResponseSyntax", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
993 | "message": message, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
994 | "filename": filename, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
995 | "linenumber": lineno, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
996 | "characternumber": charno, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
997 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
998 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
999 | def sendPassiveStartup(self, filename, exceptions): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1000 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1001 | Public method to send the passive start information. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1002 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1003 | @param filename name of the script |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1004 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1005 | @param exceptions flag to enable exception reporting of the IDE |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1006 | @type bool |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1007 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1008 | self.sendJsonCommand("PassiveStartup", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1009 | "filename": filename, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1010 | "exceptions": exceptions, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1011 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1012 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1013 | def __clientCapabilities(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1014 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1015 | Private method to determine the clients capabilities. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1016 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1017 | @return client capabilities (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1018 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1019 | try: |
803
86f10944dc83
Removed some pyflakes warnings in the Python2 debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
1020 | import PyProfile # __IGNORE_WARNING__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1021 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1022 | del sys.modules['PyProfile'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1023 | except KeyError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1024 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1025 | return self.clientCapabilities |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1026 | except ImportError: |
4830
f609a22f43bd
Fixed a few code style issues detected by the updated pep8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4642
diff
changeset
|
1027 | return ( |
f609a22f43bd
Fixed a few code style issues detected by the updated pep8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4642
diff
changeset
|
1028 | self.clientCapabilities & ~DebugClientCapabilities.HasProfiler) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1029 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1030 | def readReady(self, stream): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1031 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1032 | Public method called when there is data ready to be read. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1033 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1034 | @param stream file like object that has data to be written |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1035 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1036 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1037 | got = stream.readline_p() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1038 | except Exception: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1039 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1040 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1041 | if len(got) == 0: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1042 | self.sessionClose() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1043 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1044 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1045 | self.__receiveBuffer = self.__receiveBuffer + got |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1046 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1047 | # Call handleLine for the line if it is complete. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1048 | eol = self.__receiveBuffer.find('\n') |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1049 | while eol >= 0: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1050 | line = self.__receiveBuffer[:eol + 1] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1051 | self.__receiveBuffer = self.__receiveBuffer[eol + 1:] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1052 | self.handleLine(line) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1053 | eol = self.__receiveBuffer.find('\n') |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1054 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1055 | def writeReady(self, stream): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1056 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1057 | Public method called when we are ready to write data. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1058 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1059 | @param stream file like object that has data to be written |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1060 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1061 | stream.write_p("") |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1062 | stream.flush() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1063 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1064 | def __interact(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1065 | """ |
4944
d4709f4818bb
Corrected a typo.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4943
diff
changeset
|
1066 | Private method to interact with the debugger. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1067 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1068 | global DebugClientInstance |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1069 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1070 | DebugClientInstance = self |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1071 | self.__receiveBuffer = "" |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1072 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1073 | if not self.passive: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1074 | # At this point simulate an event loop. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1075 | self.eventLoop() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1076 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1077 | def eventLoop(self, disablePolling=False): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1078 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1079 | Public method implementing our event loop. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1080 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1081 | @param disablePolling flag indicating to enter an event loop with |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1082 | polling disabled (boolean) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1083 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1084 | self.eventExit = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1085 | self.pollingDisabled = disablePolling |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1086 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1087 | while self.eventExit is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1088 | wrdy = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1089 | |
4943
e093b4e24e97
Gracefully exit the debugger clients, without loosing last lines.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4834
diff
changeset
|
1090 | if self.writestream.nWriteErrors > self.writestream.maxtries: |
e093b4e24e97
Gracefully exit the debugger clients, without loosing last lines.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4834
diff
changeset
|
1091 | break |
e093b4e24e97
Gracefully exit the debugger clients, without loosing last lines.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4834
diff
changeset
|
1092 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1093 | if AsyncPendingWrite(self.writestream): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1094 | wrdy.append(self.writestream) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1095 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1096 | if AsyncPendingWrite(self.errorstream): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1097 | wrdy.append(self.errorstream) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1098 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1099 | try: |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1100 | rrdy, wrdy, xrdy = select.select([self.readstream], wrdy, []) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1101 | except (select.error, KeyboardInterrupt, socket.error): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1102 | # just carry on |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1103 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1104 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1105 | if self.readstream in rrdy: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1106 | self.readReady(self.readstream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1107 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1108 | if self.writestream in wrdy: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1109 | self.writeReady(self.writestream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1110 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1111 | if self.errorstream in wrdy: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1112 | self.writeReady(self.errorstream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1113 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1114 | self.eventExit = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1115 | self.pollingDisabled = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1116 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1117 | def eventPoll(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1118 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1119 | Public method to poll for events like 'set break point'. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1120 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1121 | if self.pollingDisabled: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1122 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1123 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1124 | # the choice of a ~0.5 second poll interval is arbitrary. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1125 | lasteventpolltime = getattr(self, 'lasteventpolltime', time.time()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1126 | now = time.time() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1127 | if now - lasteventpolltime < 0.5: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1128 | self.lasteventpolltime = lasteventpolltime |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1129 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1130 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1131 | self.lasteventpolltime = now |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1132 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1133 | wrdy = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1134 | if AsyncPendingWrite(self.writestream): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1135 | wrdy.append(self.writestream) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1136 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1137 | if AsyncPendingWrite(self.errorstream): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1138 | wrdy.append(self.errorstream) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1139 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1140 | # immediate return if nothing is ready. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1141 | try: |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1142 | rrdy, wrdy, xrdy = select.select([self.readstream], wrdy, [], 0) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1143 | except (select.error, KeyboardInterrupt, socket.error): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1144 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1145 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1146 | if self.readstream in rrdy: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1147 | self.readReady(self.readstream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1148 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1149 | if self.writestream in wrdy: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1150 | self.writeReady(self.writestream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1151 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1152 | if self.errorstream in wrdy: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1153 | self.writeReady(self.errorstream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1154 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1155 | def connectDebugger(self, port, remoteAddress=None, redirect=1): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1156 | """ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1157 | Public method to establish a session with the debugger. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1158 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1159 | It opens a network connection to the debugger, connects it to stdin, |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1160 | stdout and stderr and saves these file objects in case the application |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1161 | being debugged redirects them itself. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1162 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1163 | @param port the port number to connect to (int) |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1164 | @param remoteAddress the network address of the debug server host |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1165 | (string) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1166 | @param redirect flag indicating redirection of stdin, stdout and |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1167 | stderr (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1168 | """ |
4269
5ba44a2de31a
Simplified the debugger backend connection code for the Python2 and Python3 debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4220
diff
changeset
|
1169 | if remoteAddress is None: |
5ba44a2de31a
Simplified the debugger backend connection code for the Python2 and Python3 debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4220
diff
changeset
|
1170 | remoteAddress = "127.0.0.1" |
4270
fd51fbdfdd69
Fixed the last socket change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4269
diff
changeset
|
1171 | elif "@@i" in remoteAddress: |
fd51fbdfdd69
Fixed the last socket change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4269
diff
changeset
|
1172 | remoteAddress = remoteAddress.split("@@i")[0] |
4269
5ba44a2de31a
Simplified the debugger backend connection code for the Python2 and Python3 debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4220
diff
changeset
|
1173 | sock = socket.create_connection((remoteAddress, port)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1174 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1175 | self.readstream = AsyncFile(sock, sys.stdin.mode, sys.stdin.name) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1176 | self.writestream = AsyncFile(sock, sys.stdout.mode, sys.stdout.name) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1177 | self.errorstream = AsyncFile(sock, sys.stderr.mode, sys.stderr.name) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1178 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1179 | if redirect: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1180 | sys.stdin = self.readstream |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1181 | sys.stdout = self.writestream |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1182 | sys.stderr = self.errorstream |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1183 | self.redirect = redirect |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1184 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1185 | # attach to the main thread here |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1186 | self.attachThread(mainThread=1) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1187 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1188 | def __unhandled_exception(self, exctype, excval, exctb): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1189 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1190 | Private method called to report an uncaught exception. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1191 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1192 | @param exctype the type of the exception |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1193 | @param excval data about the exception |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1194 | @param exctb traceback for the exception |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1195 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1196 | self.mainThread.user_exception(None, (exctype, excval, exctb), True) |
4366
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1197 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1198 | def __interceptSignals(self): |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1199 | """ |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1200 | Private method to intercept common signals. |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1201 | """ |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1202 | for signum in [ |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1203 | signal.SIGABRT, # abnormal termination |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1204 | signal.SIGFPE, # floating point exception |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1205 | signal.SIGILL, # illegal instruction |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1206 | signal.SIGSEGV, # segmentation violation |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1207 | ]: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1208 | signal.signal(signum, self.__signalHandler) |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1209 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1210 | def __signalHandler(self, signalNumber, stackFrame): |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1211 | """ |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1212 | Private method to handle signals. |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1213 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1214 | @param signalNumber number of the signal to be handled |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1215 | @type int |
4370
54dbb658f9e6
Corrected some code style issues and regenerated the source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4366
diff
changeset
|
1216 | @param stackFrame current stack frame |
4366
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1217 | @type frame object |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1218 | """ |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1219 | if signalNumber == signal.SIGABRT: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1220 | message = "Abnormal Termination" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1221 | elif signalNumber == signal.SIGFPE: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1222 | message = "Floating Point Exception" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1223 | elif signalNumber == signal.SIGILL: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1224 | message = "Illegal Instruction" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1225 | elif signalNumber == signal.SIGSEGV: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1226 | message = "Segmentation Violation" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1227 | else: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1228 | message = "Unknown Signal '%d'" % signalNumber |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1229 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1230 | filename = self.absPath(stackFrame) |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1231 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1232 | linenr = stackFrame.f_lineno |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1233 | ffunc = stackFrame.f_code.co_name |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1234 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1235 | if ffunc == '?': |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1236 | ffunc = '' |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1237 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1238 | if ffunc and not ffunc.startswith("<"): |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1239 | argInfo = inspect.getargvalues(stackFrame) |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1240 | try: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1241 | fargs = inspect.formatargvalues( |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1242 | argInfo.args, argInfo.varargs, |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1243 | argInfo.keywords, argInfo.locals) |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1244 | except Exception: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1245 | fargs = "" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1246 | else: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1247 | fargs = "" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1248 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1249 | self.sendJsonCommand("ResponseSignal", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1250 | "message": message, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1251 | "filename": filename, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1252 | "linenumber": linenr, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1253 | "function": ffunc, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1254 | "arguments": fargs, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1255 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1256 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1257 | def absPath(self, fn): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1258 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1259 | Public method to convert a filename to an absolute name. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1260 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1261 | sys.path is used as a set of possible prefixes. The name stays |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1262 | relative if a file could not be found. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1263 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1264 | @param fn filename (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1265 | @return the converted filename (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1266 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1267 | if os.path.isabs(fn): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1268 | return fn |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1269 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1270 | # Check the cache. |
1706
d0871e278075
Fixed an issue uncovered by the recent change to the DebugClientBase classes (only on Windows).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1607
diff
changeset
|
1271 | if fn in self._fncache: |
d0871e278075
Fixed an issue uncovered by the recent change to the DebugClientBase classes (only on Windows).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1607
diff
changeset
|
1272 | return self._fncache[fn] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1273 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1274 | # Search sys.path. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1275 | for p in sys.path: |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1276 | afn = os.path.abspath(os.path.join(p, fn)) |
1607
67c7ffaed401
Fixed an issue in the debugger backends for Python and Python3 that caused files in exceptions been converted to all lowercase on case insensitive filesystems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1596
diff
changeset
|
1277 | nafn = os.path.normcase(afn) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1278 | |
1607
67c7ffaed401
Fixed an issue in the debugger backends for Python and Python3 that caused files in exceptions been converted to all lowercase on case insensitive filesystems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1596
diff
changeset
|
1279 | if os.path.exists(nafn): |
1706
d0871e278075
Fixed an issue uncovered by the recent change to the DebugClientBase classes (only on Windows).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1607
diff
changeset
|
1280 | self._fncache[fn] = afn |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1281 | d = os.path.dirname(afn) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1282 | if (d not in sys.path) and (d not in self.dircache): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1283 | self.dircache.append(d) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1284 | return afn |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1285 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1286 | # Search the additional directory cache |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1287 | for p in self.dircache: |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1288 | afn = os.path.abspath(os.path.join(p, fn)) |
1607
67c7ffaed401
Fixed an issue in the debugger backends for Python and Python3 that caused files in exceptions been converted to all lowercase on case insensitive filesystems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1596
diff
changeset
|
1289 | nafn = os.path.normcase(afn) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1290 | |
1607
67c7ffaed401
Fixed an issue in the debugger backends for Python and Python3 that caused files in exceptions been converted to all lowercase on case insensitive filesystems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1596
diff
changeset
|
1291 | if os.path.exists(nafn): |
1706
d0871e278075
Fixed an issue uncovered by the recent change to the DebugClientBase classes (only on Windows).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1607
diff
changeset
|
1292 | self._fncache[fn] = afn |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1293 | return afn |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1294 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1295 | # Nothing found. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1296 | return fn |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1297 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1298 | def shouldSkip(self, fn): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1299 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1300 | Public method to check if a file should be skipped. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1301 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1302 | @param fn filename to be checked |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1303 | @return non-zero if fn represents a file we are 'skipping', |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1304 | zero otherwise. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1305 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1306 | if self.mainThread.tracePython: # trace into Python library |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1307 | return False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1308 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1309 | # Eliminate anything that is part of the Python installation. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1310 | afn = self.absPath(fn) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1311 | for d in self.skipdirs: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1312 | if afn.startswith(d): |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1313 | return True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1314 | |
2761
bcc10ef7015d
Added code to the Python debugger backends to skip over 'site-packages' and 'dist-packages' if Python tracing is disabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2636
diff
changeset
|
1315 | # special treatment for paths containing site-packages or dist-packages |
bcc10ef7015d
Added code to the Python debugger backends to skip over 'site-packages' and 'dist-packages' if Python tracing is disabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2636
diff
changeset
|
1316 | for part in ["site-packages", "dist-packages"]: |
bcc10ef7015d
Added code to the Python debugger backends to skip over 'site-packages' and 'dist-packages' if Python tracing is disabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2636
diff
changeset
|
1317 | if part in afn: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1318 | return True |
2761
bcc10ef7015d
Added code to the Python debugger backends to skip over 'site-packages' and 'dist-packages' if Python tracing is disabled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2636
diff
changeset
|
1319 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1320 | return False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1321 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1322 | def getRunning(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1323 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1324 | Public method to return the main script we are currently running. |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
1325 | |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
1326 | @return flag indicating a running debug session (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1327 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1328 | return self.running |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1329 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1330 | def progTerminated(self, status, message=""): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1331 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1332 | Public method to tell the debugger that the program has terminated. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1333 | |
4366
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1334 | @param status return status |
4943
e093b4e24e97
Gracefully exit the debugger clients, without loosing last lines.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4834
diff
changeset
|
1335 | @type int |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1336 | @param message status message |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1337 | @type str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1338 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1339 | if status is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1340 | status = 0 |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1341 | elif not isinstance(status, int): |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1342 | message = str(status) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1343 | status = 1 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1344 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1345 | if self.running: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1346 | self.set_quit() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1347 | self.running = None |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1348 | self.sendJsonCommand("ResponseExit", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1349 | "status": status, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1350 | "message": message, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1351 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1352 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1353 | # reset coding |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1354 | self.__coding = self.defaultCoding |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1355 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1356 | def __dumpVariables(self, frmnr, scope, filter): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1357 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1358 | Private method to return the variables of a frame to the debug server. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1359 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1360 | @param frmnr distance of frame reported on. 0 is the current frame |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1361 | (int) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1362 | @param scope 1 to report global variables, 0 for local variables (int) |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1363 | @param filter the indices of variable types to be filtered (list of |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1364 | int) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1365 | """ |
2636
f3dd3c8d4aa4
Fixed an issue in the Python debug clients caused by the current thread being None.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2486
diff
changeset
|
1366 | if self.currentThread is None: |
f3dd3c8d4aa4
Fixed an issue in the Python debug clients caused by the current thread being None.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2486
diff
changeset
|
1367 | return |
f3dd3c8d4aa4
Fixed an issue in the Python debug clients caused by the current thread being None.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2486
diff
changeset
|
1368 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1369 | if scope == 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1370 | self.framenr = frmnr |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1371 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1372 | f = self.currentThread.getCurrentFrame() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1373 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1374 | while f is not None and frmnr > 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1375 | f = f.f_back |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1376 | frmnr -= 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1377 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1378 | if f is None: |
3729
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1379 | if scope: |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1380 | dict = self.debugMod.__dict__ |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1381 | else: |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1382 | scope = -1 |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1383 | elif scope: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1384 | dict = f.f_globals |
4642
f18d5fb9a53b
Store values entered into the shell in selected frame.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4631
diff
changeset
|
1385 | elif f.f_globals is f.f_locals: |
f18d5fb9a53b
Store values entered into the shell in selected frame.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4631
diff
changeset
|
1386 | scope = -1 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1387 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1388 | dict = f.f_locals |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1389 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1390 | varlist = [] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1391 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1392 | if scope != -1: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1393 | keylist = dict.keys() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1394 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1395 | vlist = self.__formatVariablesList(keylist, dict, scope, filter) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1396 | varlist.extend(vlist) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1397 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1398 | self.sendJsonCommand("ResponseVariables", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1399 | "scope": scope, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1400 | "variables": varlist, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1401 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1402 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1403 | def __dumpVariable(self, var, frmnr, scope, filter): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1404 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1405 | Private method to return the variables of a frame to the debug server. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1406 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1407 | @param var list encoded name of the requested variable |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1408 | (list of strings) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1409 | @param frmnr distance of frame reported on. 0 is the current frame |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1410 | (int) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1411 | @param scope 1 to report global variables, 0 for local variables (int) |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1412 | @param filter the indices of variable types to be filtered |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1413 | (list of int) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1414 | """ |
2636
f3dd3c8d4aa4
Fixed an issue in the Python debug clients caused by the current thread being None.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2486
diff
changeset
|
1415 | if self.currentThread is None: |
f3dd3c8d4aa4
Fixed an issue in the Python debug clients caused by the current thread being None.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2486
diff
changeset
|
1416 | return |
f3dd3c8d4aa4
Fixed an issue in the Python debug clients caused by the current thread being None.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2486
diff
changeset
|
1417 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1418 | f = self.currentThread.getCurrentFrame() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1419 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1420 | while f is not None and frmnr > 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1421 | f = f.f_back |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1422 | frmnr -= 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1423 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1424 | if f is None: |
3729
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1425 | if scope: |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1426 | dict = self.debugMod.__dict__ |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1427 | else: |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1428 | scope = -1 |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1429 | elif scope: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1430 | dict = f.f_globals |
4642
f18d5fb9a53b
Store values entered into the shell in selected frame.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4631
diff
changeset
|
1431 | elif f.f_globals is f.f_locals: |
f18d5fb9a53b
Store values entered into the shell in selected frame.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4631
diff
changeset
|
1432 | scope = -1 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1433 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1434 | dict = f.f_locals |
4642
f18d5fb9a53b
Store values entered into the shell in selected frame.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4631
diff
changeset
|
1435 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1436 | varlist = [] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1437 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1438 | if scope != -1: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1439 | # search the correct dictionary |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1440 | i = 0 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1441 | rvar = var[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1442 | dictkeys = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1443 | obj = None |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1444 | isDict = False |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1445 | formatSequences = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1446 | access = "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1447 | oaccess = "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1448 | odict = dict |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1449 | |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1450 | qtVariable = False |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1451 | qvar = None |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1452 | qvtype = "" |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1453 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1454 | while i < len(var): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1455 | if len(dict): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1456 | udict = dict |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1457 | ndict = {} |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1458 | # this has to be in line with VariablesViewer.indicators |
4543
2e6a880670e9
Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4489
diff
changeset
|
1459 | if var[i][-2:] in ["[]", "()", "{}"]: # __IGNORE_WARNING__ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1460 | if i + 1 == len(var): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1461 | if var[i][:-2] == '...': |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1462 | dictkeys = [var[i - 1]] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1463 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1464 | dictkeys = [var[i][:-2]] |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1465 | formatSequences = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1466 | if not access and not oaccess: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1467 | if var[i][:-2] == '...': |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1468 | access = '["%s"]' % var[i - 1] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1469 | dict = odict |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1470 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1471 | access = '["%s"]' % var[i][:-2] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1472 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1473 | if var[i][:-2] == '...': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1474 | if oaccess: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1475 | access = oaccess |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1476 | else: |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1477 | access = '%s[%s]' % (access, var[i - 1]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1478 | dict = odict |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1479 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1480 | if oaccess: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1481 | access = '%s[%s]' % (oaccess, var[i][:-2]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1482 | oaccess = '' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1483 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1484 | access = '%s[%s]' % (access, var[i][:-2]) |
4543
2e6a880670e9
Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4489
diff
changeset
|
1485 | if var[i][-2:] == "{}": # __IGNORE_WARNING__ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1486 | isDict = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1487 | break |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1488 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1489 | if not access: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1490 | if var[i][:-2] == '...': |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1491 | access = '["%s"]' % var[i - 1] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1492 | dict = odict |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1493 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1494 | access = '["%s"]' % var[i][:-2] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1495 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1496 | if var[i][:-2] == '...': |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1497 | access = '%s[%s]' % (access, var[i - 1]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1498 | dict = odict |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1499 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1500 | if oaccess: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1501 | access = '%s[%s]' % (oaccess, var[i][:-2]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1502 | oaccess = '' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1503 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1504 | access = '%s[%s]' % (access, var[i][:-2]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1505 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1506 | if access: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1507 | if oaccess: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1508 | access = '%s[%s]' % (oaccess, var[i]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1509 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1510 | access = '%s[%s]' % (access, var[i]) |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1511 | if var[i - 1][:-2] == '...': |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1512 | oaccess = access |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1513 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1514 | oaccess = '' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1515 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1516 | exec 'mdict = dict%s.__dict__' % access |
1112
8a7d1b9d18db
Improved code quality by getting rid of star imports. That way pyflakes can do its job. A few bugs fixed found by flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1029
diff
changeset
|
1517 | ndict.update(mdict) # __IGNORE_WARNING__ |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1518 | exec 'obj = dict%s' % access |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1519 | if "PyQt4." in str(type(obj)) or \ |
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1520 | "PyQt5." in str(type(obj)): |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1521 | qtVariable = True |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1522 | qvar = obj |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1523 | qvtype = ("%s" % type(qvar))[1:-1]\ |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1524 | .split()[1][1:-1] |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1525 | except Exception: |
1727
9355815a4403
Fixes for the debugger backends causing failures dumping variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1706
diff
changeset
|
1526 | pass |
9355815a4403
Fixes for the debugger backends causing failures dumping variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1706
diff
changeset
|
1527 | try: |
1305
14d63fe71d53
Fixed an issue in the debugger not showing class variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1183
diff
changeset
|
1528 | exec 'mcdict = dict%s.__class__.__dict__' % access |
14d63fe71d53
Fixed an issue in the debugger not showing class variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1183
diff
changeset
|
1529 | ndict.update(mcdict) # __IGNORE_WARNING__ |
4435
9f6555d3c3c0
Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4385
diff
changeset
|
1530 | if mdict and "sipThis" not in mdict.keys(): # __IGNORE_WARNING__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1531 | del rvar[0:2] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1532 | access = "" |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1533 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1534 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1535 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1536 | cdict = {} |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1537 | exec 'slv = dict%s.__slots__' % access |
1112
8a7d1b9d18db
Improved code quality by getting rid of star imports. That way pyflakes can do its job. A few bugs fixed found by flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1029
diff
changeset
|
1538 | for v in slv: # __IGNORE_WARNING__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1539 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1540 | exec 'cdict[v] = dict%s.%s' % (access, v) |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1541 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1542 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1543 | ndict.update(cdict) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1544 | exec 'obj = dict%s' % access |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1545 | access = "" |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1546 | if "PyQt4." in str(type(obj)) or \ |
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1547 | "PyQt5." in str(type(obj)): |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1548 | qtVariable = True |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1549 | qvar = obj |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1550 | qvtype = ("%s" % type(qvar))[1:-1]\ |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1551 | .split()[1][1:-1] |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1552 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1553 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1554 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1555 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1556 | ndict.update(dict[var[i]].__dict__) |
1305
14d63fe71d53
Fixed an issue in the debugger not showing class variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1183
diff
changeset
|
1557 | ndict.update(dict[var[i]].__class__.__dict__) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1558 | del rvar[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1559 | obj = dict[var[i]] |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1560 | if "PyQt4." in str(type(obj)) or \ |
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1561 | "PyQt5." in str(type(obj)): |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1562 | qtVariable = True |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1563 | qvar = obj |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1564 | qvtype = ("%s" % type(qvar))[1:-1]\ |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1565 | .split()[1][1:-1] |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1566 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1567 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1568 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1569 | cdict = {} |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1570 | slv = dict[var[i]].__slots__ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1571 | for v in slv: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1572 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1573 | exec 'cdict[v] = dict[var[i]].%s' % v |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1574 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1575 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1576 | ndict.update(cdict) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1577 | obj = dict[var[i]] |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1578 | if "PyQt4." in str(type(obj)) or \ |
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1579 | "PyQt5." in str(type(obj)): |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1580 | qtVariable = True |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1581 | qvar = obj |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1582 | qvtype = ("%s" % type(qvar))[1:-1]\ |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1583 | .split()[1][1:-1] |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1584 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1585 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1586 | odict = dict |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1587 | dict = ndict |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1588 | i += 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1589 | |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1590 | if qtVariable: |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1591 | vlist = self.__formatQtVariable(qvar, qvtype) |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1592 | elif ("sipThis" in dict.keys() and len(dict) == 1) or \ |
3032
927a2f8b3669
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3021
diff
changeset
|
1593 | (len(dict) == 0 and len(udict) > 0): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1594 | if access: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1595 | exec 'qvar = udict%s' % access |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1596 | # this has to be in line with VariablesViewer.indicators |
4543
2e6a880670e9
Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4489
diff
changeset
|
1597 | elif rvar and rvar[0][-2:] in ["[]", "()", "{}"]: # __IGNORE_WARNING__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1598 | exec 'qvar = udict["%s"][%s]' % (rvar[0][:-2], rvar[1]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1599 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1600 | qvar = udict[var[-1]] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1601 | qvtype = ("%s" % type(qvar))[1:-1].split()[1][1:-1] |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1602 | if qvtype.startswith(("PyQt4", "PyQt5")): |
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1603 | vlist = self.__formatQtVariable(qvar, qvtype) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1604 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1605 | vlist = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1606 | else: |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1607 | qtVariable = False |
1727
9355815a4403
Fixes for the debugger backends causing failures dumping variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1706
diff
changeset
|
1608 | if len(dict) == 0 and len(udict) > 0: |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1609 | if access: |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1610 | exec 'qvar = udict%s' % access |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1611 | # this has to be in line with VariablesViewer.indicators |
4543
2e6a880670e9
Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4489
diff
changeset
|
1612 | elif rvar and rvar[0][-2:] in ["[]", "()", "{}"]: # __IGNORE_WARNING__ |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1613 | exec 'qvar = udict["%s"][%s]' % (rvar[0][:-2], rvar[1]) |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1614 | else: |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1615 | qvar = udict[var[-1]] |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1616 | qvtype = ("%s" % type(qvar))[1:-1].split()[1][1:-1] |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1617 | if qvtype.startswith(("PyQt4", "PyQt5")): |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1618 | qtVariable = True |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1619 | |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1620 | if qtVariable: |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1621 | vlist = self.__formatQtVariable(qvar, qvtype) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1622 | else: |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1623 | # format the dictionary found |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1624 | if dictkeys is None: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1625 | dictkeys = dict.keys() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1626 | else: |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1627 | # treatment for sequences and dictionaries |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1628 | if access: |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1629 | exec "dict = dict%s" % access |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1630 | else: |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1631 | dict = dict[dictkeys[0]] |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1632 | if isDict: |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1633 | dictkeys = dict.keys() |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1634 | else: |
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1635 | dictkeys = range(len(dict)) |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1636 | vlist = self.__formatVariablesList( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1637 | dictkeys, dict, scope, filter, formatSequences) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1638 | varlist.extend(vlist) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1639 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1640 | if obj is not None and not formatSequences: |
2486
e16c9ced6ae5
Fixed an issue that could cause the debugger backends to crash, if a class redefined __repr__.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2376
diff
changeset
|
1641 | try: |
e16c9ced6ae5
Fixed an issue that could cause the debugger backends to crash, if a class redefined __repr__.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2376
diff
changeset
|
1642 | if unicode(repr(obj)).startswith('{'): |
e16c9ced6ae5
Fixed an issue that could cause the debugger backends to crash, if a class redefined __repr__.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2376
diff
changeset
|
1643 | varlist.append(('...', 'dict', "%d" % len(obj.keys()))) |
e16c9ced6ae5
Fixed an issue that could cause the debugger backends to crash, if a class redefined __repr__.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2376
diff
changeset
|
1644 | elif unicode(repr(obj)).startswith('['): |
e16c9ced6ae5
Fixed an issue that could cause the debugger backends to crash, if a class redefined __repr__.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2376
diff
changeset
|
1645 | varlist.append(('...', 'list', "%d" % len(obj))) |
e16c9ced6ae5
Fixed an issue that could cause the debugger backends to crash, if a class redefined __repr__.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2376
diff
changeset
|
1646 | elif unicode(repr(obj)).startswith('('): |
e16c9ced6ae5
Fixed an issue that could cause the debugger backends to crash, if a class redefined __repr__.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2376
diff
changeset
|
1647 | varlist.append(('...', 'tuple', "%d" % len(obj))) |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1648 | except Exception: |
2486
e16c9ced6ae5
Fixed an issue that could cause the debugger backends to crash, if a class redefined __repr__.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2376
diff
changeset
|
1649 | pass |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1650 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1651 | self.sendJsonCommand("ResponseVariable", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1652 | "scope": scope, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1653 | "variable": var, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1654 | "variables": varlist, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1655 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1656 | |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1657 | def __formatQtVariable(self, value, vtype): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1658 | """ |
2297
e8a46f81517c
Adjusted some display strings to be independant of the Qt version (Qt4/Qt5).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2276
diff
changeset
|
1659 | Private method to produce a formated output of a simple Qt4/Qt5 type. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1660 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1661 | @param value variable to be formated |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1662 | @param vtype type of the variable to be formatted (string) |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1663 | @return A tuple consisting of a list of formatted variables. Each |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1664 | variable entry is a tuple of three elements, the variable name, |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1665 | its type and value. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1666 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1667 | qttype = vtype.split('.')[-1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1668 | varlist = [] |
5
fa319c01b604
Corrected some omissions for the QString v2 API conversion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
0
diff
changeset
|
1669 | if qttype == 'QChar': |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1670 | varlist.append(("", "QChar", "%s" % unichr(value.unicode()))) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1671 | varlist.append(("", "int", "%d" % value.unicode())) |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1672 | elif qttype == 'QByteArray': |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1673 | varlist.append(("hex", "QByteArray", "%s" % value.toHex())) |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1674 | varlist.append(("base64", "QByteArray", "%s" % value.toBase64())) |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1675 | varlist.append(("percent encoding", "QByteArray", |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1676 | "%s" % value.toPercentEncoding())) |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1677 | elif qttype == 'QString': |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1678 | varlist.append(("", "QString", "%s" % value)) |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1679 | elif qttype == 'QStringList': |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1680 | for i in range(value.count()): |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1681 | varlist.append(("%d" % i, "QString", "%s" % value[i])) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1682 | elif qttype == 'QPoint': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1683 | varlist.append(("x", "int", "%d" % value.x())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1684 | varlist.append(("y", "int", "%d" % value.y())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1685 | elif qttype == 'QPointF': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1686 | varlist.append(("x", "float", "%g" % value.x())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1687 | varlist.append(("y", "float", "%g" % value.y())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1688 | elif qttype == 'QRect': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1689 | varlist.append(("x", "int", "%d" % value.x())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1690 | varlist.append(("y", "int", "%d" % value.y())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1691 | varlist.append(("width", "int", "%d" % value.width())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1692 | varlist.append(("height", "int", "%d" % value.height())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1693 | elif qttype == 'QRectF': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1694 | varlist.append(("x", "float", "%g" % value.x())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1695 | varlist.append(("y", "float", "%g" % value.y())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1696 | varlist.append(("width", "float", "%g" % value.width())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1697 | varlist.append(("height", "float", "%g" % value.height())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1698 | elif qttype == 'QSize': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1699 | varlist.append(("width", "int", "%d" % value.width())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1700 | varlist.append(("height", "int", "%d" % value.height())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1701 | elif qttype == 'QSizeF': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1702 | varlist.append(("width", "float", "%g" % value.width())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1703 | varlist.append(("height", "float", "%g" % value.height())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1704 | elif qttype == 'QColor': |
5
fa319c01b604
Corrected some omissions for the QString v2 API conversion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
0
diff
changeset
|
1705 | varlist.append(("name", "str", "%s" % value.name())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1706 | r, g, b, a = value.getRgb() |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1707 | varlist.append(("rgba", "int", "%d, %d, %d, %d" % (r, g, b, a))) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1708 | h, s, v, a = value.getHsv() |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1709 | varlist.append(("hsva", "int", "%d, %d, %d, %d" % (h, s, v, a))) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1710 | c, m, y, k, a = value.getCmyk() |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1711 | varlist.append( |
4118
3c9fa4b8869d
Fixed an issue in the Python debugger backends caused by forgotten check for PyQt5 type variables.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4063
diff
changeset
|
1712 | ("cmyka", "int", "%d, %d, %d, %d, %d" % (c, m, y, k, a))) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1713 | elif qttype == 'QDate': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1714 | varlist.append(("", "QDate", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1715 | elif qttype == 'QTime': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1716 | varlist.append(("", "QTime", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1717 | elif qttype == 'QDateTime': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1718 | varlist.append(("", "QDateTime", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1719 | elif qttype == 'QDir': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1720 | varlist.append(("path", "str", "%s" % value.path())) |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1721 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1722 | ("absolutePath", "str", "%s" % value.absolutePath())) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1723 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1724 | ("canonicalPath", "str", "%s" % value.canonicalPath())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1725 | elif qttype == 'QFile': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1726 | varlist.append(("fileName", "str", "%s" % value.fileName())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1727 | elif qttype == 'QFont': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1728 | varlist.append(("family", "str", "%s" % value.family())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1729 | varlist.append(("pointSize", "int", "%d" % value.pointSize())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1730 | varlist.append(("weight", "int", "%d" % value.weight())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1731 | varlist.append(("bold", "bool", "%s" % value.bold())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1732 | varlist.append(("italic", "bool", "%s" % value.italic())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1733 | elif qttype == 'QUrl': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1734 | varlist.append(("url", "str", "%s" % value.toString())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1735 | varlist.append(("scheme", "str", "%s" % value.scheme())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1736 | varlist.append(("user", "str", "%s" % value.userName())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1737 | varlist.append(("password", "str", "%s" % value.password())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1738 | varlist.append(("host", "str", "%s" % value.host())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1739 | varlist.append(("port", "int", "%d" % value.port())) |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1740 | varlist.append(("path", "str", "%s" % value.path())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1741 | elif qttype == 'QModelIndex': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1742 | varlist.append(("valid", "bool", "%s" % value.isValid())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1743 | if value.isValid(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1744 | varlist.append(("row", "int", "%s" % value.row())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1745 | varlist.append(("column", "int", "%s" % value.column())) |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1746 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1747 | ("internalId", "int", "%s" % value.internalId())) |
3021
801289962f4e
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2987
diff
changeset
|
1748 | varlist.append( |
3032
927a2f8b3669
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3021
diff
changeset
|
1749 | ("internalPointer", "void *", "%s" % |
3021
801289962f4e
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2987
diff
changeset
|
1750 | value.internalPointer())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1751 | elif qttype == 'QRegExp': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1752 | varlist.append(("pattern", "str", "%s" % value.pattern())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1753 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1754 | # GUI stuff |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1755 | elif qttype == 'QAction': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1756 | varlist.append(("name", "str", "%s" % value.objectName())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1757 | varlist.append(("text", "str", "%s" % value.text())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1758 | varlist.append(("icon text", "str", "%s" % value.iconText())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1759 | varlist.append(("tooltip", "str", "%s" % value.toolTip())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1760 | varlist.append(("whatsthis", "str", "%s" % value.whatsThis())) |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1761 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1762 | ("shortcut", "str", "%s" % value.shortcut().toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1763 | elif qttype == 'QKeySequence': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1764 | varlist.append(("value", "", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1765 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1766 | # XML stuff |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1767 | elif qttype == 'QDomAttr': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1768 | varlist.append(("name", "str", "%s" % value.name())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1769 | varlist.append(("value", "str", "%s" % value.value())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1770 | elif qttype == 'QDomCharacterData': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1771 | varlist.append(("data", "str", "%s" % value.data())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1772 | elif qttype == 'QDomComment': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1773 | varlist.append(("data", "str", "%s" % value.data())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1774 | elif qttype == "QDomDocument": |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1775 | varlist.append(("text", "str", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1776 | elif qttype == 'QDomElement': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1777 | varlist.append(("tagName", "str", "%s" % value.tagName())) |
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1778 | varlist.append(("text", "str", "%s" % value.text())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1779 | elif qttype == 'QDomText': |
7
c679fb30c8f3
Change code dealing with QVariant (and QSettings) to use the PyQt4 QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
1780 | varlist.append(("data", "str", "%s" % value.data())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1781 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1782 | # Networking stuff |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1783 | elif qttype == 'QHostAddress': |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1784 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1785 | ("address", "QHostAddress", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1786 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1787 | return varlist |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1788 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1789 | def __formatVariablesList(self, keylist, dict, scope, filter=[], |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1790 | formatSequences=0): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1791 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1792 | Private method to produce a formated variables list. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1793 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1794 | The dictionary passed in to it is scanned. Variables are |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1795 | only added to the list, if their type is not contained |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1796 | in the filter list and their name doesn't match any of |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1797 | the filter expressions. The formated variables list (a list of tuples |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1798 | of 3 values) is returned. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1799 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1800 | @param keylist keys of the dictionary |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1801 | @param dict the dictionary to be scanned |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1802 | @param scope 1 to filter using the globals filter, 0 using the locals |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1803 | filter (int). |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1804 | Variables are only added to the list, if their name do not match |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1805 | any of the filter expressions. |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1806 | @param filter the indices of variable types to be filtered. Variables |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1807 | are only added to the list, if their type is not contained in the |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1808 | filter list. |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1809 | @param formatSequences flag indicating, that sequence or dictionary |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1810 | variables should be formatted. If it is 0 (or false), just the |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1811 | number of items contained in these variables is returned. (boolean) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1812 | @return A tuple consisting of a list of formatted variables. Each |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1813 | variable entry is a tuple of three elements, the variable name, |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1814 | its type and value. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1815 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1816 | varlist = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1817 | if scope: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1818 | patternFilterObjects = self.globalsFilterObjects |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1819 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1820 | patternFilterObjects = self.localsFilterObjects |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1821 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1822 | for key in keylist: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1823 | # filter based on the filter pattern |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1824 | matched = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1825 | for pat in patternFilterObjects: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1826 | if pat.match(unicode(key)): |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1827 | matched = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1828 | break |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1829 | if matched: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1830 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1831 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1832 | # filter hidden attributes (filter #0) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1833 | if 0 in filter and unicode(key)[:2] == '__': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1834 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1835 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1836 | # special handling for '__builtins__' (it's way too big) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1837 | if key == '__builtins__': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1838 | rvalue = '<module __builtin__ (built-in)>' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1839 | valtype = 'module' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1840 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1841 | value = dict[key] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1842 | valtypestr = ("%s" % type(value))[1:-1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1843 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1844 | if valtypestr.split(' ', 1)[0] == 'class': |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1845 | # handle new class type of python 2.2+ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1846 | if ConfigVarTypeStrings.index('instance') in filter: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1847 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1848 | valtype = valtypestr |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1849 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1850 | valtype = valtypestr[6:-1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1851 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1852 | if ConfigVarTypeStrings.index(valtype) in filter: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1853 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1854 | except ValueError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1855 | if valtype == "classobj": |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1856 | if ConfigVarTypeStrings.index( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1857 | 'instance') in filter: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1858 | continue |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1859 | elif valtype == "sip.methoddescriptor": |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1860 | if ConfigVarTypeStrings.index( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1861 | 'instance method') in filter: |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1862 | continue |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1863 | elif valtype == "sip.enumtype": |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1864 | if ConfigVarTypeStrings.index('class') in filter: |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1865 | continue |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1866 | elif not valtype.startswith("PySide") and \ |
3032
927a2f8b3669
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3021
diff
changeset
|
1867 | ConfigVarTypeStrings.index('other') in filter: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1868 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1869 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1870 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1871 | if valtype not in ['list', 'tuple', 'dict']: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1872 | rvalue = repr(value) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1873 | if valtype.startswith('class') and \ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1874 | rvalue[0] in ['{', '(', '[']: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1875 | rvalue = "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1876 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1877 | if valtype == 'dict': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1878 | rvalue = "%d" % len(value.keys()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1879 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1880 | rvalue = "%d" % len(value) |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1881 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1882 | rvalue = '' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1883 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1884 | if formatSequences: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1885 | if unicode(key) == key: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1886 | key = "'%s'" % key |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1887 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1888 | key = unicode(key) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1889 | varlist.append((key, valtype, rvalue)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1890 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1891 | return varlist |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1892 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1893 | def __generateFilterObjects(self, scope, filterString): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1894 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1895 | Private slot to convert a filter string to a list of filter objects. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1896 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1897 | @param scope 1 to generate filter for global variables, 0 for local |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1898 | variables (int) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1899 | @param filterString string of filter patterns separated by ';' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1900 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1901 | patternFilterObjects = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1902 | for pattern in filterString.split(';'): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1903 | patternFilterObjects.append(re.compile('^%s$' % pattern)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1904 | if scope: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1905 | self.globalsFilterObjects = patternFilterObjects[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1906 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1907 | self.localsFilterObjects = patternFilterObjects[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1908 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1909 | def __completionList(self, text): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1910 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1911 | Private slot to handle the request for a commandline completion list. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1912 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1913 | @param text the text to be completed (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1914 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1915 | completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1916 | |
4833
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1917 | completions = set() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1918 | # find position of last delim character |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1919 | pos = -1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1920 | while pos >= -len(text): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1921 | if text[pos] in completerDelims: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1922 | if pos == -1: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1923 | text = '' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1924 | else: |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1925 | text = text[pos + 1:] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1926 | break |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1927 | pos -= 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1928 | |
4833
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1929 | # Get local and global completions |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1930 | try: |
4833
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1931 | localdict = self.currentThread.getFrameLocals(self.framenr) |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1932 | localCompleter = Completer(localdict).complete |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1933 | self.__getCompletionList(text, localCompleter, completions) |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1934 | except AttributeError: |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1935 | pass |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1936 | self.__getCompletionList(text, self.complete, completions) |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1937 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1938 | self.sendJsonCommand("ResponseCompletion", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1939 | "completions": list(completions), |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1940 | "text": text, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1941 | }) |
4833
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1942 | |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1943 | def __getCompletionList(self, text, completer, completions): |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1944 | """ |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1945 | Private method to create a completions list. |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1946 | |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1947 | @param text text to complete (string) |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1948 | @param completer completer methode |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1949 | @param completions set where to add new completions strings (set) |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1950 | """ |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1951 | state = 0 |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1952 | try: |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1953 | comp = completer(text, state) |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1954 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1955 | comp = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1956 | while comp is not None: |
4833
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1957 | completions.add(comp) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1958 | state += 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1959 | try: |
4833
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1960 | comp = completer(text, state) |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
1961 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1962 | comp = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1963 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1964 | def startDebugger(self, filename=None, host=None, port=None, |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1965 | enableTrace=True, exceptions=True, tracePython=False, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1966 | redirect=True): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1967 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1968 | Public method used to start the remote debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1969 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1970 | @param filename the program to be debugged (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1971 | @param host hostname of the debug server (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1972 | @param port portnumber of the debug server (int) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1973 | @param enableTrace flag to enable the tracing function (boolean) |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1974 | @param exceptions flag to enable exception reporting of the IDE |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1975 | (boolean) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1976 | @param tracePython flag to enable tracing into the Python library |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1977 | (boolean) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1978 | @param redirect flag indicating redirection of stdin, stdout and |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1979 | stderr (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1980 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1981 | global debugClient |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1982 | if host is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1983 | host = os.getenv('ERICHOST', 'localhost') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1984 | if port is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1985 | port = os.getenv('ERICPORT', 42424) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1986 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1987 | remoteAddress = self.__resolveHost(host) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1988 | self.connectDebugger(port, remoteAddress, redirect) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1989 | if filename is not None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1990 | self.running = os.path.abspath(filename) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1991 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1992 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1993 | self.running = os.path.abspath(sys.argv[0]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1994 | except IndexError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1995 | self.running = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1996 | if self.running: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1997 | self.__setCoding(self.running) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1998 | self.passive = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1999 | self.sendPassiveStartup(self.running, exceptions) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2000 | self.__interact() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2001 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2002 | # setup the debugger variables |
1706
d0871e278075
Fixed an issue uncovered by the recent change to the DebugClientBase classes (only on Windows).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1607
diff
changeset
|
2003 | self._fncache = {} |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2004 | self.dircache = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2005 | self.mainFrame = None |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2006 | self.debugging = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2007 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2008 | self.attachThread(mainThread=True) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2009 | self.mainThread.tracePython = tracePython |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2010 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2011 | # set the system exception handling function to ensure, that |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2012 | # we report on all unhandled exceptions |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2013 | sys.excepthook = self.__unhandled_exception |
4366
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
2014 | self.__interceptSignals() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2015 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2016 | # now start debugging |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2017 | if enableTrace: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2018 | self.mainThread.set_trace() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2019 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2020 | def startProgInDebugger(self, progargs, wd='', host=None, |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2021 | port=None, exceptions=True, tracePython=False, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2022 | redirect=True): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2023 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2024 | Public method used to start the remote debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2025 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2026 | @param progargs commandline for the program to be debugged |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2027 | (list of strings) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2028 | @param wd working directory for the program execution (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2029 | @param host hostname of the debug server (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2030 | @param port portnumber of the debug server (int) |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2031 | @param exceptions flag to enable exception reporting of the IDE |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2032 | (boolean) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2033 | @param tracePython flag to enable tracing into the Python library |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2034 | (boolean) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2035 | @param redirect flag indicating redirection of stdin, stdout and |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2036 | stderr (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2037 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2038 | if host is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2039 | host = os.getenv('ERICHOST', 'localhost') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2040 | if port is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2041 | port = os.getenv('ERICPORT', 42424) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2042 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2043 | remoteAddress = self.__resolveHost(host) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2044 | self.connectDebugger(port, remoteAddress, redirect) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2045 | |
1706
d0871e278075
Fixed an issue uncovered by the recent change to the DebugClientBase classes (only on Windows).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1607
diff
changeset
|
2046 | self._fncache = {} |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2047 | self.dircache = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2048 | sys.argv = progargs[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2049 | sys.argv[0] = os.path.abspath(sys.argv[0]) |
72
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2050 | sys.path = self.__getSysPath(os.path.dirname(sys.argv[0])) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2051 | if wd == '': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2052 | os.chdir(sys.path[1]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2053 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2054 | os.chdir(wd) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2055 | self.running = sys.argv[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2056 | self.__setCoding(self.running) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2057 | self.mainFrame = None |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2058 | self.debugging = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2059 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2060 | self.passive = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2061 | self.sendPassiveStartup(self.running, exceptions) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2062 | self.__interact() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2063 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2064 | self.attachThread(mainThread=1) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2065 | self.mainThread.tracePython = tracePython |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2066 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2067 | # set the system exception handling function to ensure, that |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2068 | # we report on all unhandled exceptions |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2069 | sys.excepthook = self.__unhandled_exception |
4366
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
2070 | self.__interceptSignals() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2071 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2072 | # This will eventually enter a local event loop. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2073 | # Note the use of backquotes to cause a repr of self.running. The |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2074 | # need for this is on Windows os where backslash is the path separator. |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2075 | # They will get inadvertantly stripped away during the eval causing |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2076 | # IOErrors if self.running is passed as a normal str. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2077 | self.debugMod.__dict__['__file__'] = self.running |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2078 | sys.modules['__main__'] = self.debugMod |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2079 | res = self.mainThread.run('execfile(' + repr(self.running) + ')', |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2080 | self.debugMod.__dict__) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2081 | self.progTerminated(res) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2082 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2083 | def run_call(self, scriptname, func, *args): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2084 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2085 | Public method used to start the remote debugger and call a function. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2086 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2087 | @param scriptname name of the script to be debugged (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2088 | @param func function to be called |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2089 | @param *args arguments being passed to func |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2090 | @return result of the function call |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2091 | """ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2092 | self.startDebugger(scriptname, enableTrace=0) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2093 | res = self.mainThread.runcall(func, *args) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2094 | self.progTerminated(res) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2095 | return res |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2096 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2097 | def __resolveHost(self, host): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2098 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2099 | Private method to resolve a hostname to an IP address. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2100 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2101 | @param host hostname of the debug server (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2102 | @return IP address (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2103 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2104 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2105 | host, version = host.split("@@") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2106 | except ValueError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2107 | version = 'v4' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2108 | if version == 'v4': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2109 | family = socket.AF_INET |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2110 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2111 | family = socket.AF_INET6 |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2112 | return socket.getaddrinfo(host, None, family, |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2113 | socket.SOCK_STREAM)[0][4][0] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2114 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2115 | def main(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2116 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2117 | Public method implementing the main method. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2118 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2119 | if '--' in sys.argv: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2120 | args = sys.argv[1:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2121 | host = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2122 | port = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2123 | wd = '' |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2124 | tracePython = False |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2125 | exceptions = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2126 | redirect = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2127 | while args[0]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2128 | if args[0] == '-h': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2129 | host = args[1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2130 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2131 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2132 | elif args[0] == '-p': |
1179
7661ab683f7b
Improved IPv6 support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1112
diff
changeset
|
2133 | port = int(args[1]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2134 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2135 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2136 | elif args[0] == '-w': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2137 | wd = args[1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2138 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2139 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2140 | elif args[0] == '-t': |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2141 | tracePython = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2142 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2143 | elif args[0] == '-e': |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2144 | exceptions = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2145 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2146 | elif args[0] == '-n': |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2147 | redirect = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2148 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2149 | elif args[0] == '--no-encoding': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2150 | self.noencoding = True |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2151 | del args[0] |
1029
0fb3d1d26eab
Added the autofork capability to the debug client commandline interface used for passive debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
2152 | elif args[0] == '--fork-child': |
0fb3d1d26eab
Added the autofork capability to the debug client commandline interface used for passive debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
2153 | self.fork_auto = True |
0fb3d1d26eab
Added the autofork capability to the debug client commandline interface used for passive debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
2154 | self.fork_child = True |
0fb3d1d26eab
Added the autofork capability to the debug client commandline interface used for passive debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
2155 | del args[0] |
0fb3d1d26eab
Added the autofork capability to the debug client commandline interface used for passive debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
2156 | elif args[0] == '--fork-parent': |
0fb3d1d26eab
Added the autofork capability to the debug client commandline interface used for passive debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
2157 | self.fork_auto = True |
0fb3d1d26eab
Added the autofork capability to the debug client commandline interface used for passive debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
2158 | self.fork_child = False |
0fb3d1d26eab
Added the autofork capability to the debug client commandline interface used for passive debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
2159 | del args[0] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2160 | elif args[0] == '--': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2161 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2162 | break |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2163 | else: # unknown option |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2164 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2165 | if not args: |
4566
a2e8f3c420ec
Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4563
diff
changeset
|
2166 | print "No program given. Aborting!" # __IGNORE_WARNING__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2167 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2168 | if not self.noencoding: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2169 | self.__coding = self.defaultCoding |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2170 | self.startProgInDebugger(args, wd, host, port, |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2171 | exceptions=exceptions, |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2172 | tracePython=tracePython, |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2173 | redirect=redirect) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2174 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2175 | if sys.argv[1] == '--no-encoding': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2176 | self.noencoding = True |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2177 | del sys.argv[1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2178 | if sys.argv[1] == '': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2179 | del sys.argv[1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2180 | try: |
1179
7661ab683f7b
Improved IPv6 support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1112
diff
changeset
|
2181 | port = int(sys.argv[1]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2182 | except (ValueError, IndexError): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2183 | port = -1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2184 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2185 | redirect = int(sys.argv[2]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2186 | except (ValueError, IndexError): |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2187 | redirect = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2188 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2189 | ipOrHost = sys.argv[3] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2190 | if ':' in ipOrHost: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2191 | remoteAddress = ipOrHost |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2192 | elif ipOrHost[0] in '0123456789': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2193 | remoteAddress = ipOrHost |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2194 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2195 | remoteAddress = self.__resolveHost(ipOrHost) |
4563
881340f4bd0c
Fixed a few coding style issue related to 'blind except:' statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4543
diff
changeset
|
2196 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2197 | remoteAddress = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2198 | sys.argv = [''] |
3621
15f23ed3f216
Fixed a few source code style issues found by the updated pe8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3591
diff
changeset
|
2199 | if '' not in sys.path: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2200 | sys.path.insert(0, '') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2201 | if port >= 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2202 | if not self.noencoding: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2203 | self.__coding = self.defaultCoding |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2204 | self.connectDebugger(port, remoteAddress, redirect) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2205 | self.__interact() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2206 | else: |
4566
a2e8f3c420ec
Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4563
diff
changeset
|
2207 | print "No network port given. Aborting..." # __IGNORE_WARNING__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2208 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2209 | def fork(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2210 | """ |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
2211 | Public method implementing a fork routine deciding which branch to |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
2212 | follow. |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
2213 | |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
2214 | @return process ID (integer) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2215 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2216 | if not self.fork_auto: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
2217 | self.sendJsonCommand("RequestForkTo", {}) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2218 | self.eventLoop(True) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2219 | pid = DebugClientOrigFork() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2220 | if pid == 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2221 | # child |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2222 | if not self.fork_child: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2223 | sys.settrace(None) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2224 | sys.setprofile(None) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2225 | self.sessionClose(0) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2226 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2227 | # parent |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2228 | if self.fork_child: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2229 | sys.settrace(None) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2230 | sys.setprofile(None) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2231 | self.sessionClose(0) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2232 | return pid |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2233 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2234 | def close(self, fd): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2235 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
2236 | Public method implementing a close method as a replacement for |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2237 | os.close(). |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2238 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2239 | It prevents the debugger connections from being closed. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2240 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2241 | @param fd file descriptor to be closed (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2242 | """ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2243 | if fd in [self.readstream.fileno(), self.writestream.fileno(), |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2244 | self.errorstream.fileno()]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2245 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2246 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2247 | DebugClientOrigClose(fd) |
72
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2248 | |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2249 | def __getSysPath(self, firstEntry): |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2250 | """ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2251 | Private slot to calculate a path list including the PYTHONPATH |
72
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2252 | environment variable. |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2253 | |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2254 | @param firstEntry entry to be put first in sys.path (string) |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2255 | @return path list for use as sys.path (list of strings) |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2256 | """ |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2257 | sysPath = [path for path in os.environ.get("PYTHONPATH", "") |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2258 | .split(os.pathsep) |
72
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2259 | if path not in sys.path] + sys.path[:] |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2260 | if "" in sysPath: |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2261 | sysPath.remove("") |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2262 | sysPath.insert(0, firstEntry) |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2263 | sysPath.insert(0, '') |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2264 | return sysPath |
790
2c0ea0163ef4
Marked the Python2 debugger client files with the new eflag: marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
126
diff
changeset
|
2265 | |
2c0ea0163ef4
Marked the Python2 debugger client files with the new eflag: marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
126
diff
changeset
|
2266 | # |
2c0ea0163ef4
Marked the Python2 debugger client files with the new eflag: marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
126
diff
changeset
|
2267 | # eflag: FileType = Python2 |
4543
2e6a880670e9
Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4489
diff
changeset
|
2268 | # eflag: noqa = M601, M702 |