- removed @ref to "printf Reboots" since this no longer applies and the @anchor is...
[pintos-anon] / doc / debug.texi
index 62d951add313c9a3f8ba48c304ff5b773594561f..958e51b3bafcb2e3288ed28aa58ed4605ddfe4da 100644 (file)
@@ -21,13 +21,12 @@ introduces you to a few of them.
 Don't underestimate the value of @func{printf}.  The way
 @func{printf} is implemented in Pintos, you can call it from
 practically anywhere in the kernel, whether it's in a kernel thread or
-an interrupt handler, almost regardless of what locks are held (but see
-@ref{printf Reboots} for a counterexample).
+an interrupt handler, almost regardless of what locks are held.
 
 @func{printf} is useful for more than just examining data.
 It can also help figure out when and where something goes wrong, even
 when the kernel crashes or panics without a useful error message.  The
-strategy is to sprinkle calls to @func{print} with different strings
+strategy is to sprinkle calls to @func{printf} with different strings
 (e.g.@: @code{"<1>"}, @code{"<2>"}, @dots{}) throughout the pieces of
 code you suspect are failing.  If you don't even see @code{<1>} printed,
 then something bad happened before that point, if you see @code{<1>}
@@ -360,6 +359,8 @@ that links the elements.
 Example: @code{dumplist all_list thread all_elem} prints all elements of
 @struct{thread} that are linked in @code{struct list all_list} using the
 @code{struct list_elem all_elem} which is part of @struct{thread}.
+(This assumes that you have added @code{all_list} and @code{all_elem}
+yourself.)
 @end deffn
 
 @deffn {GDB Macro} btthread thread
@@ -380,6 +381,8 @@ Example: @code{btthreadlist all_list all_elem} shows the backtraces of
 all threads contained in @code{struct list all_list}, linked together by
 @code{all_elem}.  This command is useful to determine where your threads
 are stuck when a deadlock occurs.  Please see the example scenario below.
+(This assumes that you have added @code{all_list} and @code{all_elem}
+yourself.)
 @end deffn
 
 @deffn {GDB Macro} btpagefault
@@ -440,6 +443,10 @@ in your kernel, because your kernel should never crash.  Starting with
 Project 3, the situation will change if you use @func{get_user} and
 @func{put_user} strategy to verify user memory accesses
 (@pxref{Accessing User Memory}).
+
+If you don't want GDB to stop for page faults, then issue the command
+@code{handle SIGSEGV nostop}.  GDB will still print a message for
+every page fault, but it will not come back to a command prompt.
 @end deffn
 
 @node Example GDB Session