Tue, 02 Mar 2021 17:17:09 +0100
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 |