10 import sys |
10 import sys |
11 import importlib |
11 import importlib |
12 |
12 |
13 from QProcessExtension import patchQProcess |
13 from QProcessExtension import patchQProcess |
14 from SubprocessExtension import patchSubprocess |
14 from SubprocessExtension import patchSubprocess |
|
15 from MultiprocessingExtension import patchMultiprocessing |
15 |
16 |
16 |
17 |
17 class ModuleLoader(object): |
18 class ModuleLoader(object): |
18 """ |
19 """ |
19 Class implementing an import hook patching modules to support debugging. |
20 Class implementing an import hook patching modules to support debugging. |
36 |
37 |
37 self.__modulesToPatch = ( |
38 self.__modulesToPatch = ( |
38 'thread', '_thread', 'threading', |
39 'thread', '_thread', 'threading', |
39 'greenlet', |
40 'greenlet', |
40 'subprocess', |
41 'subprocess', |
|
42 'multiprocessing', |
41 'PyQt4.QtCore', 'PyQt5.QtCore', |
43 'PyQt4.QtCore', 'PyQt5.QtCore', |
42 'PySide.QtCore', 'PySide2.QtCore', |
44 'PySide.QtCore', 'PySide2.QtCore', |
43 ) |
45 ) |
44 |
46 |
45 sys.meta_path.insert(0, self) |
47 sys.meta_path.insert(0, self) |
85 fullname == 'subprocess' and |
87 fullname == 'subprocess' and |
86 not hasattr(module, 'eric6_patched') |
88 not hasattr(module, 'eric6_patched') |
87 ): |
89 ): |
88 module.eric6_patched = True |
90 module.eric6_patched = True |
89 patchSubprocess(module, self.__dbgClient) |
91 patchSubprocess(module, self.__dbgClient) |
90 |
92 |
|
93 ## Add hook for multiprocessing.Process |
|
94 elif ( |
|
95 fullname == 'multiprocessing' and |
|
96 not hasattr(module, 'eric6_patched') |
|
97 ): |
|
98 module.eric6_patched = True |
|
99 patchMultiprocessing(module, self.__dbgClient) |
|
100 |
91 ## Add hook for *.QThread and *.QProcess |
101 ## Add hook for *.QThread and *.QProcess |
92 elif ( |
102 elif ( |
93 fullname in ('PyQt4.QtCore', 'PyQt5.QtCore', |
103 fullname in ('PyQt4.QtCore', 'PyQt5.QtCore', |
94 'PySide.QtCore', 'PySide2.QtCore') and |
104 'PySide.QtCore', 'PySide2.QtCore') and |
95 not hasattr(module, 'eric6_patched') |
105 not hasattr(module, 'eric6_patched') |