Annotation of researchv9/jtools/man/man1/pi.1, revision 1.1

1.1     ! root        1: .TH PI 1
        !             2: .CT 1 debug_tune
        !             3: .SH NAME
        !             4: pi, rtpi \- process inspector
        !             5: .SH SYNOPSIS
        !             6: .B pi
        !             7: [
        !             8: .B -t
        !             9: .I corefile objectfile
        !            10: ]
        !            11: .PP
        !            12: .B rtpi
        !            13: .I internetid
        !            14: .SH DESCRIPTION
        !            15: .I Pi
        !            16: is a C debugger that
        !            17: is bound dynamically to multiple subject processes or core dumps.
        !            18: It works better for programs compiled
        !            19: .I cc
        !            20: .IR -g .
        !            21: .I Pi
        !            22: uses the
        !            23: .IR Pads (5)
        !            24: multi-window user interface.
        !            25: There are three types of windows:
        !            26: debugger control windows,
        !            27: which access the global state of the debugger;
        !            28: process control windows (exactly one per process),
        !            29: which start and stop processes and connect to process-specific functions;
        !            30: and process inspection windows,
        !            31: which include viewers for source text and memory, formatted various ways.
        !            32: .PP
        !            33: The most important debugger control window is the
        !            34: .I pi
        !            35: window itself.
        !            36: Each line within the
        !            37: .I pi
        !            38: window refers to a specific process.
        !            39: These lines may be introduced to the window by running
        !            40: .IR ps (1)
        !            41: from the button 3 menu;
        !            42: by typing a file name, either a
        !            43: process id number followed by the name of the binary which is executing,
        !            44: or the name of a core image followed by the name of the binary that created
        !            45: the core;
        !            46: or by typing a command, prefixed by an exclamation 
        !            47: .LR ! ,
        !            48: to be executed as a child of
        !            49: .IR pi .
        !            50: There are several ways to access a process (using the button 2 menu),
        !            51: each of which generates a process control window:
        !            52: .B
        !            53: open process
        !            54: .RB ( open\ core dump )
        !            55: attaches to a running process (core image);
        !            56: .B
        !            57: open child
        !            58: attaches to a process forked by a process being debugged by the current
        !            59: .IR pi ;
        !            60: and
        !            61: .B
        !            62: take over
        !            63: rebinds an existing process window hierarchy (pointed to with the mouse)
        !            64: to the named process,
        !            65: which must be an instance of the same program.
        !            66: A command may be instantiated afresh
        !            67: .RB ( hang\ &\ open\ proc )
        !            68: or restarted and bound to an existing process window
        !            69: .RB ( hang\ &\ take\ over );
        !            70: in either case, IO is redirected to
        !            71: .IR /dev/null .
        !            72: .PP
        !            73: The process window indicates the process's state,
        !            74: shows the call stack traceback
        !            75: and connects to windows that access source text,
        !            76: local variables within a stack frame,
        !            77: raw memory, and so on.
        !            78: These windows are cross-connected, so, for example,
        !            79: an instruction in a process's assembly language window can
        !            80: be inspected in hexadecimal in the raw memory window.
        !            81: Closing the process control window closes all the windows under it.
        !            82: .PP
        !            83: The following menu functions are provided by
        !            84: the various window types in
        !            85: .IR pi .
        !            86: Initially there are these windows available:
        !            87: .TP 0.5i
        !            88: .B Help
        !            89: Reminder of user interface mechanics.
        !            90: .TP
        !            91: .B Pi
        !            92: Overall control of processes, core dumps and programs.
        !            93: A process is identified by its pathname or command line.
        !            94: Process symbols are found in the executable file from which the process was loaded,
        !            95: but may be overridden.
        !            96: Symbols for core dumps must be supplied explicitly, after the core filename.
        !            97: .B Synopsis:
        !            98: Identify and open process or core dump;
        !            99: run a program as
        !           100: .I Pi's
        !           101: child;
        !           102: take over a process with the debugging environment of a different one.
        !           103: .TP
        !           104: .B Pwd/cd
        !           105: change the working directory of the debugger.
        !           106: .SS Process Window
        !           107: Selecting and opening a process from the Pi window creates a new
        !           108: window with overall control of that process.
        !           109: It shows the process state, and a traceback if the process is halted or dead.
        !           110: States are:
        !           111: .TP 1.5i
        !           112: .PD 0
        !           113: .SM
        !           114: .B ACTIVE
        !           115: running normally
        !           116: .TP
        !           117: .SM
        !           118: .B HALTED
        !           119: halted asynchronously by a debugger
        !           120: .TP
        !           121: .SM
        !           122: .B BREAKPOINT
        !           123: halted on reaching breakpoint
        !           124: .TP
        !           125: .SM
        !           126: .B STMT STEPPED
        !           127: halted after executing C source statement(s)
        !           128: .TP
        !           129: .SM
        !           130: .B INSTR STEPPED
        !           131: halted after executing machine instruction(s)
        !           132: .TP
        !           133: .SM
        !           134: .B EVENT PENDING
        !           135: halted about to receive a signal being traced
        !           136: .TP
        !           137: .SM
        !           138: .B ERROR STATE
        !           139: the process has probably exited.
        !           140: .PD
        !           141: .LP
        !           142: The menu operations on the process are:
        !           143: .PD 0
        !           144: .TP 1i
        !           145: .B go
        !           146: let the process run
        !           147: .TP
        !           148: .B stop
        !           149: stop the process
        !           150: .TP
        !           151: .B kill
        !           152: send signal SIGKILL to the process
        !           153: .TP
        !           154: .B src text
        !           155: open source text window(s)
        !           156: .TP
        !           157: .B Signals
        !           158: open window for sending and trapping signals
        !           159: .TP
        !           160: .B Globals
        !           161: open window for evaluating expression in global scope
        !           162: .TP
        !           163: .B RawMemory
        !           164: open window for editing uninterpreted memory
        !           165: .TP
        !           166: .B Assembler
        !           167: open window for disassembler
        !           168: .PD
        !           169: .LP
        !           170: Each line of the call stack traceback describes one function.
        !           171: Each function in the traceback can open an expression evaluator window
        !           172: or display its current source line.
        !           173: .SS Globals and Stack Frame Windows
        !           174: .PP
        !           175: These windows evaluate expressions with respect to global scope,
        !           176: and scope in a function, respectively.
        !           177: A stack frame window is opened from a line in the call stack traceback or
        !           178: from a line of source text.
        !           179: C expressions can be entered by the keyboard or mouse.
        !           180: The unary operators
        !           181: .I fabs
        !           182: and
        !           183: .I sizeof
        !           184: are supported; the only assignment operator is 
        !           185: .LR = .
        !           186: Functions from the user program may be called.
        !           187: .LP
        !           188: New C expressions can be derived from old ones by the keyboard or mouse.
        !           189: In menus and the keyboard, $ means the expression in the current line.
        !           190: The VAX registers are called $r0 to $r15; 68000 registers are called
        !           191: $a0 to $a7, $d0 - $d7; the address of a register is
        !           192: the location at which it was saved.
        !           193: The format in which values are displayed can be changed.
        !           194: The raw memory editor may be entered using an expression's value as address.
        !           195: An expression may be made a
        !           196: .IR spy .
        !           197: The value of a spy expression is evaluated and displayed
        !           198: each time the debugger looks at the process.
        !           199: If the value of a spy changes the process is halted
        !           200: at the next instruction, statement or breakpoint.
        !           201: A stack frame can find its active source line in a source window or the stack
        !           202: frame window of its caller.
        !           203: .LP
        !           204: The comma operator is useful in conditional breakpoints because the values
        !           205: of its subexpressions are displayed.
        !           206: E.g. x, y, x==y traces the values of x and y when the condition fails;
        !           207: x, y, 0 just traces.
        !           208: .LP
        !           209: To cross scope boundaries, the environment (a function identifier)
        !           210: in which an expression is to be evaluated may be specified as:
        !           211: { expr } function.
        !           212: From the source directory window, file static variables can be promoted
        !           213: to appear in the menu of global variables.
        !           214: .SS Source Text Windows
        !           215: The source file directory window lists all the source files, if there are
        !           216: two or more.
        !           217: A textual prefix, entered from the keyboard, points to a source directory,
        !           218: without changing the working directory.
        !           219: Each source file is in a separate window, opened when needed.
        !           220: The source file's pathname as given to
        !           221: .I cc
        !           222: can be overridden from the keyboard.
        !           223: If things go wrong, use
        !           224: .B reopen
        !           225: to open the file afresh.
        !           226: .B Synopsis:
        !           227: set/clear (conditional) breakpoint;
        !           228: single-step source statements;
        !           229: step into (rather than over) a function;
        !           230: go the process;
        !           231: show the statement for the current PC;
        !           232: open a stack frame window for a source line's function;
        !           233: evaluate expression;
        !           234: disassemble first instruction of source statement;
        !           235: context search for string.
        !           236: .SS Breakpoints Window
        !           237: Lists all the active source and assembler breakpoints and related errors.
        !           238: .B Synopsis:
        !           239: show source or assembler for a breakpoint;
        !           240: clear breakpoint;
        !           241: clear all breakpoints.
        !           242: .SS Signals Window
        !           243: Lists all signal types, showing which ones are traced.
        !           244: .B Synopsis:
        !           245: Change which signals are traced;
        !           246: send a signal to the subject process;
        !           247: clear pending signal;
        !           248: stop process on
        !           249: .I exec.
        !           250: .SS Raw Memory Window
        !           251: A ``memory editor'' in which
        !           252: memory is a viewed as a sequence of 1-, 2-, 4- or 8-byte cells.
        !           253: .B Synopsis:
        !           254: set cell address;
        !           255: change cell size;
        !           256: change display format;
        !           257: display cells above and below;
        !           258: indirect to cell;
        !           259: change cell value;
        !           260: spy on memory cell;
        !           261: disassemble instruction at cell.
        !           262: .SS (Dis)assembler Window
        !           263: Disassembler in which memory is viewed as a sequence of instructions.
        !           264: .B Synopsis:
        !           265: set instruction address;
        !           266: display more instructions;
        !           267: change display format;
        !           268: display instruction as cell in raw memory window;
        !           269: set/clear breakpoint on instruction;
        !           270: open stack frame window for instruction's function;
        !           271: display instruction at current PC;
        !           272: single step instruction(s);
        !           273: step over a function call instead of into the function.
        !           274: .SS Exec and Fork
        !           275: If a process controlled by
        !           276: .I pi
        !           277: executes an
        !           278: .IR exec (),
        !           279: it is suspended as if started by
        !           280: .IR hang (1),
        !           281: if an
        !           282: .IR exec ()
        !           283: break is set in the Signals window.
        !           284: To debug the process after the
        !           285: .IR exec ,
        !           286: close the original process window and re-open it.
        !           287: When re-opened it will get the new symbol tables.
        !           288: .PP
        !           289: To debug a child process: (i) set a breakpoint in code that will be executed
        !           290: in the child after the fork; (ii) execute the fork
        !           291: .I at full speed
        !           292: (the child inherits the parent's breakpoints, which aren't there if the
        !           293: parent is stepped);
        !           294: (iii)
        !           295: .I before altering any breakpoints,
        !           296: get a fresh
        !           297: .I ps
        !           298: in the Pi window and apply
        !           299: .I open child
        !           300: to the child.
        !           301: The child should be stopped on the inherited breakpoint, but it and all other
        !           302: breakpoints should have been cleared.
        !           303: .SS Kernel
        !           304: The state of kernel variables associated with a process may be examined
        !           305: by giving their name or virtual address.
        !           306: The
        !           307: .B UNIX
        !           308: environment variable specifies the file from which the system was
        !           309: loaded; the default is
        !           310: .IR /vmunix .
        !           311: Kernel dumps may be examined by opening the
        !           312: `kernel pi' window.
        !           313: .SS Just A Traceback
        !           314: With the
        !           315: .B -t
        !           316: option
        !           317: .I pi
        !           318: writes a traceback on its standard output and quits.
        !           319: .SS Terminal Process Loading
        !           320: .I Pi
        !           321: looks at the environment variable
        !           322: .I TERM
        !           323: to determine where to load
        !           324: .IR pads (5)
        !           325: from.
        !           326: If it is set to \fIxterm\fR or \fIsun\fR it will look for
        !           327: an executable called
        !           328: .I pads
        !           329: in the current environment variable
        !           330: .IR PATH .
        !           331: Otherwise it assumes it is being used with an AT&T 5620 terminal.
        !           332: .SS rtpi
        !           333: .I Rtpi
        !           334: is a variant of
        !           335: .I pi
        !           336: for remote debugging of real-time processes on 680X0 boards connected
        !           337: via Ethernet.
        !           338: .I Internetid
        !           339: is the internet name of the board.
        !           340: .SH SEE ALSO
        !           341: .PP
        !           342: .IR hang (1), 
        !           343: .IR strip (1), 
        !           344: .IR pads (5)
        !           345: .SH BUGS
        !           346: In switch statements there is no boundary between the last case
        !           347: and the branch code; the program
        !           348: .I appears
        !           349: to jump to the last case (but is really in the branch)
        !           350: and then to the real case.
        !           351: A changed spy only stops the process at a breakpoint or while stepping.
        !           352: An expression can be cast only by menu.
        !           353: Functions may only be called when the process is stopped and not in a system call.
        !           354: .PP
        !           355: On the Sun if a
        !           356: .I ps
        !           357: command is issued in the
        !           358: .I pi
        !           359: window and an attempt is made to open the process,
        !           360: attaching to the process it will only successfully if
        !           361: the last component of arg[0] of the process is somewhere in the
        !           362: environment variable PATH.
        !           363: If
        !           364: .IR hang (1)
        !           365: is used to stop a process, some code may be executed before
        !           366: .I pi
        !           367: can attach to it.
        !           368: On the Sun, debugged processes share text so it not possible to debug
        !           369: two instances of the same binary.  This will create problems if breakpoints
        !           370: are set in code which are executed by a forked child of a debugged process.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.