diff -r 892c1787d666 -r edde1fe80b3e Documentation/Source/eric5.DebugClients.Python3.DebugClientThreads.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.DebugClients.Python3.DebugClientThreads.html Sat Jan 02 18:19:35 2010 +0000 @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' +'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> +<html><head> +<title>eric5.DebugClients.Python3.DebugClientThreads</title> +<style> +b'body {\n background:white;\n margin: 0em 1em 10em 1em;\n color: black;\n}\n\nh1 { color: white; background: #4FA4FF; }\nh2 { color: white; background: #4FA4FF; }\nh3 { color: white; background: #00557F; }\nh4 { color: white; background: #00557F; }\n \na { color: #AA5500; }\n' +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric5.DebugClients.Python3.DebugClientThreads</h1> +<p> +Module implementing the multithreaded version of the debug client. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>_original_start_thread</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#DebugClientThreads">DebugClientThreads</a></td> +<td>Class implementing the client side of the debugger.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr> +<td><a href="#_debugclient_start_new_thread">_debugclient_start_new_thread</a></td> +<td>Module function used to allow for debugging of multiple threads.</td> +</tr> +</table> +<hr /><hr /> +<a NAME="DebugClientThreads" ID="DebugClientThreads"></a> +<h2>DebugClientThreads</h2> +<p> + Class implementing the client side of the debugger. +</p><p> + This variant of the debugger implements a threaded debugger client + by subclassing all relevant base classes. +</p> +<h3>Derived from</h3> +DebugClientBase.DebugClientBase, AsyncIO +<h3>Class Attributes</h3> +<table> +<tr><td>debugClient</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#DebugClientThreads.__init__">DebugClientThreads</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#DebugClientThreads.attachThread">attachThread</a></td> +<td>Public method to setup a thread for DebugClient to debug.</td> +</tr><tr> +<td><a href="#DebugClientThreads.eventLoop">eventLoop</a></td> +<td>Public method implementing our event loop.</td> +</tr><tr> +<td><a href="#DebugClientThreads.lockClient">lockClient</a></td> +<td>Public method to acquire the lock for this client.</td> +</tr><tr> +<td><a href="#DebugClientThreads.setCurrentThread">setCurrentThread</a></td> +<td>Private method to set the current thread.</td> +</tr><tr> +<td><a href="#DebugClientThreads.set_quit">set_quit</a></td> +<td>Private method to do a 'set quit' on all threads.</td> +</tr><tr> +<td><a href="#DebugClientThreads.threadTerminated">threadTerminated</a></td> +<td>Public method called when a DebugThread has exited.</td> +</tr><tr> +<td><a href="#DebugClientThreads.unlockClient">unlockClient</a></td> +<td>Public method to release the lock for this client.</td> +</tr> +</table> +<a NAME="DebugClientThreads.__init__" ID="DebugClientThreads.__init__"></a> +<h4>DebugClientThreads (Constructor)</h4> +<b>DebugClientThreads</b>(<i></i>) +<p> + Constructor +</p><a NAME="DebugClientThreads.attachThread" ID="DebugClientThreads.attachThread"></a> +<h4>DebugClientThreads.attachThread</h4> +<b>attachThread</b>(<i>target = None, args = None, kwargs = None, mainThread = False</i>) +<p> + Public method to setup a thread for DebugClient to debug. +</p><p> + If mainThread is non-zero, then we are attaching to the already + started mainthread of the app and the rest of the args are ignored. +</p><dl> +<dt><i>target</i></dt> +<dd> +the start function of the target thread (i.e. the user code) +</dd><dt><i>args</i></dt> +<dd> +arguments to pass to target +</dd><dt><i>kwargs</i></dt> +<dd> +keyword arguments to pass to target +</dd><dt><i>mainThread</i></dt> +<dd> +True, if we are attaching to the already + started mainthread of the app +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +identifier of the created thread +</dd> +</dl><a NAME="DebugClientThreads.eventLoop" ID="DebugClientThreads.eventLoop"></a> +<h4>DebugClientThreads.eventLoop</h4> +<b>eventLoop</b>(<i>disablePolling = False</i>) +<p> + Public method implementing our event loop. +</p><dl> +<dt><i>disablePolling</i></dt> +<dd> +flag indicating to enter an event loop with + polling disabled (boolean) +</dd> +</dl><a NAME="DebugClientThreads.lockClient" ID="DebugClientThreads.lockClient"></a> +<h4>DebugClientThreads.lockClient</h4> +<b>lockClient</b>(<i>blocking = True</i>) +<p> + Public method to acquire the lock for this client. +</p><dl> +<dt><i>blocking</i></dt> +<dd> +flag to indicating a blocking lock +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating successful locking +</dd> +</dl><a NAME="DebugClientThreads.setCurrentThread" ID="DebugClientThreads.setCurrentThread"></a> +<h4>DebugClientThreads.setCurrentThread</h4> +<b>setCurrentThread</b>(<i>id</i>) +<p> + Private method to set the current thread. +</p><dl> +<dt><i>id</i></dt> +<dd> +the id the current thread should be set to. +</dd> +</dl><a NAME="DebugClientThreads.set_quit" ID="DebugClientThreads.set_quit"></a> +<h4>DebugClientThreads.set_quit</h4> +<b>set_quit</b>(<i></i>) +<p> + Private method to do a 'set quit' on all threads. +</p><a NAME="DebugClientThreads.threadTerminated" ID="DebugClientThreads.threadTerminated"></a> +<h4>DebugClientThreads.threadTerminated</h4> +<b>threadTerminated</b>(<i>dbgThread</i>) +<p> + Public method called when a DebugThread has exited. +</p><dl> +<dt><i>dbgThread</i></dt> +<dd> +the DebugThread that has exited +</dd> +</dl><a NAME="DebugClientThreads.unlockClient" ID="DebugClientThreads.unlockClient"></a> +<h4>DebugClientThreads.unlockClient</h4> +<b>unlockClient</b>(<i></i>) +<p> + Public method to release the lock for this client. +</p> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="_debugclient_start_new_thread" ID="_debugclient_start_new_thread"></a> +<h2>_debugclient_start_new_thread</h2> +<b>_debugclient_start_new_thread</b>(<i>target, args, kwargs = {}</i>) +<p> + Module function used to allow for debugging of multiple threads. +</p><p> + The way it works is that below, we reset _thread._start_new_thread to + this function object. Thus, providing a hook for us to see when + threads are started. From here we forward the request onto the + DebugClient which will create a DebugThread object to allow tracing + of the thread then start up the thread. These actions are always + performed in order to allow dropping into debug mode. +</p><p> + See DebugClientThreads.attachThread and DebugThread.DebugThread in + DebugThread.py +</p><dl> +<dt><i>target</i></dt> +<dd> +the start function of the target thread (i.e. the user code) +</dd><dt><i>args</i></dt> +<dd> +arguments to pass to target +</dd><dt><i>kwargs</i></dt> +<dd> +keyword arguments to pass to target +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +The identifier of the created thread +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file