Regenerating documentation for 1.0.4

This commit is contained in:
hakril
2025-08-14 10:37:06 +02:00
parent fdda80fad6
commit 8fa8cf9be1
53 changed files with 480 additions and 211 deletions
+23 -8
View File
@@ -4,12 +4,12 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>windows.debug.debugger &#8212; PythonForWindows 1.0.2 documentation</title>
<title>windows.debug.debugger &#8212; PythonForWindows 1.0.4 documentation</title>
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../../../_static/classic.css?v=def86cc0" />
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.css?v=957880af" />
<script src="../../../_static/documentation_options.js?v=1ed6394b"></script>
<script src="../../../_static/documentation_options.js?v=71272d9f"></script>
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
@@ -25,7 +25,7 @@
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> &#187;</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.4 documentation</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">windows.debug.debugger</a></li>
</ul>
@@ -475,8 +475,9 @@
<span class="k">return</span> <span class="kc">True</span>
<span class="k">def</span> <span class="nf">_restore_breakpoint_MEMBP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bp</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
<span class="p">(</span><span class="n">page_addr</span><span class="p">,</span> <span class="n">page_prot</span><span class="p">)</span> <span class="o">=</span> <span class="n">bp</span><span class="o">.</span><span class="n">_reput_page</span>
<span class="k">return</span> <span class="n">target</span><span class="o">.</span><span class="n">virtual_protect</span><span class="p">(</span><span class="n">page_addr</span><span class="p">,</span> <span class="n">PAGE_SIZE</span><span class="p">,</span> <span class="n">page_prot</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="k">for</span> <span class="p">(</span><span class="n">page_addr</span><span class="p">,</span> <span class="n">page_prot</span><span class="p">)</span> <span class="ow">in</span> <span class="n">bp</span><span class="o">.</span><span class="n">_reput_pages</span><span class="p">:</span>
<span class="n">target</span><span class="o">.</span><span class="n">virtual_protect</span><span class="p">(</span><span class="n">page_addr</span><span class="p">,</span> <span class="n">PAGE_SIZE</span><span class="p">,</span> <span class="n">page_prot</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="k">del</span> <span class="n">bp</span><span class="o">.</span><span class="n">_reput_pages</span><span class="p">[:]</span>
<span class="k">def</span> <span class="nf">_remove_breakpoint_MEMBP</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bp</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
@@ -595,7 +596,7 @@
<span class="n">ctx</span> <span class="o">=</span> <span class="n">thread</span><span class="o">.</span><span class="n">context</span>
<span class="n">ctx</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span> <span class="o">=</span> <span class="mi">1</span>
<span class="n">thread</span><span class="o">.</span><span class="n">set_context</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span>
<span class="n">bp</span><span class="o">.</span><span class="n">_reput_page</span> <span class="o">=</span> <span class="p">(</span><span class="n">fault_page</span><span class="p">,</span> <span class="n">page_prot</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="n">bp</span><span class="o">.</span><span class="n">_reput_pages</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">fault_page</span><span class="p">,</span> <span class="n">page_prot</span><span class="o">.</span><span class="n">value</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_breakpoint_to_reput</span><span class="p">[</span><span class="n">cp</span><span class="o">.</span><span class="n">pid</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">bp</span><span class="p">)</span>
<span class="c1"># debug event handlers</span>
@@ -718,6 +719,7 @@
<span class="n">fault_type</span> <span class="o">=</span> <span class="n">exception</span><span class="o">.</span><span class="n">ExceptionRecord</span><span class="o">.</span><span class="n">ExceptionInformation</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">fault_addr</span> <span class="o">=</span> <span class="n">exception</span><span class="o">.</span><span class="n">ExceptionRecord</span><span class="o">.</span><span class="n">ExceptionInformation</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">pc_addr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">pc</span>
<span class="n">dbgprint</span><span class="p">(</span><span class="s2">&quot;Handling access_violation at pc=</span><span class="si">{0:#x}</span><span class="s2"> addr=</span><span class="si">{1:#x}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">pc_addr</span><span class="p">,</span> <span class="n">fault_addr</span><span class="p">),</span> <span class="s2">&quot;DBG&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">fault_addr</span> <span class="o">==</span> <span class="n">pc_addr</span><span class="p">:</span>
<span class="n">fault_type</span> <span class="o">=</span> <span class="n">EXEC</span>
<span class="n">event</span> <span class="o">=</span> <span class="n">EVENT_STR</span><span class="p">[</span><span class="n">fault_type</span><span class="p">]</span>
@@ -736,11 +738,24 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_pass_memory_breakpoint</span><span class="p">(</span><span class="n">bp</span><span class="p">,</span> <span class="n">original_prot</span><span class="p">,</span> <span class="n">fault_page</span><span class="p">)</span>
<span class="k">return</span> <span class="n">DBG_CONTINUE</span>
<span class="c1"># We may have setup the &quot;EEFlags.TF&quot; ourself if the membreakpoint triggered twice on the same instruction</span>
<span class="c1"># Ex: write on two pages handled by our breakpoint (unaligned write on 0xfff-0x1000)</span>
<span class="n">originalctx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span>
<span class="n">original_tf</span> <span class="o">=</span> <span class="n">originalctx</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span>
<span class="c1"># Temporary disable EEFlags.TF to see if user callback explicit ask for it</span>
<span class="n">originalctx</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span> <span class="o">=</span> <span class="mi">0</span>
<span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">set_context</span><span class="p">(</span><span class="n">originalctx</span><span class="p">)</span>
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">DisabledMemoryBreakpoint</span><span class="p">():</span>
<span class="n">continue_flag</span> <span class="o">=</span> <span class="n">mem_bp</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exception</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_killed_in_action</span><span class="p">():</span>
<span class="k">return</span> <span class="n">continue_flag</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_explicit_single_step</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span>
<span class="c1"># Update explicit trigger based on new value of EEFlags.TF</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_explicit_single_step</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">]</span> <span class="o">|=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span>
<span class="c1"># Reupdate the real EEFlags.TF based on its current value and the original one</span>
<span class="k">if</span> <span class="n">original_tf</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">EEFlags</span><span class="o">.</span><span class="n">TF</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">single_step</span><span class="p">()</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_explicit_single_step</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">]:</span>
<span class="n">dbgprint</span><span class="p">(</span><span class="s2">&quot;Someone ask for an explicit Single step - 5&quot;</span><span class="p">,</span> <span class="s2">&quot;DBG&quot;</span><span class="p">)</span>
<span class="c1"># If BP has not been removed in trigger, pas it</span>
@@ -1300,7 +1315,7 @@
<li class="right" >
<a href="../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.2 documentation</a> &#187;</li>
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 1.0.4 documentation</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">windows.debug.debugger</a></li>
</ul>