Sun, 18 Sep 2016 21:35:53 +0200
Get changes from current branch.
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 |
5174 | 16 | import json |
0
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 |
5174 | 25 | import DebugVariables |
803
86f10944dc83
Removed some pyflakes warnings in the Python2 debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
26 | 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
|
27 | from AsyncFile import AsyncFile, AsyncPendingWrite |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | from DebugConfig import ConfigVarTypeStrings |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | 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
|
30 | from DebugUtilities import prepareJsonCommand |
5041
f00a4c8bcbbd
Breakpoint and Watch and thier basic methods in new classes extracted.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
5005
diff
changeset
|
31 | from BreakpointWatch import Breakpoint, Watch |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | DebugClientInstance = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
36 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
38 | |
5174 | 39 | def DebugClientRawInput(prompt="", echo=True): |
0
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 | Replacement for the standard raw_input builtin. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | This function works with the split debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
45 | @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
|
46 | @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
|
47 | @return result of the raw_input() call |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
49 | if DebugClientInstance is None or not DebugClientInstance.redirect: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | return DebugClientOrigRawInput(prompt) |
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 | return DebugClientInstance.raw_input(prompt, echo) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | # Use our own raw_input(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | DebugClientOrigRawInput = __builtins__.__dict__['raw_input'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | __builtins__.__dict__['raw_input'] = DebugClientRawInput |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | except (AttributeError, KeyError): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | import __main__ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | DebugClientOrigRawInput = __main__.__builtins__.__dict__['raw_input'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | __main__.__builtins__.__dict__['raw_input'] = DebugClientRawInput |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
63 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
65 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | def DebugClientInput(prompt=""): |
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 | Replacement for the standard input builtin. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | This function works with the split debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
72 | @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
|
73 | @return result of the input() call |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | """ |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
75 | if DebugClientInstance is None or not DebugClientInstance.redirect: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | return DebugClientOrigInput(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 | return DebugClientInstance.input(prompt) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | # Use our own input(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | DebugClientOrigInput = __builtins__.__dict__['input'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | __builtins__.__dict__['input'] = DebugClientInput |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | except (AttributeError, KeyError): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | import __main__ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | DebugClientOrigInput = __main__.__builtins__.__dict__['input'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | __main__.__builtins__.__dict__['input'] = DebugClientInput |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
89 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
91 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | def DebugClientFork(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | 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
|
95 | |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
96 | @return result of the fork() call |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | if DebugClientInstance is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | return DebugClientOrigFork() |
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 | return DebugClientInstance.fork() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | # use our own fork(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | if 'fork' in dir(os): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | DebugClientOrigFork = os.fork |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | os.fork = DebugClientFork |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
108 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
110 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | def DebugClientClose(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 | Replacement for the standard os.close(fd). |
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 | @param fd open file descriptor to be closed (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | if DebugClientInstance is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | DebugClientOrigClose(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 | DebugClientInstance.close(fd) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | # use our own close(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | if 'close' in dir(os): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | DebugClientOrigClose = os.close |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | os.close = DebugClientClose |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
127 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
129 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | def DebugClientSetRecursionLimit(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 | Replacement for the standard sys.setrecursionlimit(limit). |
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 | @param limit recursion limit (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | rl = max(limit, 64) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | setRecursionLimit(rl) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | DebugClientOrigSetRecursionLimit(rl + 64) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | # use our own setrecursionlimit(). |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | if 'setrecursionlimit' in dir(sys): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | DebugClientOrigSetRecursionLimit = sys.setrecursionlimit |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | sys.setrecursionlimit = DebugClientSetRecursionLimit |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | DebugClientSetRecursionLimit(sys.getrecursionlimit()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
146 | ############################################################################### |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
148 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | class DebugClientBase(object): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | Class implementing the client side of the debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
153 | 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
|
154 | another process. |
04905a8681dc
Did some cleanup in the modernized debugger code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5134
diff
changeset
|
155 | |
04905a8681dc
Did some cleanup in the modernized debugger code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5134
diff
changeset
|
156 | 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
|
157 | 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
|
158 | separated by a linefeed character. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | 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
|
161 | 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
|
162 | being debugged closing or crashing. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
164 | <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
|
165 | DebugClient classes. Do not instantiate it directly. |
0
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 | clientCapabilities = DebugClientCapabilities.HasAll |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
169 | # keep these in sync with VariablesViewer.VariableItem.Indicators |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
170 | Indicators = ("()", "[]", "{:}", "{}") # __IGNORE_WARNING__ |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
171 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | def __init__(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | self.breakpoints = {} |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
177 | self.redirect = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
178 | self.__receiveBuffer = "" |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | # 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
|
181 | # 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
|
182 | # debugger |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | # dictionary of all threads running |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | self.threads = {} |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
187 | # the "current" thread, basically the thread we are at a breakpoint |
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
188 | # for. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | self.currentThread = self |
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 | # special objects representing the main scripts thread and frame |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | self.mainThread = self |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | self.mainFrame = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | self.framenr = 0 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | # The context to run the debugged program in. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | self.debugMod = imp.new_module('__main__') |
3729
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
198 | self.debugMod.__dict__['__builtins__'] = __builtins__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | # The list of complete lines to execute. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | self.buffer = '' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | # The list of regexp objects to filter variables against |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | self.globalsFilterObjects = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | self.localsFilterObjects = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | |
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
|
207 | self._fncache = {} |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | self.dircache = [] |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
209 | 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
|
210 | self.running = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | 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
|
212 | self.debugging = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | self.fork_auto = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | self.fork_child = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | self.readstream = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | self.writestream = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | self.errorstream = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | self.pollingDisabled = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | |
5046
d57f18f15f1a
Don't track the recursion limit by hand.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
5044
diff
changeset
|
222 | self.callTraceEnabled = None |
2171
c7dd548d67d8
Finished the coding part of the call trace functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2157
diff
changeset
|
223 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | self.skipdirs = sys.path[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | self.variant = 'You should not see this' |
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 | # commandline completion stuff |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | self.complete = Completer(self.debugMod.__dict__).complete |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
231 | self.compile_command = codeop.CommandCompiler() |
0
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 | |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
273 | def attachThread(self, target=None, args=None, kwargs=None, |
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
274 | mainThread=False): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | 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
|
277 | |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
278 | If mainThread is True, then we are attaching to the already |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | 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
|
280 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
281 | @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
|
282 | code) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | @param args arguments to pass to target |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | @param kwargs keyword arguments to pass to target |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
285 | @param mainThread True, if we are attaching to the already |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | started mainthread of the app |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | """ |
5046
d57f18f15f1a
Don't track the recursion limit by hand.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
5044
diff
changeset
|
288 | pass |
0
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 | def __dumpThreadList(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
292 | Private method to send the list of threads. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | threadList = [] |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
295 | 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
|
296 | # indication for the threaded debugger |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | currentId = self.currentThread.get_ident() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | for t in self.threads.values(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | d = {} |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | d["id"] = t.get_ident() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | d["name"] = t.get_name() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | d["broken"] = t.isBroken() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | threadList.append(d) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | currentId = -1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | d = {} |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | d["id"] = -1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | 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
|
309 | 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
|
310 | 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
|
311 | 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
|
312 | d["broken"] = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | threadList.append(d) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
315 | self.sendJsonCommand("ResponseThreadList", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
316 | "currentID": currentId, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
317 | "threadList": threadList, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
318 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
320 | def raw_input(self, prompt, echo): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | 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
|
323 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | @param prompt the prompt to be shown (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | @param echo Flag indicating echoing of the input (boolean) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | @return the entered string |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
328 | self.sendJsonCommand("RequestRaw", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
329 | "prompt": prompt, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
330 | "echo": echo, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
331 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | self.eventLoop(True) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | return self.rawLine |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
335 | def input(self, prompt): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | Public method to implement input() using the event loop. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | @param prompt the prompt to be shown (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | @return the entered string evaluated as a Python expresion |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | """ |
5174 | 342 | return eval(self.raw_input(prompt, True)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
344 | def sessionClose(self, exit=True): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | """ |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
346 | 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
|
347 | terminate. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | @param exit flag indicating to terminate (boolean) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | 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
|
353 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
356 | self.debugging = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | # 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
|
359 | # might be overkill as normally stdin, stdout and stderr |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | # 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
|
361 | 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
|
362 | 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
|
363 | self.errorstream.close(True) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | if exit: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | # Ok, go away. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | sys.exit() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
369 | def handleLine(self, line): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | 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
|
372 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
373 | 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
|
374 | 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
|
375 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | @param line the received line |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | # Remove any newline. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | if line[-1] == '\n': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | line = line[:-1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | ## 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
|
383 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
384 | self.handleJsonCommand(line) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
385 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
386 | 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
|
387 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
388 | 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
|
389 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
390 | @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
|
391 | @type str |
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 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
394 | commandDict = json.loads(jsonStr.strip()) |
5162
bbf2bb2d533c
Fixed an issue in the new debugger protocol because JSONDecodeError is defined for Python 3.5 and newer only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5161
diff
changeset
|
395 | except (TypeError, ValueError) as err: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
396 | printerr(str(err)) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
397 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
398 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
399 | method = commandDict["method"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
400 | params = commandDict["params"] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
401 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
402 | if method == "RequestVariables": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
403 | self.__dumpVariables( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
404 | 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
|
405 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
406 | elif method == "RequestVariable": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
407 | self.__dumpVariable( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
408 | 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
|
409 | 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 == "RequestThreadList": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
412 | self.__dumpThreadList() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
413 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
414 | elif method == "RequestThreadSet": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
415 | 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
|
416 | 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
|
417 | self.sendJsonCommand("ResponseThreadSet", {}) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
418 | 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
|
419 | self.sendJsonCommand("ResponseStack", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
420 | "stack": stack, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
421 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
422 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
423 | elif method == "RequestCapabilities": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
424 | self.sendJsonCommand("ResponseCapabilities", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
425 | "capabilities": self.__clientCapabilities(), |
5174 | 426 | "clientType": "Python2" |
5132
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 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
429 | elif method == "RequestBanner": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
430 | self.sendJsonCommand("ResponseBanner", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
431 | "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
|
432 | "platform": socket.gethostname(), |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
433 | "dbgclient": self.variant, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
434 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
435 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
436 | elif method == "RequestSetFilter": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
437 | 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
|
438 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
439 | elif method == "RequestCallTrace": |
5174 | 440 | if params["enable"]: |
441 | callTraceEnabled = self.profile | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
442 | else: |
5174 | 443 | callTraceEnabled = None |
2171
c7dd548d67d8
Finished the coding part of the call trace functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2157
diff
changeset
|
444 | |
5174 | 445 | if self.debugging: |
446 | sys.setprofile(callTraceEnabled) | |
447 | else: | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
448 | # remember for later |
5174 | 449 | self.callTraceEnabled = callTraceEnabled |
5132
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 |
5174 | 493 | Breakpoint.clear_all_breaks() |
494 | Watch.clear_all_watches() | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
495 | |
5174 | 496 | self.mainThread.tracePythonLibs(params["traceInterpreter"]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
498 | # 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
|
499 | 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
|
500 | sys.modules['__main__'] = self.debugMod |
5174 | 501 | sys.setprofile(self.callTraceEnabled) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
502 | 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
|
503 | '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
|
504 | self.debugMod.__dict__) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
505 | self.progTerminated(res) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
506 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
507 | elif method == "RequestRun": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
508 | sys.argv = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
509 | 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
|
510 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
511 | 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
|
512 | 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
|
513 | 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
|
514 | 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
|
515 | if params["workdir"] == '': |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
516 | 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
|
517 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
518 | 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
|
519 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
520 | 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
|
521 | self.mainFrame = None |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
522 | self.botframe = None |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
524 | 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
|
525 | 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
|
526 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
527 | self.threads.clear() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
528 | 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
|
529 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
530 | # 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
|
531 | # 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
|
532 | 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
|
533 | self.__interceptSignals() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
534 | |
5174 | 535 | self.mainThread.tracePythonLibs(False) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
536 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
537 | 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
|
538 | 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
|
539 | res = 0 |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
540 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
541 | 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
|
542 | 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
|
543 | res = exc.code |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
544 | atexit._run_exitfuncs() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
545 | self.writestream.flush() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
546 | self.progTerminated(res) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
547 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
548 | elif method == "RequestCoverage": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
549 | 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
|
550 | sys.argv = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
551 | 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
|
552 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
553 | 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
|
554 | 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
|
555 | 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
|
556 | 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
|
557 | if params["workdir"] == '': |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
558 | 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
|
559 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
560 | os.chdir(params["workdir"]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
561 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
562 | # 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
|
563 | # 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
|
564 | 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
|
565 | self.__interceptSignals() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
566 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
567 | # 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
|
568 | self.cover = coverage( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
569 | auto_data=True, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
570 | 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
|
571 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
572 | if params["erase"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
573 | self.cover.erase() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
574 | 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
|
575 | 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
|
576 | 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
|
577 | res = 0 |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
578 | self.cover.start() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
579 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
580 | 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
|
581 | 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
|
582 | res = exc.code |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
583 | atexit._run_exitfuncs() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
584 | self.cover.stop() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
585 | self.cover.save() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
586 | self.writestream.flush() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
587 | self.progTerminated(res) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
588 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
589 | elif method == "RequestProfile": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
590 | sys.setprofile(None) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
591 | import PyProfile |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
592 | sys.argv = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
593 | 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
|
594 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
595 | 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
|
596 | 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
|
597 | 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
|
598 | 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
|
599 | if params["workdir"] == '': |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
600 | 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
|
601 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
602 | os.chdir(params["workdir"]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
603 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
604 | # 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
|
605 | # 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
|
606 | 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
|
607 | self.__interceptSignals() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
608 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
609 | # 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
|
610 | 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
|
611 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
612 | if params["erase"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
613 | self.prof.erase() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
614 | 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
|
615 | 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
|
616 | 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
|
617 | res = 0 |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
618 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
619 | 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
|
620 | 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
|
621 | res = exc.code |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
622 | atexit._run_exitfuncs() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
623 | self.prof.save() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
624 | self.writestream.flush() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
625 | self.progTerminated(res) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
626 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
627 | elif method == "ExecuteStatement": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
628 | if self.buffer: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
629 | 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
|
630 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
631 | 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
|
632 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
633 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
634 | 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
|
635 | 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
|
636 | # Report the exception |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
637 | 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
|
638 | sys.exc_info() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
639 | self.sendJsonCommand("ClientOutput", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
640 | "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
|
641 | 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
|
642 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
643 | self.buffer = '' |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
644 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
645 | 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
|
646 | self.sendJsonCommand("ResponseContinue", {}) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
647 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
648 | else: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
649 | self.buffer = '' |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
650 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
651 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
652 | 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
|
653 | exec code in self.debugMod.__dict__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
654 | else: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
655 | 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
|
656 | # program has terminated |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
657 | self.running = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
658 | _globals = self.debugMod.__dict__ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
659 | _locals = _globals |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
660 | else: |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
661 | 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
|
662 | # program has terminated |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
663 | 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
|
664 | self.running = None |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
665 | _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
|
666 | _locals = _globals |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
667 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
668 | frmnr = self.framenr |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
669 | 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
|
670 | 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
|
671 | frmnr -= 1 |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
672 | _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
|
673 | _locals = \ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
674 | self.currentThread.getFrameLocals( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
675 | self.framenr) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
676 | # 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
|
677 | # (unconditionally) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
678 | 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
|
679 | __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
|
680 | _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
|
681 | 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
|
682 | _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
|
683 | 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
|
684 | __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
|
685 | _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
|
686 | 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
|
687 | _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
|
688 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
689 | 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
|
690 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
691 | 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
|
692 | except SystemExit, exc: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
693 | 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
|
694 | except Exception: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
695 | # 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
|
696 | tlist = [] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
697 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
698 | 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
|
699 | 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
|
700 | 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
|
701 | 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
|
702 | 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
|
703 | del tblist[:1] |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
704 | 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
|
705 | if tlist: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
706 | tlist.insert( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
707 | 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
|
708 | 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
|
709 | 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
|
710 | finally: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
711 | 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
|
712 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
713 | self.sendJsonCommand("ClientOutput", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
714 | "text": "".join(tlist) |
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 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
717 | self.sendJsonCommand("ResponseOK", {}) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
718 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
719 | elif method == "RequestStep": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
720 | 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
|
721 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
722 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
723 | elif method == "RequestStepOver": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
724 | 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
|
725 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
726 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
727 | elif method == "RequestStepOut": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
728 | self.currentThread.stepOut() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
729 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
730 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
731 | elif method == "RequestStepQuit": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
732 | if self.passive: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
733 | self.progTerminated(42) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
734 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
735 | self.set_quit() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
736 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
737 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
738 | elif method == "RequestContinue": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
739 | 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
|
740 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
741 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
742 | elif method == "RawInput": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
743 | # 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
|
744 | # event loop. |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
745 | 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
|
746 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
747 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
748 | elif method == "RequestBreakpoint": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
749 | 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
|
750 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
751 | if params["setBreakpoint"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
752 | if params["condition"] in ['None', '']: |
5174 | 753 | cond = None |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
754 | 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
|
755 | try: |
5174 | 756 | cond = compile(params["condition"], '<string>', 'eval') |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
757 | except SyntaxError: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
758 | self.sendJsonCommand("ResponseBPConditionError", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
759 | "filename": params["filename"], |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
760 | "line": params["line"], |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
761 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
762 | return |
5174 | 763 | else: |
764 | cond = None | |
765 | ||
766 | Breakpoint( | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
767 | params["filename"], params["line"], params["temporary"], |
5174 | 768 | cond) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
769 | else: |
5174 | 770 | Breakpoint.clear_break(params["filename"], params["line"]) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
771 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
772 | elif method == "RequestBreakpointEnable": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
773 | 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
|
774 | sys.getfilesystemencoding()) |
5174 | 775 | bp = Breakpoint.get_break(params["filename"], params["line"]) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
776 | 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
|
777 | if params["enable"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
778 | bp.enable() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
779 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
780 | bp.disable() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
781 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
782 | elif method == "RequestBreakpointIgnore": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
783 | 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
|
784 | sys.getfilesystemencoding()) |
5174 | 785 | bp = Breakpoint.get_break(params["filename"], params["line"]) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
786 | 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
|
787 | 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
|
788 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
789 | elif method == "RequestWatch": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
790 | if params["setWatch"]: |
5174 | 791 | if params["condition"].endswith( |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
792 | ('??created??', '??changed??')): |
5174 | 793 | compiledCond, flag = params["condition"].split() |
794 | else: | |
795 | compiledCond = params["condition"] | |
796 | flag = '' | |
797 | ||
798 | try: | |
799 | compiledCond = compile( | |
800 | compiledCond, '<string>', 'eval') | |
801 | except SyntaxError: | |
802 | self.sendJsonCommand("ResponseWatchConditionError", { | |
803 | "condition": params["condition"], | |
804 | }) | |
805 | return | |
806 | Watch( | |
807 | params["condition"], compiledCond, flag, | |
808 | params["temporary"]) | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
809 | else: |
5174 | 810 | Watch.clear_watch(params["condition"]) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
811 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
812 | elif method == "RequestWatchEnable": |
5174 | 813 | wp = Watch.get_watch(params["condition"]) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
814 | 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
|
815 | if params["enable"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
816 | wp.enable() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
817 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
818 | wp.disable() |
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 == "RequestWatchIgnore": |
5174 | 821 | wp = Watch.get_watch(params["condition"]) |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
822 | 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
|
823 | 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
|
824 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
825 | elif method == "RequestShutdown": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
826 | self.sessionClose() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
827 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
828 | elif method == "RequestCompletion": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
829 | 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
|
830 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
831 | elif method == "RequestUTPrepare": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
832 | 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
|
833 | sys.getfilesystemencoding()) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
834 | sys.path.insert( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
835 | 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
|
836 | 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
|
837 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
838 | # 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
|
839 | # 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
|
840 | 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
|
841 | self.__interceptSignals() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
842 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
843 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
844 | import unittest |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
845 | 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
|
846 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
847 | if params["failed"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
848 | 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
|
849 | .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
|
850 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
851 | 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
|
852 | .loadTestsFromName(params["testfunctionname"], |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
853 | utModule) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
854 | except AttributeError: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
855 | 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
|
856 | .loadTestsFromModule(utModule) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
857 | except Exception: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
858 | 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
|
859 | self.sendJsonCommand("ResponseUTPrepared", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
860 | "count": 0, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
861 | "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
|
862 | "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
|
863 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
864 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
865 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
866 | # 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
|
867 | if params["coverage"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
868 | 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
|
869 | self.cover = coverage( |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
870 | auto_data=True, |
5134
4a4212a6f40c
Removed two obsolete modules in the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5133
diff
changeset
|
871 | data_file="%s.coverage" % ( |
4a4212a6f40c
Removed two obsolete modules in the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5133
diff
changeset
|
872 | 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
|
873 | if params["coverageerase"]: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
874 | self.cover.erase() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
875 | else: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
876 | self.cover = None |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
877 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
878 | self.sendJsonCommand("ResponseUTPrepared", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
879 | "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
|
880 | "exception": "", |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
881 | "message": "", |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
882 | }) |
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 == "RequestUTRun": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
885 | 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
|
886 | 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
|
887 | if self.cover: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
888 | self.cover.start() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
889 | 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
|
890 | if self.cover: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
891 | self.cover.stop() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
892 | self.cover.save() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
893 | self.sendJsonCommand("ResponseUTFinished", {}) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
894 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
895 | elif method == "RequestUTStop": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
896 | self.testResult.stop() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
897 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
898 | elif method == "ResponseForkTo": |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
899 | # 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
|
900 | 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
|
901 | self.eventExit = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
902 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
903 | 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
|
904 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
905 | 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
|
906 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
907 | @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
|
908 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
909 | @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
|
910 | response |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
911 | @type dict |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
912 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
913 | 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
|
914 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
915 | 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
|
916 | self.writestream.flush() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
917 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
918 | 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
|
919 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
920 | 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
|
921 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
922 | @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
|
923 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
924 | @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
|
925 | @type int |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
926 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
927 | self.sendJsonCommand("ResponseClearBreakpoint", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
928 | "filename": filename, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
929 | "line": lineno |
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 sendClearTemporaryWatch(self, condition): |
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 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
|
935 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
936 | @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
|
937 | @type str |
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("ResponseClearWatch", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
940 | "condition": condition, |
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 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
943 | 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
|
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 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
|
946 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
947 | @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
|
948 | @type list |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
949 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
950 | self.sendJsonCommand("ResponseLine", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
951 | "stack": stack, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
952 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
953 | |
5140
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
954 | 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
|
955 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
956 | 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
|
957 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
958 | @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
|
959 | @type str |
5140
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
960 | @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
|
961 | @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
|
962 | as keys |
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
963 | @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
|
964 | @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
|
965 | as keys |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
966 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
967 | self.sendJsonCommand("CallTrace", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
968 | "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
|
969 | "from": fromInfo, |
01484c0afbc6
Worked on the last TODOs for the modernized debugger protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5135
diff
changeset
|
970 | "to": toInfo, |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
971 | }) |
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 | 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
|
974 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
975 | 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
|
976 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
977 | @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
|
978 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
979 | @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
|
980 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
981 | @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
|
982 | @type list |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
983 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
984 | self.sendJsonCommand("ResponseException", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
985 | "type": exceptionType, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
986 | "message": exceptionMessage, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
987 | "stack": stack, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
988 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
989 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
990 | 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
|
991 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
992 | 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
|
993 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
994 | @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
|
995 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
996 | @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
|
997 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
998 | @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
|
999 | @type int |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1000 | @param charno character number info |
5144
1ab536d25072
Regenerated the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5140
diff
changeset
|
1001 | @type int |
5132
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 | self.sendJsonCommand("ResponseSyntax", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1004 | "message": message, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1005 | "filename": filename, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1006 | "linenumber": lineno, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1007 | "characternumber": charno, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1008 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1009 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1010 | 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
|
1011 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1012 | 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
|
1013 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1014 | @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
|
1015 | @type str |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1016 | @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
|
1017 | @type bool |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1018 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1019 | self.sendJsonCommand("PassiveStartup", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1020 | "filename": filename, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1021 | "exceptions": exceptions, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1022 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1023 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1024 | def __clientCapabilities(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1025 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1026 | Private method to determine the clients capabilities. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1027 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1028 | @return client capabilities (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1029 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1030 | try: |
803
86f10944dc83
Removed some pyflakes warnings in the Python2 debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
1031 | import PyProfile # __IGNORE_WARNING__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1032 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1033 | del sys.modules['PyProfile'] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1034 | except KeyError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1035 | pass |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1036 | return self.clientCapabilities |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1037 | 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
|
1038 | return ( |
f609a22f43bd
Fixed a few code style issues detected by the updated pep8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4642
diff
changeset
|
1039 | 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
|
1040 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1041 | def readReady(self, stream): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1042 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1043 | 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
|
1044 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1045 | @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
|
1046 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1047 | try: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1048 | 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
|
1049 | except Exception: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1050 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1051 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1052 | 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
|
1053 | self.sessionClose() |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1054 | return |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1055 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1056 | 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
|
1057 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1058 | # 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
|
1059 | 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
|
1060 | while eol >= 0: |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1061 | 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
|
1062 | 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
|
1063 | self.handleLine(line) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1064 | 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
|
1065 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1066 | 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
|
1067 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1068 | 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
|
1069 | |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1070 | @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
|
1071 | """ |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1072 | stream.write_p("") |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1073 | stream.flush() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1074 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1075 | def __interact(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1076 | """ |
4944
d4709f4818bb
Corrected a typo.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4943
diff
changeset
|
1077 | Private method to interact with the debugger. |
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 | global DebugClientInstance |
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 | DebugClientInstance = self |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1082 | self.__receiveBuffer = "" |
0
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 | if not self.passive: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1085 | # At this point simulate an event loop. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1086 | self.eventLoop() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1087 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1088 | def eventLoop(self, disablePolling=False): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1089 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1090 | Public method implementing our event loop. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1091 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1092 | @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
|
1093 | polling disabled (boolean) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1094 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1095 | self.eventExit = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1096 | self.pollingDisabled = disablePolling |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1097 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1098 | while self.eventExit is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1099 | wrdy = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1100 | |
4943
e093b4e24e97
Gracefully exit the debugger clients, without loosing last lines.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4834
diff
changeset
|
1101 | 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
|
1102 | break |
e093b4e24e97
Gracefully exit the debugger clients, without loosing last lines.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4834
diff
changeset
|
1103 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1104 | if AsyncPendingWrite(self.writestream): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1105 | wrdy.append(self.writestream) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1106 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1107 | if AsyncPendingWrite(self.errorstream): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1108 | wrdy.append(self.errorstream) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1109 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1110 | 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
|
1111 | rrdy, wrdy, xrdy = select.select([self.readstream], wrdy, []) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1112 | except (select.error, KeyboardInterrupt, socket.error): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1113 | # just carry on |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1114 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1115 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1116 | 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
|
1117 | self.readReady(self.readstream) |
0
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 | 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
|
1120 | self.writeReady(self.writestream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1121 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1122 | 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
|
1123 | self.writeReady(self.errorstream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1124 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1125 | self.eventExit = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1126 | self.pollingDisabled = False |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1127 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1128 | def eventPoll(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1129 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1130 | 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
|
1131 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1132 | if self.pollingDisabled: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1133 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1134 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1135 | wrdy = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1136 | if AsyncPendingWrite(self.writestream): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1137 | wrdy.append(self.writestream) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1138 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1139 | if AsyncPendingWrite(self.errorstream): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1140 | wrdy.append(self.errorstream) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1141 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1142 | # immediate return if nothing is ready. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1143 | 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
|
1144 | 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
|
1145 | except (select.error, KeyboardInterrupt, socket.error): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1146 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1147 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1148 | 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
|
1149 | self.readReady(self.readstream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1150 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1151 | 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
|
1152 | self.writeReady(self.writestream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1153 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1154 | 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
|
1155 | self.writeReady(self.errorstream) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1156 | |
5174 | 1157 | def connectDebugger(self, port, remoteAddress=None, redirect=True): |
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 | 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
|
1160 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1161 | 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
|
1162 | 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
|
1163 | being debugged redirects them itself. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1164 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1165 | @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
|
1166 | @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
|
1167 | (string) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1168 | @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
|
1169 | stderr (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1170 | """ |
4269
5ba44a2de31a
Simplified the debugger backend connection code for the Python2 and Python3 debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4220
diff
changeset
|
1171 | 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
|
1172 | remoteAddress = "127.0.0.1" |
4270
fd51fbdfdd69
Fixed the last socket change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4269
diff
changeset
|
1173 | elif "@@i" in remoteAddress: |
fd51fbdfdd69
Fixed the last socket change.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4269
diff
changeset
|
1174 | 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
|
1175 | sock = socket.create_connection((remoteAddress, port)) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1176 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1177 | 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
|
1178 | 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
|
1179 | 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
|
1180 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1181 | if redirect: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1182 | sys.stdin = self.readstream |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1183 | sys.stdout = self.writestream |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1184 | sys.stderr = self.errorstream |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1185 | self.redirect = redirect |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1186 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1187 | # attach to the main thread here |
5174 | 1188 | self.attachThread(mainThread=True) |
0
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 | def __unhandled_exception(self, exctype, excval, exctb): |
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 | Private method called to report an uncaught exception. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1193 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1194 | @param exctype the type of the exception |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1195 | @param excval data about the exception |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1196 | @param exctb traceback for the exception |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1197 | """ |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1198 | 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
|
1199 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1200 | def __interceptSignals(self): |
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 | 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
|
1203 | """ |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1204 | for signum in [ |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1205 | signal.SIGABRT, # abnormal termination |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1206 | 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
|
1207 | signal.SIGILL, # illegal instruction |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1208 | signal.SIGSEGV, # segmentation violation |
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 | 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
|
1211 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1212 | 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
|
1213 | """ |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1214 | 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
|
1215 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1216 | @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
|
1217 | @type int |
4370
54dbb658f9e6
Corrected some code style issues and regenerated the source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4366
diff
changeset
|
1218 | @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
|
1219 | @type frame object |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1220 | """ |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1221 | if signalNumber == signal.SIGABRT: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1222 | message = "Abnormal Termination" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1223 | elif signalNumber == signal.SIGFPE: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1224 | message = "Floating Point Exception" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1225 | elif signalNumber == signal.SIGILL: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1226 | message = "Illegal Instruction" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1227 | elif signalNumber == signal.SIGSEGV: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1228 | message = "Segmentation Violation" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1229 | else: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1230 | 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
|
1231 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1232 | filename = self.absPath(stackFrame) |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1233 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1234 | linenr = stackFrame.f_lineno |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1235 | 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
|
1236 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1237 | if ffunc == '?': |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1238 | ffunc = '' |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1239 | |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1240 | 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
|
1241 | argInfo = inspect.getargvalues(stackFrame) |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1242 | try: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1243 | fargs = inspect.formatargvalues( |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1244 | argInfo.args, argInfo.varargs, |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1245 | argInfo.keywords, argInfo.locals) |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1246 | except Exception: |
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 | else: |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1249 | fargs = "" |
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1250 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1251 | self.sendJsonCommand("ResponseSignal", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1252 | "message": message, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1253 | "filename": filename, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1254 | "linenumber": linenr, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1255 | "function": ffunc, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1256 | "arguments": fargs, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1257 | }) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1258 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1259 | def absPath(self, fn): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1260 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1261 | 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
|
1262 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1263 | 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
|
1264 | relative if a file could not be found. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1265 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1266 | @param fn filename (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1267 | @return the converted filename (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1268 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1269 | if os.path.isabs(fn): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1270 | return fn |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1271 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1272 | # 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
|
1273 | 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
|
1274 | return self._fncache[fn] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1275 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1276 | # Search sys.path. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1277 | 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
|
1278 | 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
|
1279 | nafn = os.path.normcase(afn) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1280 | |
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
|
1281 | 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
|
1282 | self._fncache[fn] = afn |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1283 | d = os.path.dirname(afn) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1284 | 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
|
1285 | self.dircache.append(d) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1286 | return afn |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1287 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1288 | # Search the additional directory cache |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1289 | 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
|
1290 | 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
|
1291 | nafn = os.path.normcase(afn) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1292 | |
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
|
1293 | 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
|
1294 | self._fncache[fn] = afn |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1295 | return afn |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1296 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1297 | # Nothing found. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1298 | return 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 | def getRunning(self): |
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 | 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
|
1303 | |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
1304 | @return flag indicating a running debug session (boolean) |
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 | return self.running |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1307 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1308 | def progTerminated(self, status, message=""): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1309 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1310 | 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
|
1311 | |
4366
9445c7cb991f
Implemented a signal handler for the Python debug clients.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4309
diff
changeset
|
1312 | @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
|
1313 | @type int |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1314 | @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
|
1315 | @type str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1316 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1317 | if status is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1318 | status = 0 |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1319 | 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
|
1320 | message = str(status) |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1321 | status = 1 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1322 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1323 | if self.running: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1324 | self.set_quit() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1325 | 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
|
1326 | self.sendJsonCommand("ResponseExit", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1327 | "status": status, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1328 | "message": message, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1329 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1330 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1331 | # reset coding |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1332 | self.__coding = self.defaultCoding |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1333 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1334 | def __dumpVariables(self, frmnr, scope, filter): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1335 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1336 | 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
|
1337 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1338 | @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
|
1339 | (int) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1340 | @param scope 1 to report global variables, 0 for local variables (int) |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
1341 | @param filter the indices of variable types to be filtered |
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
1342 | (list of int) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1343 | """ |
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
|
1344 | 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
|
1345 | 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
|
1346 | |
5050
a6335e924d08
Hide frames belonging to the debugger at a recursion exception.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
5049
diff
changeset
|
1347 | frmnr += self.currentThread.skipFrames |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1348 | if scope == 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1349 | self.framenr = frmnr |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1350 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1351 | f = self.currentThread.getCurrentFrame() |
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 | while f is not None and frmnr > 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1354 | f = f.f_back |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1355 | frmnr -= 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1356 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1357 | if f is None: |
3729
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1358 | if scope: |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1359 | dict = self.debugMod.__dict__ |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1360 | else: |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1361 | scope = -1 |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1362 | elif scope: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1363 | 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
|
1364 | 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
|
1365 | scope = -1 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1366 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1367 | dict = f.f_locals |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1368 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1369 | varlist = [] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1370 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1371 | if scope != -1: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1372 | keylist = dict.keys() |
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 | vlist = self.__formatVariablesList(keylist, dict, scope, filter) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1375 | varlist.extend(vlist) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1376 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1377 | self.sendJsonCommand("ResponseVariables", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1378 | "scope": scope, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1379 | "variables": varlist, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1380 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1381 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1382 | def __dumpVariable(self, var, frmnr, scope, filter): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1383 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1384 | 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
|
1385 | |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1386 | @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
|
1387 | (list of strings) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1388 | @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
|
1389 | (int) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1390 | @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
|
1391 | @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
|
1392 | (list of int) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1393 | """ |
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
|
1394 | 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
|
1395 | 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
|
1396 | |
5050
a6335e924d08
Hide frames belonging to the debugger at a recursion exception.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
5049
diff
changeset
|
1397 | frmnr += self.currentThread.skipFrames |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1398 | f = self.currentThread.getCurrentFrame() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1399 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1400 | while f is not None and frmnr > 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1401 | f = f.f_back |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1402 | frmnr -= 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1403 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1404 | if f is None: |
3729
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1405 | if scope: |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1406 | dict = self.debugMod.__dict__ |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1407 | else: |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1408 | scope = -1 |
b6eda7d63e4c
Debug viewer always active.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3621
diff
changeset
|
1409 | elif scope: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1410 | 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
|
1411 | 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
|
1412 | scope = -1 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1413 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1414 | 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
|
1415 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1416 | varlist = [] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1417 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1418 | if scope != -1: |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1419 | variable = dict |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1420 | for attribute in var: |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1421 | attribute = self.__extractIndicators(attribute)[0] |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1422 | typeObject, typeName, typeStr, resolver = \ |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1423 | DebugVariables.getType(variable) |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1424 | if resolver: |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1425 | variable = resolver.resolve(variable, attribute) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1426 | else: |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1427 | break |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1428 | typeObject, typeName, typeStr, resolver = \ |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1429 | DebugVariables.getType(variable) |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1430 | if typeStr.startswith(("PyQt5.", "PyQt4.")): |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1431 | vlist = self.__formatQtVariable(variable, typeName) |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1432 | varlist.extend(vlist) |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1433 | elif resolver: |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1434 | dict = resolver.getDictionary(variable) |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1435 | vlist = self.__formatVariablesList( |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1436 | list(dict.keys()), dict, scope, filter) |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1437 | varlist.extend(vlist) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1438 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1439 | self.sendJsonCommand("ResponseVariable", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1440 | "scope": scope, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1441 | "variable": var, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1442 | "variables": varlist, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1443 | }) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1444 | |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1445 | def __extractIndicators(self, var): |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1446 | """ |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1447 | Private method to extract the indicator string from a variable text. |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1448 | |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1449 | @param var variable text |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1450 | @type str |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1451 | @return tuple containing the variable text without indicators and the |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1452 | indicator string |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1453 | @rtype tuple of two str |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1454 | """ |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1455 | for indicator in DebugClientBase.Indicators: |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1456 | if var.endswith(indicator): |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1457 | return var[:-len(indicator)], indicator |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1458 | |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1459 | return var, "" |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1460 | |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1461 | def __formatQtVariable(self, value, qttype): |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1462 | """ |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1463 | Private method to produce a formatted output of a simple Qt4/Qt5 type. |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1464 | |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1465 | @param value variable to be formatted |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1466 | @param qttype type of the Qt 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
|
1467 | @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
|
1468 | 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
|
1469 | its type and value. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1470 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1471 | varlist = [] |
5
fa319c01b604
Corrected some omissions for the QString v2 API conversion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
0
diff
changeset
|
1472 | if qttype == 'QChar': |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1473 | varlist.append(("", "QChar", "%s" % unichr(value.unicode()))) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1474 | 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
|
1475 | elif qttype == 'QByteArray': |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1476 | 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
|
1477 | 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
|
1478 | 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
|
1479 | "%s" % value.toPercentEncoding())) |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1480 | elif qttype == 'QString': |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1481 | 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
|
1482 | elif qttype == 'QStringList': |
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1483 | 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
|
1484 | varlist.append(("%d" % i, "QString", "%s" % value[i])) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1485 | elif qttype == 'QPoint': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1486 | varlist.append(("x", "int", "%d" % value.x())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1487 | varlist.append(("y", "int", "%d" % value.y())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1488 | elif qttype == 'QPointF': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1489 | varlist.append(("x", "float", "%g" % value.x())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1490 | varlist.append(("y", "float", "%g" % value.y())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1491 | elif qttype == 'QRect': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1492 | varlist.append(("x", "int", "%d" % value.x())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1493 | varlist.append(("y", "int", "%d" % value.y())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1494 | varlist.append(("width", "int", "%d" % value.width())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1495 | varlist.append(("height", "int", "%d" % value.height())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1496 | elif qttype == 'QRectF': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1497 | varlist.append(("x", "float", "%g" % value.x())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1498 | varlist.append(("y", "float", "%g" % value.y())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1499 | varlist.append(("width", "float", "%g" % value.width())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1500 | varlist.append(("height", "float", "%g" % value.height())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1501 | elif qttype == 'QSize': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1502 | varlist.append(("width", "int", "%d" % value.width())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1503 | varlist.append(("height", "int", "%d" % value.height())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1504 | elif qttype == 'QSizeF': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1505 | varlist.append(("width", "float", "%g" % value.width())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1506 | varlist.append(("height", "float", "%g" % value.height())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1507 | elif qttype == 'QColor': |
5
fa319c01b604
Corrected some omissions for the QString v2 API conversion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
0
diff
changeset
|
1508 | varlist.append(("name", "str", "%s" % value.name())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1509 | 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
|
1510 | 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
|
1511 | 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
|
1512 | 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
|
1513 | 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
|
1514 | 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
|
1515 | ("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
|
1516 | 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
|
1517 | varlist.append(("", "QDate", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1518 | 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
|
1519 | varlist.append(("", "QTime", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1520 | 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
|
1521 | varlist.append(("", "QDateTime", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1522 | 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
|
1523 | 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
|
1524 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1525 | ("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
|
1526 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1527 | ("canonicalPath", "str", "%s" % value.canonicalPath())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1528 | 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
|
1529 | varlist.append(("fileName", "str", "%s" % value.fileName())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1530 | 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
|
1531 | varlist.append(("family", "str", "%s" % value.family())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1532 | varlist.append(("pointSize", "int", "%d" % value.pointSize())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1533 | varlist.append(("weight", "int", "%d" % value.weight())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1534 | varlist.append(("bold", "bool", "%s" % value.bold())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1535 | varlist.append(("italic", "bool", "%s" % value.italic())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1536 | 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
|
1537 | 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
|
1538 | 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
|
1539 | 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
|
1540 | 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
|
1541 | varlist.append(("host", "str", "%s" % value.host())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1542 | 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
|
1543 | varlist.append(("path", "str", "%s" % value.path())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1544 | elif qttype == 'QModelIndex': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1545 | varlist.append(("valid", "bool", "%s" % value.isValid())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1546 | if value.isValid(): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1547 | varlist.append(("row", "int", "%s" % value.row())) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1548 | 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
|
1549 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1550 | ("internalId", "int", "%s" % value.internalId())) |
3021
801289962f4e
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2987
diff
changeset
|
1551 | varlist.append( |
3032
927a2f8b3669
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3021
diff
changeset
|
1552 | ("internalPointer", "void *", "%s" % |
3021
801289962f4e
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2987
diff
changeset
|
1553 | value.internalPointer())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1554 | 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
|
1555 | varlist.append(("pattern", "str", "%s" % value.pattern())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1556 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1557 | # GUI stuff |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1558 | 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
|
1559 | 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
|
1560 | 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
|
1561 | 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
|
1562 | 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
|
1563 | 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
|
1564 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1565 | ("shortcut", "str", "%s" % value.shortcut().toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1566 | 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
|
1567 | varlist.append(("value", "", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1568 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1569 | # XML stuff |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1570 | 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
|
1571 | 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
|
1572 | varlist.append(("value", "str", "%s" % value.value())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1573 | 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
|
1574 | varlist.append(("data", "str", "%s" % value.data())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1575 | 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
|
1576 | varlist.append(("data", "str", "%s" % value.data())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1577 | 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
|
1578 | varlist.append(("text", "str", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1579 | 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
|
1580 | 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
|
1581 | varlist.append(("text", "str", "%s" % value.text())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1582 | 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
|
1583 | varlist.append(("data", "str", "%s" % value.data())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1584 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1585 | # Networking stuff |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1586 | 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
|
1587 | varlist.append( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1588 | ("address", "QHostAddress", "%s" % value.toString())) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1589 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1590 | return varlist |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1591 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1592 | def __formatVariablesList(self, keylist, dict, scope, filter=[], |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1593 | formatSequences=False): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1594 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1595 | Private method to produce a formated variables list. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1596 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1597 | 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
|
1598 | only added to the list, if their type is not contained |
5174 | 1599 | in the filter list and their name doesn't match any of the filter |
1600 | expressions. The formated variables list (a list of tuples of 3 | |
1601 | values) is returned. | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1602 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1603 | @param keylist keys of the dictionary |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1604 | @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
|
1605 | @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
|
1606 | filter (int). |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1607 | 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
|
1608 | 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
|
1609 | @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
|
1610 | 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
|
1611 | filter list. |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1612 | @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
|
1613 | 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
|
1614 | 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
|
1615 | @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
|
1616 | 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
|
1617 | its type and value. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1618 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1619 | varlist = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1620 | if scope: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1621 | patternFilterObjects = self.globalsFilterObjects |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1622 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1623 | patternFilterObjects = self.localsFilterObjects |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1624 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1625 | for key in keylist: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1626 | # 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
|
1627 | matched = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1628 | for pat in patternFilterObjects: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1629 | 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
|
1630 | matched = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1631 | break |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1632 | if matched: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1633 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1634 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1635 | # filter hidden attributes (filter #0) |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1636 | if 0 in filter and unicode(key)[:2] == '__' and not ( |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1637 | key == "___len___" and |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1638 | DebugVariables.TooLargeAttribute in keylist): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1639 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1640 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1641 | # special handling for '__builtins__' (it's way too big) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1642 | if key == '__builtins__': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1643 | rvalue = '<module __builtin__ (built-in)>' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1644 | valtype = 'module' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1645 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1646 | value = dict[key] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1647 | valtypestr = ("%s" % type(value))[1:-1] |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1648 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1649 | if valtypestr.split(' ', 1)[0] == 'class': |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1650 | # handle new class type of python 2.2+ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1651 | if ConfigVarTypeStrings.index('instance') in filter: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1652 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1653 | valtype = valtypestr |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1654 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1655 | valtype = valtypestr[6:-1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1656 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1657 | if ConfigVarTypeStrings.index(valtype) in filter: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1658 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1659 | except ValueError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1660 | 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
|
1661 | if ConfigVarTypeStrings.index( |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1662 | 'instance') in filter: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1663 | continue |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1664 | 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
|
1665 | if ConfigVarTypeStrings.index( |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1666 | '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
|
1667 | continue |
2157
aa3bdc7cb686
Changed the Python debugger backends to cope with latest PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1727
diff
changeset
|
1668 | 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
|
1669 | 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
|
1670 | continue |
1470
65af67c5b5c3
Modified the Python debuggers to better cope with later PyQt4 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1305
diff
changeset
|
1671 | elif not valtype.startswith("PySide") and \ |
3032
927a2f8b3669
Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3021
diff
changeset
|
1672 | ConfigVarTypeStrings.index('other') in filter: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1673 | continue |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1674 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1675 | try: |
5171
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1676 | if valtype not in ['list', 'tuple', 'dict', 'set', |
f1e9eebd5469
Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5162
diff
changeset
|
1677 | 'frozenset']: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1678 | rvalue = repr(value) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1679 | if valtype.startswith('class') and \ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1680 | rvalue[0] in ['{', '(', '[']: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1681 | rvalue = "" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1682 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1683 | if valtype == 'dict': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1684 | rvalue = "%d" % len(value.keys()) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1685 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1686 | 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
|
1687 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1688 | rvalue = '' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1689 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1690 | if formatSequences: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1691 | if unicode(key) == key: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1692 | key = "'%s'" % key |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1693 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1694 | key = unicode(key) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1695 | varlist.append((key, valtype, rvalue)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1696 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1697 | return varlist |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1698 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1699 | def __generateFilterObjects(self, scope, filterString): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1700 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1701 | 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
|
1702 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1703 | @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
|
1704 | variables (int) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1705 | @param filterString string of filter patterns separated by ';' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1706 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1707 | patternFilterObjects = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1708 | for pattern in filterString.split(';'): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1709 | patternFilterObjects.append(re.compile('^%s$' % pattern)) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1710 | if scope: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1711 | self.globalsFilterObjects = patternFilterObjects[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1712 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1713 | self.localsFilterObjects = patternFilterObjects[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1714 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1715 | def __completionList(self, text): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1716 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1717 | 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
|
1718 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1719 | @param text the text to be completed (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1720 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1721 | completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1722 | |
4833
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1723 | completions = set() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1724 | # find position of last delim character |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1725 | pos = -1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1726 | while pos >= -len(text): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1727 | if text[pos] in completerDelims: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1728 | if pos == -1: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1729 | text = '' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1730 | 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
|
1731 | text = text[pos + 1:] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1732 | break |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1733 | pos -= 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1734 | |
4833
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1735 | # Get local and global completions |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1736 | 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
|
1737 | 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
|
1738 | 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
|
1739 | 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
|
1740 | 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
|
1741 | pass |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1742 | 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
|
1743 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1744 | self.sendJsonCommand("ResponseCompletion", { |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1745 | "completions": list(completions), |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1746 | "text": text, |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1747 | }) |
4833
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1748 | |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1749 | 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
|
1750 | """ |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1751 | 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
|
1752 | |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1753 | @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
|
1754 | @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
|
1755 | @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
|
1756 | """ |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1757 | 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
|
1758 | try: |
803bf753032a
Improved shell completer for local variables and behavior of Python versions equaled.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4642
diff
changeset
|
1759 | 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
|
1760 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1761 | comp = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1762 | 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
|
1763 | completions.add(comp) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1764 | state += 1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1765 | 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
|
1766 | 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
|
1767 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1768 | comp = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1769 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1770 | 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
|
1771 | 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
|
1772 | redirect=True): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1773 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1774 | Public method used to start the remote debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1775 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1776 | @param filename the program to be debugged (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1777 | @param host hostname of the debug server (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1778 | @param port portnumber of the debug server (int) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1779 | @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
|
1780 | @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
|
1781 | (boolean) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1782 | @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
|
1783 | (boolean) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1784 | @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
|
1785 | stderr (boolean) |
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 | global debugClient |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1788 | if host is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1789 | host = os.getenv('ERICHOST', 'localhost') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1790 | if port is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1791 | port = os.getenv('ERICPORT', 42424) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1792 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1793 | remoteAddress = self.__resolveHost(host) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1794 | self.connectDebugger(port, remoteAddress, redirect) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1795 | if filename is not None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1796 | self.running = os.path.abspath(filename) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1797 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1798 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1799 | self.running = os.path.abspath(sys.argv[0]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1800 | except IndexError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1801 | self.running = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1802 | if self.running: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1803 | 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
|
1804 | self.passive = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1805 | self.sendPassiveStartup(self.running, exceptions) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1806 | self.__interact() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1807 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1808 | # 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
|
1809 | self._fncache = {} |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1810 | self.dircache = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1811 | 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
|
1812 | self.debugging = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1813 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1814 | self.attachThread(mainThread=True) |
5005
684f5ba04f0b
First improvements on debugger speed: Cheaper detection of unwanted files and
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4944
diff
changeset
|
1815 | self.mainThread.tracePythonLibs(tracePython) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1816 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1817 | # set the system exception handling function to ensure, that |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1818 | # we report on all unhandled exceptions |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1819 | 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
|
1820 | self.__interceptSignals() |
0
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 | # now start debugging |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1823 | if enableTrace: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1824 | self.mainThread.set_trace() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1825 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1826 | 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
|
1827 | 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
|
1828 | redirect=True): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1829 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1830 | Public method used to start the remote debugger. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1831 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
1832 | @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
|
1833 | (list of strings) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1834 | @param wd working directory for the program execution (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1835 | @param host hostname of the debug server (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1836 | @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
|
1837 | @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
|
1838 | (boolean) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1839 | @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
|
1840 | (boolean) |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1841 | @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
|
1842 | stderr (boolean) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1843 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1844 | if host is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1845 | host = os.getenv('ERICHOST', 'localhost') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1846 | if port is None: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1847 | port = os.getenv('ERICPORT', 42424) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1848 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1849 | remoteAddress = self.__resolveHost(host) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1850 | self.connectDebugger(port, remoteAddress, redirect) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1851 | |
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
|
1852 | self._fncache = {} |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1853 | self.dircache = [] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1854 | sys.argv = progargs[:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1855 | 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
|
1856 | 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
|
1857 | if wd == '': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1858 | os.chdir(sys.path[1]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1859 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1860 | os.chdir(wd) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1861 | self.running = sys.argv[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1862 | self.__setCoding(self.running) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1863 | 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
|
1864 | self.debugging = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1865 | |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1866 | self.passive = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1867 | self.sendPassiveStartup(self.running, exceptions) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1868 | self.__interact() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1869 | |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
1870 | self.attachThread(mainThread=True) |
5005
684f5ba04f0b
First improvements on debugger speed: Cheaper detection of unwanted files and
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4944
diff
changeset
|
1871 | self.mainThread.tracePythonLibs(tracePython) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1872 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1873 | # set the system exception handling function to ensure, that |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1874 | # we report on all unhandled exceptions |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1875 | 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
|
1876 | self.__interceptSignals() |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1877 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1878 | # This will eventually enter a local event loop. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1879 | # 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
|
1880 | # 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
|
1881 | # 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
|
1882 | # 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
|
1883 | self.debugMod.__dict__['__file__'] = self.running |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1884 | 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
|
1885 | res = self.mainThread.run('execfile(' + repr(self.running) + ')', |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1886 | self.debugMod.__dict__) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1887 | self.progTerminated(res) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1888 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1889 | def run_call(self, scriptname, func, *args): |
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 | 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
|
1892 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1893 | @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
|
1894 | @param func function to be called |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1895 | @param *args arguments being passed to func |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1896 | @return result of the function call |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1897 | """ |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
1898 | self.startDebugger(scriptname, enableTrace=False) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1899 | res = self.mainThread.runcall(func, *args) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1900 | self.progTerminated(res) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1901 | return res |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1902 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1903 | def __resolveHost(self, host): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1904 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1905 | 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
|
1906 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1907 | @param host hostname of the debug server (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1908 | @return IP address (string) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1909 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1910 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1911 | host, version = host.split("@@") |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1912 | except ValueError: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1913 | version = 'v4' |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1914 | if version == 'v4': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1915 | family = socket.AF_INET |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1916 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1917 | 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
|
1918 | 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
|
1919 | socket.SOCK_STREAM)[0][4][0] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1920 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1921 | def main(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1922 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1923 | Public method implementing the main method. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1924 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1925 | if '--' in sys.argv: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1926 | args = sys.argv[1:] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1927 | host = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1928 | port = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1929 | wd = '' |
5132
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1930 | tracePython = False |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1931 | exceptions = True |
a094eee9f862
Ported the debugger modernization changes to the Python 2 debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4944
diff
changeset
|
1932 | redirect = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1933 | while args[0]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1934 | if args[0] == '-h': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1935 | host = args[1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1936 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1937 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1938 | elif args[0] == '-p': |
1179
7661ab683f7b
Improved IPv6 support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1112
diff
changeset
|
1939 | port = int(args[1]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1940 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1941 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1942 | elif args[0] == '-w': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1943 | wd = args[1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1944 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1945 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1946 | 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
|
1947 | tracePython = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1948 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1949 | 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
|
1950 | exceptions = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1951 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1952 | 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
|
1953 | redirect = False |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1954 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1955 | elif args[0] == '--no-encoding': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1956 | self.noencoding = True |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1957 | 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
|
1958 | 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
|
1959 | 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
|
1960 | 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
|
1961 | 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
|
1962 | 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
|
1963 | 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
|
1964 | 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
|
1965 | del args[0] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1966 | elif args[0] == '--': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1967 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1968 | break |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1969 | else: # unknown option |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1970 | del args[0] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1971 | if not args: |
5174 | 1972 | print("No program given. Aborting!") # __IGNORE_WARNING__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1973 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1974 | if not self.noencoding: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1975 | 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
|
1976 | 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
|
1977 | exceptions=exceptions, |
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
1978 | tracePython=tracePython, |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1979 | redirect=redirect) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1980 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1981 | if sys.argv[1] == '--no-encoding': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1982 | self.noencoding = True |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1983 | del sys.argv[1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1984 | if sys.argv[1] == '': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1985 | del sys.argv[1] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1986 | try: |
1179
7661ab683f7b
Improved IPv6 support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1112
diff
changeset
|
1987 | port = int(sys.argv[1]) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1988 | except (ValueError, IndexError): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1989 | port = -1 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1990 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1991 | redirect = int(sys.argv[2]) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1992 | 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
|
1993 | redirect = True |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1994 | try: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1995 | ipOrHost = sys.argv[3] |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1996 | if ':' in ipOrHost: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1997 | remoteAddress = ipOrHost |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1998 | elif ipOrHost[0] in '0123456789': |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1999 | remoteAddress = ipOrHost |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2000 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2001 | 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
|
2002 | except Exception: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2003 | remoteAddress = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2004 | 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
|
2005 | if '' not in sys.path: |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2006 | sys.path.insert(0, '') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2007 | if port >= 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2008 | if not self.noencoding: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2009 | self.__coding = self.defaultCoding |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2010 | self.connectDebugger(port, remoteAddress, redirect) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2011 | self.__interact() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2012 | else: |
5174 | 2013 | print("No network port given. Aborting...") # __IGNORE_WARNING__ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2014 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2015 | def fork(self): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2016 | """ |
5161
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
2017 | Public method implementing a fork routine deciding which branch |
f7b6ded9cc37
Some cleanups in the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5144
diff
changeset
|
2018 | to follow. |
2953
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
2019 | |
703452a2876f
Started correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2761
diff
changeset
|
2020 | @return process ID (integer) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2021 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2022 | 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
|
2023 | self.sendJsonCommand("RequestForkTo", {}) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2024 | self.eventLoop(True) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2025 | pid = DebugClientOrigFork() |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2026 | if pid == 0: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2027 | # child |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2028 | if not self.fork_child: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2029 | sys.settrace(None) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2030 | sys.setprofile(None) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2031 | self.sessionClose(0) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2032 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2033 | # parent |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2034 | if self.fork_child: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2035 | sys.settrace(None) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2036 | sys.setprofile(None) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2037 | self.sessionClose(0) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2038 | return pid |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2039 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2040 | def close(self, fd): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2041 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
2042 | 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
|
2043 | os.close(). |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2044 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2045 | It prevents the debugger connections from being closed. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2046 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2047 | @param fd file descriptor to be closed (integer) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2048 | """ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2049 | 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
|
2050 | self.errorstream.fileno()]: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2051 | return |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2052 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2053 | 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
|
2054 | |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2055 | 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
|
2056 | """ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
935
diff
changeset
|
2057 | 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
|
2058 | environment variable. |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2059 | |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2060 | @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
|
2061 | @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
|
2062 | """ |
2987
c99695c0f13a
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2953
diff
changeset
|
2063 | 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
|
2064 | .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
|
2065 | 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
|
2066 | 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
|
2067 | sysPath.remove("") |
015c7e35bd84
Added code to use the PYTHONPATH environment setting in the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
13
diff
changeset
|
2068 | 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
|
2069 | 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
|
2070 | 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
|
2071 | |
2c0ea0163ef4
Marked the Python2 debugger client files with the new eflag: marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
126
diff
changeset
|
2072 | # |
2c0ea0163ef4
Marked the Python2 debugger client files with the new eflag: marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
126
diff
changeset
|
2073 | # 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
|
2074 | # eflag: noqa = M601, M702 |