eric6/DebugClients/Python/MultiProcessDebugExtension.py

Tue, 02 Mar 2021 17:17:09 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 02 Mar 2021 17:17:09 +0100
changeset 8143
2c730d5fd177
parent 7973
e836d196e888
child 8222
5994b80b8760
permissions
-rw-r--r--

Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.

7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7887
diff changeset
3 # Copyright (c) 2002 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a function to patch the process creation functions to
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 support multiprocess debugging.
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
12 from DebugUtilities import (
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
13 patchArguments, patchArgumentStringWindows, isPythonProgram,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
14 isWindowsPlatform
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
15 )
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 _debugClient = None
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
20 def _shallPatch():
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
21 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
22 Function to determine, if the multiprocessing patches should be done.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
23
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
24 @return flag indicating patching should be performed
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
25 @rtype bool
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
26 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
27 return _debugClient.debugging and _debugClient.multiprocessSupport
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
28
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
29
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 def patchModule(module, functionName, createFunction):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Function to replace a function of a module with a modified one.
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param module reference to the module
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type types.ModuleType
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param functionName name of the function to be replaced
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @type str
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param createFunction function creating the replacement
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type types.FunctionType
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 if hasattr(module, functionName):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 originalName = 'original_' + functionName
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 if not hasattr(module, originalName):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 setattr(module, originalName, getattr(module, functionName))
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 setattr(module, functionName, createFunction(originalName))
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 def createExecl(originalName):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 Function to patch the 'execl' process creation functions.
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 <ul>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 <li>os.execl(path, arg0, arg1, ...)</li>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 <li>os.execle(path, arg0, arg1, ..., env)</li>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 <li>os.execlp(file, arg0, arg1, ...)</li>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 <li>os.execlpe(file, arg0, arg1, ..., env)</li>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 </ul>
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
58
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
59 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
60 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
61 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
62 @rtype function
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 def newExecl(path, *args):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 Function replacing the 'execl' functions of the os module.
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
68 import os
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
69 if _shallPatch():
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
70 args = patchArguments(_debugClient, args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
71 if isPythonProgram(args[0]):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
72 path = args[0]
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
73 return getattr(os, originalName)(path, *args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
74 return newExecl
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
75
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
76
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
77 def createExecv(originalName):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
78 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
79 Function to patch the 'execv' process creation functions.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
80
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
81 <ul>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
82 <li>os.execv(path, args)</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
83 <li>os.execvp(file, args)</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
84 </ul>
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
85
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
86 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
87 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
88 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
89 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
90 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
91 def newExecv(path, args):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
92 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
93 Function replacing the 'execv' functions of the os module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
94 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
95 import os
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
96 if _shallPatch():
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
97 args = patchArguments(_debugClient, args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
98 if isPythonProgram(args[0]):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
99 path = args[0]
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
100 return getattr(os, originalName)(path, args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
101 return newExecv
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
102
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
103
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
104 def createExecve(originalName):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
105 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
106 Function to patch the 'execve' process creation functions.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
107
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
108 <ul>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
109 <li>os.execve(path, args, env)</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
110 <li>os.execvpe(file, args, env)</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
111 </ul>
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
112
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
113 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
114 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
115 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
116 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
117 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
118 def newExecve(path, args, env):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
119 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
120 Function replacing the 'execve' functions of the os module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
121 """
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 import os
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
123 if _shallPatch():
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 args = patchArguments(_debugClient, args)
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 if isPythonProgram(args[0]):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 path = args[0]
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
127 return getattr(os, originalName)(path, args, env)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
128 return newExecve
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
129
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
130
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
131 def createSpawnl(originalName):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
132 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
133 Function to patch the 'spawnl' process creation functions.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
134
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
135 <ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
136 <li>os.spawnl(mode, path, arg0, arg1, ...)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
137 <li>os.spawnlp(mode, file, arg0, arg1, ...)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
138 </ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
139
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
140 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
141 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
142 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
143 @rtype function
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
144 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
145 def newSpawnl(mode, path, *args):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
146 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
147 Function replacing the 'spawnl' functions of the os module.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
148 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
149 import os
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
150 args = patchArguments(_debugClient, args)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
151 return getattr(os, originalName)(mode, path, *args)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
152 return newSpawnl
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
153
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
154
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
155 def createSpawnv(originalName):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
156 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
157 Function to patch the 'spawnv' process creation functions.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
158
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
159 <ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
160 <li>os.spawnv(mode, path, args)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
161 <li>os.spawnvp(mode, file, args)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
162 </ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
163
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
164 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
165 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
166 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
167 @rtype function
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
168 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
169 def newSpawnv(mode, path, args):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
170 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
171 Function replacing the 'spawnv' functions of the os module.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
172 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
173 import os
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
174 args = patchArguments(_debugClient, args)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
175 return getattr(os, originalName)(mode, path, args)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
176 return newSpawnv
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
177
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
178
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
179 def createSpawnve(originalName):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
180 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
181 Function to patch the 'spawnve' process creation functions.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
182
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
183 <ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
184 <li>os.spawnve(mode, path, args, env)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
185 <li>os.spawnvpe(mode, file, args, env)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
186 </ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
187
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
188 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
189 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
190 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
191 @rtype function
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
192 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
193 def newSpawnve(mode, path, args, env):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
194 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
195 Function replacing the 'spawnve' functions of the os module.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
196 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
197 import os
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
198 args = patchArguments(_debugClient, args)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
199 return getattr(os, originalName)(mode, path, args, env)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
200 return newSpawnve
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
201
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
202
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
203 def createPosixSpawn(originalName):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
204 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
205 Function to patch the 'posix_spawn' process creation functions.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
206
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
207 <ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
208 <li>os.posix_spawn(path, argv, env, *, file_actions=None, ...
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
209 (6 more))</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
210 <li>os.posix_spawnp(path, argv, env, *, file_actions=None, ...
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
211 (6 more))</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
212 </ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
213
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
214 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
215 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
216 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
217 @rtype function
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
218 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
219 def newPosixSpawn(path, argv, env, **kwargs):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
220 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
221 Function replacing the 'posix_spawn' functions of the os module.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
222 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
223 import os
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
224 argv = patchArguments(_debugClient, argv)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
225 return getattr(os, originalName)(path, argv, env, **kwargs)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
226 return newPosixSpawn
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
227
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
228
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
229 def createForkExec(originalName):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
230 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
231 Function to patch the 'fork_exec' process creation functions.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
232
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
233 <ul>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
234 <li>_posixsubprocess.fork_exec(args, executable_list, close_fds,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
235 ... (13 more))</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
236 </ul>
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
237
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
238 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
239 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
240 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
241 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
242 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
243 def newForkExec(args, *other_args):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
244 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
245 Function replacing the 'fork_exec' functions of the _posixsubprocess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
246 module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
247 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
248 import _posixsubprocess
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
249 if _shallPatch():
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
250 args = patchArguments(_debugClient, args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
251 return getattr(_posixsubprocess, originalName)(args, *other_args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
252 return newForkExec
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
253
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
254
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
255 def createFork(originalName):
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
256 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
257 Function to patch the 'fork' process creation functions.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
258
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
259 <ul>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
260 <li>os.fork()</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
261 </ul>
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
262
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
263 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
264 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
265 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
266 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
267 """
7877
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
268 def newFork():
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
269 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
270 Function replacing the 'fork' function of the os module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
271 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
272 import os
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
273 import sys
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
274
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
275 # A simple fork will result in a new python process
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
276 isNewPythonProcess = True
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
277 frame = sys._getframe()
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
278
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
279 multiprocess = _shallPatch()
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
280
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
281 isSubprocessFork = False
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
282 isMultiprocessingPopen = False
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
283 while frame is not None:
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
284 if frame.f_code.co_name == "_Popen":
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
285 # fork() was called from multiprocessing; ignore this here
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
286 # because it is handled in 'MultiprocessingExtension.py'.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
287 isMultiprocessingPopen = True
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
288 break
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
289
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
290 elif (
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
291 frame.f_code.co_name == '_execute_child' and
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
292 'subprocess' in frame.f_code.co_filename
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
293 ):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
294 isSubprocessFork = True
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
295 # If we're actually in subprocess.Popen creating a child, it
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
296 # may result in something which is not a Python process, (so,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
297 # we don't want to connect with it in the forked version).
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
298 executable = frame.f_locals.get('executable')
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
299 if executable is not None:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
300 isNewPythonProcess = False
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
301 if isPythonProgram(executable):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
302 isNewPythonProcess = True
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
303 break
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
304
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
305 frame = frame.f_back
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
306 frame = None # Just make sure we don't hold on to it.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
307
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
308 childProcess = getattr(os, originalName)() # fork
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
309 if not childProcess and not isMultiprocessingPopen:
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
310 if isNewPythonProcess:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
311 (wd, host, port, exceptions, tracePython, redirect,
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
312 noencoding) = _debugClient.startOptions
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
313 _debugClient.startDebugger(
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
314 filename=sys.argv[0],
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
315 host=host,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
316 port=port,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
317 enableTrace=multiprocess and not isSubprocessFork,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
318 exceptions=exceptions,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
319 tracePython=tracePython,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
320 redirect=redirect,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
321 passive=False,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
322 multiprocessSupport=multiprocess)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
323 return childProcess
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
324
7877
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
325 return newFork
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
326
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
327
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
328 def createCreateProcess(originalName):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
329 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
330 Function to patch the 'CreateProcess' process creation function of
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
331 Windows.
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
332
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
333 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
334 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
335 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
336 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
337 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
338 def newCreateProcess(appName, cmdline, *args):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
339 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
340 Function replacing the 'CreateProcess' function of the _subprocess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
341 or _winapi module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
342 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
343 try:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
344 import _subprocess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
345 except ImportError:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
346 import _winapi as _subprocess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
347 return getattr(_subprocess, originalName)(
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
348 appName, patchArgumentStringWindows(_debugClient, cmdline), *args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
349 return newCreateProcess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
350
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
351
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 def patchNewProcessFunctions(multiprocessEnabled, debugClient):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 Function to patch the process creation functions to support multiprocess
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 debugging.
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 @param multiprocessEnabled flag indicating multiprocess support
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 @type bool
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 @param debugClient reference to the debug client object
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 @type DebugClient
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 global _debugClient
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 if not multiprocessEnabled:
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 # return without patching
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 return
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 import os
7877
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
369 import sys
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 # patch 'os.exec...()' functions
7973
e836d196e888 Fixed some code style issues detected by the upgraded eradicate.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
372 #- patchModule(os, "execl", createExecl)
e836d196e888 Fixed some code style issues detected by the upgraded eradicate.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
373 #- patchModule(os, "execle", createExecl)
e836d196e888 Fixed some code style issues detected by the upgraded eradicate.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
374 #- patchModule(os, "execlp", createExecl)
e836d196e888 Fixed some code style issues detected by the upgraded eradicate.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
375 #- patchModule(os, "execlpe", createExecl)
e836d196e888 Fixed some code style issues detected by the upgraded eradicate.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
376 #- patchModule(os, "execv", createExecv)
e836d196e888 Fixed some code style issues detected by the upgraded eradicate.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
377 #- patchModule(os, "execve", createExecve)
e836d196e888 Fixed some code style issues detected by the upgraded eradicate.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
378 #- patchModule(os, "execvp", createExecv)
e836d196e888 Fixed some code style issues detected by the upgraded eradicate.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
379 #- patchModule(os, "execvpe", createExecve)
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
381 # patch 'os.spawn...()' functions
7877
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
382 patchModule(os, "spawnl", createSpawnl)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
383 patchModule(os, "spawnle", createSpawnl)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
384 patchModule(os, "spawnlp", createSpawnl)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
385 patchModule(os, "spawnlpe", createSpawnl)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
386 patchModule(os, "spawnv", createSpawnv)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
387 patchModule(os, "spawnve", createSpawnve)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
388 patchModule(os, "spawnvp", createSpawnv)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
389 patchModule(os, "spawnvpe", createSpawnve)
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
390
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
391 # patch 'os.posix_spawn...()' functions
7877
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
392 if sys.version_info >= (3, 8) and not isWindowsPlatform():
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
393 patchModule(os, "posix_spawn", createPosixSpawn)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
394 patchModule(os, "posix_spawnp", createPosixSpawn)
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
396 if isWindowsPlatform():
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
397 try:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
398 import _subprocess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
399 except ImportError:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
400 import _winapi as _subprocess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
401 patchModule(_subprocess, 'CreateProcess', createCreateProcess)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
402 else:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
403 patchModule(os, "fork", createFork)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
404 try:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
405 import _posixsubprocess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
406 patchModule(_posixsubprocess, "fork_exec", createForkExec)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
407 except ImportError:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
408 pass
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
409
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 _debugClient = debugClient

eric ide

mercurial