X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=doc%2Fdebug.texi;h=0d5a79deaf6917be4c46e750a1993ef778b29170;hb=0951a7af1bd8e78b5991edd7de9d0370b2d2d72b;hp=27d4f260e72a93bf80ad926be5d1f942e23fa571;hpb=2fd7bdd665beacb360dc7958d2f7135a6f5a6bfa;p=pintos-anon diff --git a/doc/debug.texi b/doc/debug.texi index 27d4f26..0d5a79d 100644 --- a/doc/debug.texi +++ b/doc/debug.texi @@ -118,7 +118,7 @@ Alternatively, it could be that the @file{kernel.o} you passed to @command{backtrace} is not the same kernel that produced the backtrace. -Sometimes backtraces can be confusing without implying corruption. +Sometimes backtraces can be confusing without any corruption. Compiler optimizations can cause surprising behavior. When a function has called another function as its final action (a @dfn{tail call}), the calling function may not appear in a backtrace at all. Similarly, when @@ -360,6 +360,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 +382,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 +444,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