Documentation/Source/eric5.DebugClients.Python.DebugClientThreads.html

changeset 58
37f0444c3479
parent 21
b88a0e6268bd
child 409
0ea528e80202
equal deleted inserted replaced
57:81326a94fdca 58:37f0444c3479
20 </style> 20 </style>
21 </head> 21 </head>
22 <body><a NAME="top" ID="top"></a> 22 <body><a NAME="top" ID="top"></a>
23 <h1>eric5.DebugClients.Python.DebugClientThreads</h1> 23 <h1>eric5.DebugClients.Python.DebugClientThreads</h1>
24 <p> 24 <p>
25 &#77;&#111;&#100;&#117;&#108;&#101; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#116;&#104;&#101; &#109;&#117;&#108;&#116;&#105;&#116;&#104;&#114;&#101;&#97;&#100;&#101;&#100; v&#101;&#114;&#115;&#105;&#111;&#110; &#111;&#102; &#116;&#104;&#101; &#100;&#101;&#98;&#117;&#103; &#99;&#108;&#105;&#101;&#110;&#116;. 25 Module implementing the multithreaded version of the debug client.
26 </p> 26 </p>
27 <h3>Global Attributes</h3> 27 <h3>Global Attributes</h3>
28 <table> 28 <table>
29 <tr><td>_original_start_thread</td></tr> 29 <tr><td>_original_start_thread</td></tr>
30 </table> 30 </table>
31 <h3>Classes</h3> 31 <h3>Classes</h3>
32 <table> 32 <table>
33 <tr> 33 <tr>
34 <td><a href="#DebugClientThreads">DebugClientThreads</a></td> 34 <td><a href="#DebugClientThreads">DebugClientThreads</a></td>
35 <td>&#67;&#108;&#97;&#115;&#115; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#116;&#104;&#101; &#99;&#108;&#105;&#101;&#110;&#116; &#115;&#105;&#100;&#101; &#111;&#102; &#116;&#104;&#101; &#100;&#101;&#98;&#117;&#103;&#103;&#101;&#114;.</td> 35 <td>Class implementing the client side of the debugger.</td>
36 </tr> 36 </tr>
37 </table> 37 </table>
38 <h3>Functions</h3> 38 <h3>Functions</h3>
39 <table> 39 <table>
40 <tr> 40 <tr>
41 <td><a href="#_debugclient_start_new_thread">_debugclient_start_new_thread</a></td> 41 <td><a href="#_debugclient_start_new_thread">_debugclient_start_new_thread</a></td>
42 <td>&#77;&#111;&#100;&#117;&#108;&#101; &#102;&#117;&#110;&#99;&#116;&#105;&#111;&#110; &#117;&#115;&#101;&#100; &#116;&#111; &#97;&#108;&#108;&#111;w &#102;&#111;&#114; &#100;&#101;&#98;&#117;&#103;&#103;&#105;&#110;&#103; &#111;&#102; &#109;&#117;&#108;&#116;&#105;&#112;&#108;&#101; &#116;&#104;&#114;&#101;&#97;&#100;&#115;.</td> 42 <td>Module function used to allow for debugging of multiple threads.</td>
43 </tr> 43 </tr>
44 </table> 44 </table>
45 <hr /><hr /> 45 <hr /><hr />
46 <a NAME="DebugClientThreads" ID="DebugClientThreads"></a> 46 <a NAME="DebugClientThreads" ID="DebugClientThreads"></a>
47 <h2>DebugClientThreads</h2> 47 <h2>DebugClientThreads</h2>
48 <p> 48 <p>
49 &#67;&#108;&#97;&#115;&#115; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#116;&#104;&#101; &#99;&#108;&#105;&#101;&#110;&#116; &#115;&#105;&#100;&#101; &#111;&#102; &#116;&#104;&#101; &#100;&#101;&#98;&#117;&#103;&#103;&#101;&#114;. 49 Class implementing the client side of the debugger.
50 </p><p> 50 </p><p>
51 &#84;&#104;&#105;&#115; v&#97;&#114;&#105;&#97;&#110;&#116; &#111;&#102; &#116;&#104;&#101; &#100;&#101;&#98;&#117;&#103;&#103;&#101;&#114; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#115; &#97; &#116;&#104;&#114;&#101;&#97;&#100;&#101;&#100; &#100;&#101;&#98;&#117;&#103;&#103;&#101;&#114; &#99;&#108;&#105;&#101;&#110;&#116; 51 This variant of the debugger implements a threaded debugger client
52 &#98;y &#115;&#117;&#98;&#99;&#108;&#97;&#115;&#115;&#105;&#110;&#103; &#97;&#108;&#108; &#114;&#101;&#108;&#101;v&#97;&#110;&#116; &#98;&#97;&#115;&#101; &#99;&#108;&#97;&#115;&#115;&#101;&#115;. 52 by subclassing all relevant base classes.
53 </p> 53 </p>
54 <h3>Derived from</h3> 54 <h3>Derived from</h3>
55 DebugClientBase.DebugClientBase, AsyncIO 55 DebugClientBase.DebugClientBase, AsyncIO
56 <h3>Class Attributes</h3> 56 <h3>Class Attributes</h3>
57 <table> 57 <table>
59 </table> 59 </table>
60 <h3>Methods</h3> 60 <h3>Methods</h3>
61 <table> 61 <table>
62 <tr> 62 <tr>
63 <td><a href="#DebugClientThreads.__init__">DebugClientThreads</a></td> 63 <td><a href="#DebugClientThreads.__init__">DebugClientThreads</a></td>
64 <td>&#67;&#111;&#110;&#115;&#116;&#114;&#117;&#99;&#116;&#111;&#114;</td> 64 <td>Constructor</td>
65 </tr><tr> 65 </tr><tr>
66 <td><a href="#DebugClientThreads.attachThread">attachThread</a></td> 66 <td><a href="#DebugClientThreads.attachThread">attachThread</a></td>
67 <td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#115;&#101;&#116;&#117;&#112; &#97; &#116;&#104;&#114;&#101;&#97;&#100; &#102;&#111;&#114; &#68;&#101;&#98;&#117;&#103;&#67;&#108;&#105;&#101;&#110;&#116; &#116;&#111; &#100;&#101;&#98;&#117;&#103;.</td> 67 <td>Public method to setup a thread for DebugClient to debug.</td>
68 </tr><tr> 68 </tr><tr>
69 <td><a href="#DebugClientThreads.eventLoop">eventLoop</a></td> 69 <td><a href="#DebugClientThreads.eventLoop">eventLoop</a></td>
70 <td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#111;&#117;&#114; &#101;v&#101;&#110;&#116; &#108;&#111;&#111;&#112;.</td> 70 <td>Public method implementing our event loop.</td>
71 </tr><tr> 71 </tr><tr>
72 <td><a href="#DebugClientThreads.lockClient">lockClient</a></td> 72 <td><a href="#DebugClientThreads.lockClient">lockClient</a></td>
73 <td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#97;&#99;&#113;&#117;&#105;&#114;&#101; &#116;&#104;&#101; &#108;&#111;&#99;&#107; &#102;&#111;&#114; &#116;&#104;&#105;&#115; &#99;&#108;&#105;&#101;&#110;&#116;.</td> 73 <td>Public method to acquire the lock for this client.</td>
74 </tr><tr> 74 </tr><tr>
75 <td><a href="#DebugClientThreads.setCurrentThread">setCurrentThread</a></td> 75 <td><a href="#DebugClientThreads.setCurrentThread">setCurrentThread</a></td>
76 <td>&#80;&#114;&#105;v&#97;&#116;&#101; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#115;&#101;&#116; &#116;&#104;&#101; &#99;&#117;&#114;&#114;&#101;&#110;&#116; &#116;&#104;&#114;&#101;&#97;&#100;.</td> 76 <td>Private method to set the current thread.</td>
77 </tr><tr> 77 </tr><tr>
78 <td><a href="#DebugClientThreads.set_quit">set_quit</a></td> 78 <td><a href="#DebugClientThreads.set_quit">set_quit</a></td>
79 <td>&#80;&#114;&#105;v&#97;&#116;&#101; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#100;&#111; &#97; '&#115;&#101;&#116; &#113;&#117;&#105;&#116;' &#111;&#110; &#97;&#108;&#108; &#116;&#104;&#114;&#101;&#97;&#100;&#115;.</td> 79 <td>Private method to do a 'set quit' on all threads.</td>
80 </tr><tr> 80 </tr><tr>
81 <td><a href="#DebugClientThreads.threadTerminated">threadTerminated</a></td> 81 <td><a href="#DebugClientThreads.threadTerminated">threadTerminated</a></td>
82 <td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#99;&#97;&#108;&#108;&#101;&#100; w&#104;&#101;&#110; &#97; &#68;&#101;&#98;&#117;&#103;&#84;&#104;&#114;&#101;&#97;&#100; &#104;&#97;&#115; &#101;x&#105;&#116;&#101;&#100;.</td> 82 <td>Public method called when a DebugThread has exited.</td>
83 </tr><tr> 83 </tr><tr>
84 <td><a href="#DebugClientThreads.unlockClient">unlockClient</a></td> 84 <td><a href="#DebugClientThreads.unlockClient">unlockClient</a></td>
85 <td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#114;&#101;&#108;&#101;&#97;&#115;&#101; &#116;&#104;&#101; &#108;&#111;&#99;&#107; &#102;&#111;&#114; &#116;&#104;&#105;&#115; &#99;&#108;&#105;&#101;&#110;&#116;.</td> 85 <td>Public method to release the lock for this client.</td>
86 </tr> 86 </tr>
87 </table> 87 </table>
88 <a NAME="DebugClientThreads.__init__" ID="DebugClientThreads.__init__"></a> 88 <a NAME="DebugClientThreads.__init__" ID="DebugClientThreads.__init__"></a>
89 <h4>DebugClientThreads (Constructor)</h4> 89 <h4>DebugClientThreads (Constructor)</h4>
90 <b>DebugClientThreads</b>(<i></i>) 90 <b>DebugClientThreads</b>(<i></i>)
91 <p> 91 <p>
92 &#67;&#111;&#110;&#115;&#116;&#114;&#117;&#99;&#116;&#111;&#114; 92 Constructor
93 </p><a NAME="DebugClientThreads.attachThread" ID="DebugClientThreads.attachThread"></a> 93 </p><a NAME="DebugClientThreads.attachThread" ID="DebugClientThreads.attachThread"></a>
94 <h4>DebugClientThreads.attachThread</h4> 94 <h4>DebugClientThreads.attachThread</h4>
95 <b>attachThread</b>(<i>target = None, args = None, kwargs = None, mainThread = 0</i>) 95 <b>attachThread</b>(<i>target = None, args = None, kwargs = None, mainThread = 0</i>)
96 <p> 96 <p>
97 &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#115;&#101;&#116;&#117;&#112; &#97; &#116;&#104;&#114;&#101;&#97;&#100; &#102;&#111;&#114; &#68;&#101;&#98;&#117;&#103;&#67;&#108;&#105;&#101;&#110;&#116; &#116;&#111; &#100;&#101;&#98;&#117;&#103;. 97 Public method to setup a thread for DebugClient to debug.
98 </p><p> 98 </p><p>
99 &#73;&#102; &#109;&#97;&#105;&#110;&#84;&#104;&#114;&#101;&#97;&#100; &#105;&#115; &#110;&#111;&#110;-z&#101;&#114;&#111;, &#116;&#104;&#101;&#110; w&#101; &#97;&#114;&#101; &#97;&#116;&#116;&#97;&#99;&#104;&#105;&#110;&#103; &#116;&#111; &#116;&#104;&#101; &#97;&#108;&#114;&#101;&#97;&#100;y 99 If mainThread is non-zero, then we are attaching to the already
100 &#115;&#116;&#97;&#114;&#116;&#101;&#100; &#109;&#97;&#105;&#110;&#116;&#104;&#114;&#101;&#97;&#100; &#111;&#102; &#116;&#104;&#101; &#97;&#112;&#112; &#97;&#110;&#100; &#116;&#104;&#101; &#114;&#101;&#115;&#116; &#111;&#102; &#116;&#104;&#101; &#97;&#114;&#103;&#115; &#97;&#114;&#101; &#105;&#103;&#110;&#111;&#114;&#101;&#100;. 100 started mainthread of the app and the rest of the args are ignored.
101 </p><dl> 101 </p><dl>
102 <dt><i>target</i></dt> 102 <dt><i>target</i></dt>
103 <dd> 103 <dd>
104 &#116;&#104;&#101; &#115;&#116;&#97;&#114;&#116; &#102;&#117;&#110;&#99;&#116;&#105;&#111;&#110; &#111;&#102; &#116;&#104;&#101; &#116;&#97;&#114;&#103;&#101;&#116; &#116;&#104;&#114;&#101;&#97;&#100; (&#105;.&#101;. &#116;&#104;&#101; &#117;&#115;&#101;&#114; &#99;&#111;&#100;&#101;) 104 the start function of the target thread (i.e. the user code)
105 </dd><dt><i>args</i></dt> 105 </dd><dt><i>args</i></dt>
106 <dd> 106 <dd>
107 &#97;&#114;&#103;&#117;&#109;&#101;&#110;&#116;&#115; &#116;&#111; &#112;&#97;&#115;&#115; &#116;&#111; &#116;&#97;&#114;&#103;&#101;&#116; 107 arguments to pass to target
108 </dd><dt><i>kwargs</i></dt> 108 </dd><dt><i>kwargs</i></dt>
109 <dd> 109 <dd>
110 &#107;&#101;yw&#111;&#114;&#100; &#97;&#114;&#103;&#117;&#109;&#101;&#110;&#116;&#115; &#116;&#111; &#112;&#97;&#115;&#115; &#116;&#111; &#116;&#97;&#114;&#103;&#101;&#116; 110 keyword arguments to pass to target
111 </dd><dt><i>mainThread</i></dt> 111 </dd><dt><i>mainThread</i></dt>
112 <dd> 112 <dd>
113 &#110;&#111;&#110;-z&#101;&#114;&#111;, &#105;&#102; w&#101; &#97;&#114;&#101; &#97;&#116;&#116;&#97;&#99;&#104;&#105;&#110;&#103; &#116;&#111; &#116;&#104;&#101; &#97;&#108;&#114;&#101;&#97;&#100;y 113 non-zero, if we are attaching to the already
114 &#115;&#116;&#97;&#114;&#116;&#101;&#100; &#109;&#97;&#105;&#110;&#116;&#104;&#114;&#101;&#97;&#100; &#111;&#102; &#116;&#104;&#101; &#97;&#112;&#112; 114 started mainthread of the app
115 </dd> 115 </dd>
116 </dl><dl> 116 </dl><dl>
117 <dt>Returns:</dt> 117 <dt>Returns:</dt>
118 <dd> 118 <dd>
119 &#84;&#104;&#101; &#105;&#100;&#101;&#110;&#116;&#105;&#102;&#105;&#101;&#114; &#111;&#102; &#116;&#104;&#101; &#99;&#114;&#101;&#97;&#116;&#101;&#100; &#116;&#104;&#114;&#101;&#97;&#100; 119 The identifier of the created thread
120 </dd> 120 </dd>
121 </dl><a NAME="DebugClientThreads.eventLoop" ID="DebugClientThreads.eventLoop"></a> 121 </dl><a NAME="DebugClientThreads.eventLoop" ID="DebugClientThreads.eventLoop"></a>
122 <h4>DebugClientThreads.eventLoop</h4> 122 <h4>DebugClientThreads.eventLoop</h4>
123 <b>eventLoop</b>(<i>disablePolling = False</i>) 123 <b>eventLoop</b>(<i>disablePolling = False</i>)
124 <p> 124 <p>
125 &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#111;&#117;&#114; &#101;v&#101;&#110;&#116; &#108;&#111;&#111;&#112;. 125 Public method implementing our event loop.
126 </p><dl> 126 </p><dl>
127 <dt><i>disablePolling</i></dt> 127 <dt><i>disablePolling</i></dt>
128 <dd> 128 <dd>
129 &#102;&#108;&#97;&#103; &#105;&#110;&#100;&#105;&#99;&#97;&#116;&#105;&#110;&#103; &#116;&#111; &#101;&#110;&#116;&#101;&#114; &#97;&#110; &#101;v&#101;&#110;&#116; &#108;&#111;&#111;&#112; w&#105;&#116;&#104; 129 flag indicating to enter an event loop with
130 &#112;&#111;&#108;&#108;&#105;&#110;&#103; &#100;&#105;&#115;&#97;&#98;&#108;&#101;&#100; (&#98;&#111;&#111;&#108;&#101;&#97;&#110;) 130 polling disabled (boolean)
131 </dd> 131 </dd>
132 </dl><a NAME="DebugClientThreads.lockClient" ID="DebugClientThreads.lockClient"></a> 132 </dl><a NAME="DebugClientThreads.lockClient" ID="DebugClientThreads.lockClient"></a>
133 <h4>DebugClientThreads.lockClient</h4> 133 <h4>DebugClientThreads.lockClient</h4>
134 <b>lockClient</b>(<i>blocking = 1</i>) 134 <b>lockClient</b>(<i>blocking = 1</i>)
135 <p> 135 <p>
136 &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#97;&#99;&#113;&#117;&#105;&#114;&#101; &#116;&#104;&#101; &#108;&#111;&#99;&#107; &#102;&#111;&#114; &#116;&#104;&#105;&#115; &#99;&#108;&#105;&#101;&#110;&#116;. 136 Public method to acquire the lock for this client.
137 </p><dl> 137 </p><dl>
138 <dt><i>blocking</i></dt> 138 <dt><i>blocking</i></dt>
139 <dd> 139 <dd>
140 &#102;&#108;&#97;&#103; &#116;&#111; &#105;&#110;&#100;&#105;&#99;&#97;&#116;&#105;&#110;&#103; &#97; &#98;&#108;&#111;&#99;&#107;&#105;&#110;&#103; &#108;&#111;&#99;&#107; 140 flag to indicating a blocking lock
141 </dd> 141 </dd>
142 </dl><dl> 142 </dl><dl>
143 <dt>Returns:</dt> 143 <dt>Returns:</dt>
144 <dd> 144 <dd>
145 &#102;&#108;&#97;&#103; &#105;&#110;&#100;&#105;&#99;&#97;&#116;&#105;&#110;&#103; &#115;&#117;&#99;&#99;&#101;&#115;&#115;&#102;&#117;&#108; &#108;&#111;&#99;&#107;&#105;&#110;&#103; 145 flag indicating successful locking
146 </dd> 146 </dd>
147 </dl><a NAME="DebugClientThreads.setCurrentThread" ID="DebugClientThreads.setCurrentThread"></a> 147 </dl><a NAME="DebugClientThreads.setCurrentThread" ID="DebugClientThreads.setCurrentThread"></a>
148 <h4>DebugClientThreads.setCurrentThread</h4> 148 <h4>DebugClientThreads.setCurrentThread</h4>
149 <b>setCurrentThread</b>(<i>id</i>) 149 <b>setCurrentThread</b>(<i>id</i>)
150 <p> 150 <p>
151 &#80;&#114;&#105;v&#97;&#116;&#101; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#115;&#101;&#116; &#116;&#104;&#101; &#99;&#117;&#114;&#114;&#101;&#110;&#116; &#116;&#104;&#114;&#101;&#97;&#100;. 151 Private method to set the current thread.
152 </p><dl> 152 </p><dl>
153 <dt><i>id</i></dt> 153 <dt><i>id</i></dt>
154 <dd> 154 <dd>
155 &#116;&#104;&#101; &#105;&#100; &#116;&#104;&#101; &#99;&#117;&#114;&#114;&#101;&#110;&#116; &#116;&#104;&#114;&#101;&#97;&#100; &#115;&#104;&#111;&#117;&#108;&#100; &#98;&#101; &#115;&#101;&#116; &#116;&#111;. 155 the id the current thread should be set to.
156 </dd> 156 </dd>
157 </dl><a NAME="DebugClientThreads.set_quit" ID="DebugClientThreads.set_quit"></a> 157 </dl><a NAME="DebugClientThreads.set_quit" ID="DebugClientThreads.set_quit"></a>
158 <h4>DebugClientThreads.set_quit</h4> 158 <h4>DebugClientThreads.set_quit</h4>
159 <b>set_quit</b>(<i></i>) 159 <b>set_quit</b>(<i></i>)
160 <p> 160 <p>
161 &#80;&#114;&#105;v&#97;&#116;&#101; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#100;&#111; &#97; '&#115;&#101;&#116; &#113;&#117;&#105;&#116;' &#111;&#110; &#97;&#108;&#108; &#116;&#104;&#114;&#101;&#97;&#100;&#115;. 161 Private method to do a 'set quit' on all threads.
162 </p><a NAME="DebugClientThreads.threadTerminated" ID="DebugClientThreads.threadTerminated"></a> 162 </p><a NAME="DebugClientThreads.threadTerminated" ID="DebugClientThreads.threadTerminated"></a>
163 <h4>DebugClientThreads.threadTerminated</h4> 163 <h4>DebugClientThreads.threadTerminated</h4>
164 <b>threadTerminated</b>(<i>dbgThread</i>) 164 <b>threadTerminated</b>(<i>dbgThread</i>)
165 <p> 165 <p>
166 &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#99;&#97;&#108;&#108;&#101;&#100; w&#104;&#101;&#110; &#97; &#68;&#101;&#98;&#117;&#103;&#84;&#104;&#114;&#101;&#97;&#100; &#104;&#97;&#115; &#101;x&#105;&#116;&#101;&#100;. 166 Public method called when a DebugThread has exited.
167 </p><dl> 167 </p><dl>
168 <dt><i>dbgThread</i></dt> 168 <dt><i>dbgThread</i></dt>
169 <dd> 169 <dd>
170 &#116;&#104;&#101; &#68;&#101;&#98;&#117;&#103;&#84;&#104;&#114;&#101;&#97;&#100; &#116;&#104;&#97;&#116; &#104;&#97;&#115; &#101;x&#105;&#116;&#101;&#100; 170 the DebugThread that has exited
171 </dd> 171 </dd>
172 </dl><a NAME="DebugClientThreads.unlockClient" ID="DebugClientThreads.unlockClient"></a> 172 </dl><a NAME="DebugClientThreads.unlockClient" ID="DebugClientThreads.unlockClient"></a>
173 <h4>DebugClientThreads.unlockClient</h4> 173 <h4>DebugClientThreads.unlockClient</h4>
174 <b>unlockClient</b>(<i></i>) 174 <b>unlockClient</b>(<i></i>)
175 <p> 175 <p>
176 &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#114;&#101;&#108;&#101;&#97;&#115;&#101; &#116;&#104;&#101; &#108;&#111;&#99;&#107; &#102;&#111;&#114; &#116;&#104;&#105;&#115; &#99;&#108;&#105;&#101;&#110;&#116;. 176 Public method to release the lock for this client.
177 </p> 177 </p>
178 <div align="right"><a href="#top">Up</a></div> 178 <div align="right"><a href="#top">Up</a></div>
179 <hr /><hr /> 179 <hr /><hr />
180 <a NAME="_debugclient_start_new_thread" ID="_debugclient_start_new_thread"></a> 180 <a NAME="_debugclient_start_new_thread" ID="_debugclient_start_new_thread"></a>
181 <h2>_debugclient_start_new_thread</h2> 181 <h2>_debugclient_start_new_thread</h2>
182 <b>_debugclient_start_new_thread</b>(<i>target, args, kwargs={}</i>) 182 <b>_debugclient_start_new_thread</b>(<i>target, args, kwargs={}</i>)
183 <p> 183 <p>
184 &#77;&#111;&#100;&#117;&#108;&#101; &#102;&#117;&#110;&#99;&#116;&#105;&#111;&#110; &#117;&#115;&#101;&#100; &#116;&#111; &#97;&#108;&#108;&#111;w &#102;&#111;&#114; &#100;&#101;&#98;&#117;&#103;&#103;&#105;&#110;&#103; &#111;&#102; &#109;&#117;&#108;&#116;&#105;&#112;&#108;&#101; &#116;&#104;&#114;&#101;&#97;&#100;&#115;. 184 Module function used to allow for debugging of multiple threads.
185 </p><p> 185 </p><p>
186 &#84;&#104;&#101; w&#97;y &#105;&#116; w&#111;&#114;&#107;&#115; &#105;&#115; &#116;&#104;&#97;&#116; &#98;&#101;&#108;&#111;w, w&#101; &#114;&#101;&#115;&#101;&#116; &#116;&#104;&#114;&#101;&#97;&#100;.&#95;&#115;&#116;&#97;&#114;&#116;&#95;&#110;&#101;w&#95;&#116;&#104;&#114;&#101;&#97;&#100; &#116;&#111; 186 The way it works is that below, we reset thread._start_new_thread to
187 &#116;&#104;&#105;&#115; &#102;&#117;&#110;&#99;&#116;&#105;&#111;&#110; &#111;&#98;&#106;&#101;&#99;&#116;. &#84;&#104;&#117;&#115;, &#112;&#114;&#111;v&#105;&#100;&#105;&#110;&#103; &#97; &#104;&#111;&#111;&#107; &#102;&#111;&#114; &#117;&#115; &#116;&#111; &#115;&#101;&#101; w&#104;&#101;&#110; 187 this function object. Thus, providing a hook for us to see when
188 &#116;&#104;&#114;&#101;&#97;&#100;&#115; &#97;&#114;&#101; &#115;&#116;&#97;&#114;&#116;&#101;&#100;. &#70;&#114;&#111;&#109; &#104;&#101;&#114;&#101; w&#101; &#102;&#111;&#114;w&#97;&#114;&#100; &#116;&#104;&#101; &#114;&#101;&#113;&#117;&#101;&#115;&#116; &#111;&#110;&#116;&#111; &#116;&#104;&#101; 188 threads are started. From here we forward the request onto the
189 &#68;&#101;&#98;&#117;&#103;&#67;&#108;&#105;&#101;&#110;&#116; w&#104;&#105;&#99;&#104; w&#105;&#108;&#108; &#99;&#114;&#101;&#97;&#116;&#101; &#97; &#68;&#101;&#98;&#117;&#103;&#84;&#104;&#114;&#101;&#97;&#100; &#111;&#98;&#106;&#101;&#99;&#116; &#116;&#111; &#97;&#108;&#108;&#111;w &#116;&#114;&#97;&#99;&#105;&#110;&#103; 189 DebugClient which will create a DebugThread object to allow tracing
190 &#111;&#102; &#116;&#104;&#101; &#116;&#104;&#114;&#101;&#97;&#100; &#116;&#104;&#101;&#110; &#115;&#116;&#97;&#114;&#116; &#117;&#112; &#116;&#104;&#101; &#116;&#104;&#114;&#101;&#97;&#100;. &#84;&#104;&#101;&#115;&#101; &#97;&#99;&#116;&#105;&#111;&#110;&#115; &#97;&#114;&#101; &#97;&#108;w&#97;y&#115; 190 of the thread then start up the thread. These actions are always
191 &#112;&#101;&#114;&#102;&#111;&#114;&#109;&#101;&#100; &#105;&#110; &#111;&#114;&#100;&#101;&#114; &#116;&#111; &#97;&#108;&#108;&#111;w &#100;&#114;&#111;&#112;&#112;&#105;&#110;&#103; &#105;&#110;&#116;&#111; &#100;&#101;&#98;&#117;&#103; &#109;&#111;&#100;&#101;. 191 performed in order to allow dropping into debug mode.
192 </p><p> 192 </p><p>
193 &#83;&#101;&#101; &#68;&#101;&#98;&#117;&#103;&#67;&#108;&#105;&#101;&#110;&#116;&#84;&#104;&#114;&#101;&#97;&#100;&#115;.&#97;&#116;&#116;&#97;&#99;&#104;&#84;&#104;&#114;&#101;&#97;&#100; &#97;&#110;&#100; &#68;&#101;&#98;&#117;&#103;&#84;&#104;&#114;&#101;&#97;&#100;.&#68;&#101;&#98;&#117;&#103;&#84;&#104;&#114;&#101;&#97;&#100; &#105;&#110; 193 See DebugClientThreads.attachThread and DebugThread.DebugThread in
194 &#68;&#101;&#98;&#117;&#103;&#84;&#104;&#114;&#101;&#97;&#100;.&#112;y 194 DebugThread.py
195 </p><dl> 195 </p><dl>
196 <dt><i>target</i></dt> 196 <dt><i>target</i></dt>
197 <dd> 197 <dd>
198 &#116;&#104;&#101; &#115;&#116;&#97;&#114;&#116; &#102;&#117;&#110;&#99;&#116;&#105;&#111;&#110; &#111;&#102; &#116;&#104;&#101; &#116;&#97;&#114;&#103;&#101;&#116; &#116;&#104;&#114;&#101;&#97;&#100; (&#105;.&#101;. &#116;&#104;&#101; &#117;&#115;&#101;&#114; &#99;&#111;&#100;&#101;) 198 the start function of the target thread (i.e. the user code)
199 </dd><dt><i>args</i></dt> 199 </dd><dt><i>args</i></dt>
200 <dd> 200 <dd>
201 &#97;&#114;&#103;&#117;&#109;&#101;&#110;&#116;&#115; &#116;&#111; &#112;&#97;&#115;&#115; &#116;&#111; &#116;&#97;&#114;&#103;&#101;&#116; 201 arguments to pass to target
202 </dd><dt><i>kwargs</i></dt> 202 </dd><dt><i>kwargs</i></dt>
203 <dd> 203 <dd>
204 &#107;&#101;yw&#111;&#114;&#100; &#97;&#114;&#103;&#117;&#109;&#101;&#110;&#116;&#115; &#116;&#111; &#112;&#97;&#115;&#115; &#116;&#111; &#116;&#97;&#114;&#103;&#101;&#116; 204 keyword arguments to pass to target
205 </dd> 205 </dd>
206 </dl><dl> 206 </dl><dl>
207 <dt>Returns:</dt> 207 <dt>Returns:</dt>
208 <dd> 208 <dd>
209 &#84;&#104;&#101; &#105;&#100;&#101;&#110;&#116;&#105;&#102;&#105;&#101;&#114; &#111;&#102; &#116;&#104;&#101; &#99;&#114;&#101;&#97;&#116;&#101;&#100; &#116;&#104;&#114;&#101;&#97;&#100; 209 The identifier of the created thread
210 </dd> 210 </dd>
211 </dl> 211 </dl>
212 <div align="right"><a href="#top">Up</a></div> 212 <div align="right"><a href="#top">Up</a></div>
213 <hr /> 213 <hr />
214 </body></html> 214 </body></html>

eric ide

mercurial