mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-01-09 14:08:03 -05:00
GP-5670: Errata in the Debugger Tutorial
This commit is contained in:
@@ -352,9 +352,9 @@ id="the-listings-are-not-in-sync-i.e.-they-do-not-move-together."
|
||||
class="level3">
|
||||
<h3>The listings are not in sync, i.e., they do not move together.</h3>
|
||||
<p>First, check that synchronization is enabled. This is the default
|
||||
behavior, but, still, check it first. In the top-right of the Dynamic
|
||||
Listing is its local drop-down menu. Click it and check that
|
||||
<strong>Auto-Sync Cursor with Static Listing</strong> is selected.</p>
|
||||
behavior, but, still, check it first. In the <strong>Debugger →
|
||||
Synchronization</strong> menu, check that <strong>Synchronize Static and
|
||||
Dynamic Locations</strong> is selected.</p>
|
||||
<p>If that does not work, check the top-left label of the Dynamic
|
||||
Listing to see what module you are in. Also check the Debug Console
|
||||
window. If you are in a system library, e.g., <code>ld-linux</code>,
|
||||
|
||||
@@ -167,8 +167,7 @@ The re-use of connections and/or the use of multiple concurrent connections is *
|
||||
|
||||
First, check that synchronization is enabled.
|
||||
This is the default behavior, but, still, check it first.
|
||||
In the top-right of the Dynamic Listing is its local drop-down menu.
|
||||
Click it and check that **Auto-Sync Cursor with Static Listing** is selected.
|
||||
In the **Debugger → Synchronization** menu, check that **Synchronize Static and Dynamic Locations** is selected.
|
||||
|
||||
If that does not work, check the top-left label of the Dynamic Listing to see what module you are in.
|
||||
Also check the Debug Console window.
|
||||
|
||||
@@ -162,8 +162,7 @@ src="images/breakpoint-enable.png" alt="set breakpoint" /> Set
|
||||
Breakpoint, press <strong><code>K</code></strong> on the keyboard, or
|
||||
double-click the margin.</li>
|
||||
<li>From the Breakpoints window, use the <strong>Set Breakpoint</strong>
|
||||
dropdown to access the various breakpoint actions defined by
|
||||
GDB.</li>
|
||||
dropdown to access the various breakpoint actions defined by GDB.</li>
|
||||
<li>From the Terminal window, use the GDB command, e.g.,
|
||||
<code>break main</code>.</li>
|
||||
</ol>
|
||||
|
||||
@@ -239,11 +239,11 @@ caused the target to break. This only applies to snapshots that were
|
||||
created because of an event, which is most.</li>
|
||||
<li>The <strong>PC</strong> column gives the address of the next
|
||||
instruction.</li>
|
||||
<li>The <strong>Module</strong> column gives the name of the module
|
||||
containing the PC.</li>
|
||||
<li>The <strong>Function</strong> column gives the name of the function
|
||||
containing the PC mapped to its static program database, if
|
||||
available.</li>
|
||||
<li>The <strong>Module</strong> column gives the name of the module
|
||||
containing the PC.</li>
|
||||
<li>The <strong>Description</strong> column describes the event that
|
||||
generated the snapshot. This can be edited in the table, or by pressing
|
||||
<strong><code>CTRL</code>-<code>SHIFT</code>-<code>N</code></strong> to
|
||||
|
||||
@@ -128,8 +128,8 @@ The columns are:
|
||||
* The **Event Thread** column indicates which thread caused the target to break.
|
||||
This only applies to snapshots that were created because of an event, which is most.
|
||||
* The **PC** column gives the address of the next instruction.
|
||||
* The **Function** column gives the name of the function containing the PC mapped to its static program database, if available.
|
||||
* The **Module** column gives the name of the module containing the PC.
|
||||
* The **Function** column gives the name of the function containing the PC mapped to its static program database, if available.
|
||||
* The **Description** column describes the event that generated the snapshot.
|
||||
This can be edited in the table, or by pressing **`CTRL`-`SHIFT`-`N`** to mark interesting snapshots.
|
||||
|
||||
|
||||
@@ -55,9 +55,9 @@ Mappings</a></li>
|
||||
<li><a href="#moving-knowledge-from-dynamic-to-static"
|
||||
id="toc-moving-knowledge-from-dynamic-to-static">Moving Knowledge from
|
||||
Dynamic to Static</a></li>
|
||||
<li><a href="#exercise-export-and-map-ncurses"
|
||||
id="toc-exercise-export-and-map-ncurses">Exercise: Export and Map
|
||||
<code>ncurses</code></a></li>
|
||||
<li><a href="#exercise-export-and-map-system-supplied-dso"
|
||||
id="toc-exercise-export-and-map-system-supplied-dso">Exercise: Export
|
||||
and Map <code>system-supplied DSO</code></a></li>
|
||||
<li><a href="#exercise-cheat-like-the-devs"
|
||||
id="toc-exercise-cheat-like-the-devs">Exercise: Cheat Like the
|
||||
Devs</a></li>
|
||||
@@ -276,7 +276,7 @@ anyway.</p></li>
|
||||
<li><p>The table displays the <em>copy plan</em>. For a new program,
|
||||
this will copy with an identical mapping of addresses, which is probably
|
||||
the best plan, since the target system has already applied fixups. Do
|
||||
not change any addresses, lest your corrupt references in the
|
||||
not change any addresses, lest you corrupt references in the
|
||||
copy.</p></li>
|
||||
<li><p>Click <strong>Copy</strong>.</p></li>
|
||||
<li><p>When prompted, name the program <code>libncurses</code>.</p></li>
|
||||
@@ -296,8 +296,9 @@ libncurses</strong>.</li>
|
||||
<li>Check the proposed mapping and click <strong>OK</strong>.</li>
|
||||
</ol>
|
||||
</section>
|
||||
<section id="exercise-export-and-map-ncurses" class="level2">
|
||||
<h2>Exercise: Export and Map <code>ncurses</code></h2>
|
||||
<section id="exercise-export-and-map-system-supplied-dso"
|
||||
class="level2">
|
||||
<h2>Exercise: Export and Map <code>system-supplied DSO</code></h2>
|
||||
<p>Repeat this technique for the “system-supplied DSO” module. In
|
||||
practice, there is no real reason to do this, but this particular module
|
||||
prevents you from using <strong>Import From File System</strong>.</p>
|
||||
|
||||
@@ -144,7 +144,7 @@ For demonstration, we will walk through this second case, pretending we cannot l
|
||||
1. It is probably best to include everything, though **Bytes** is the bare minimum.
|
||||
1. The table displays the *copy plan*.
|
||||
For a new program, this will copy with an identical mapping of addresses, which is probably the best plan, since the target system has already applied fixups.
|
||||
Do not change any addresses, lest your corrupt references in the copy.
|
||||
Do not change any addresses, lest you corrupt references in the copy.
|
||||
1. Click **Copy**.
|
||||
1. When prompted, name the program `libncurses`.
|
||||
1. You may need to click the `termmines` tab in the Static Listing to get the UI to completely update.
|
||||
@@ -157,7 +157,7 @@ Undoubtedly, we would like to map that new program into our dynamic session.
|
||||
1. In the top pane of the Modules window, right-click `libncurses` and choose **Map to libncurses**.
|
||||
1. Check the proposed mapping and click **OK**.
|
||||
|
||||
## Exercise: Export and Map `ncurses`
|
||||
## Exercise: Export and Map `system-supplied DSO`
|
||||
|
||||
Repeat this technique for the "system-supplied DSO" module.
|
||||
In practice, there is no real reason to do this, but this particular module prevents you from using **Import From File System**.
|
||||
|
||||
Reference in New Issue
Block a user