Tuesday, 14 June 2011

PS process State codes

PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers
(header "STAT" or "S") will display to describe the state of a process.
D    Uninterruptible sleep (usually IO)
R    Running or runnable (on run queue)
S    Interruptible sleep (waiting for an event to complete)
T    Stopped, either by a job control signal or because it is being traced.
W    paging (not valid since the 2.6.xx kernel)
X    dead (should never be seen)
Z    Defunct ("zombie") process, terminated but not reaped by its parent.

For BSD formats and when the stat keyword is used, additional characters may
be displayed:
<    high-priority (not nice to other users)
N    low-priority (nice to other users)
L    has pages locked into memory (for real-time and custom IO)
s    is a session leader
l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+    is in the foreground process group

Debugging a Linux process

To debug a compiled C process in RedHat Linux. You will need to install devel and debuginfo of the package you are insterested in. For example to debug python interpreter you will need to install python, python-debuginfo and python-devel packages. Then find the stuck process PID via PS and then:

# gdp --pid <pid num>

Then you will be in gdp prompt. You then can use following commands:

>continue        will continue execution until you press Ctrl-C
>bt                  show backtrace
>next               execute next line
>list                 show source code
>step               step into child function
>finish              execute until finish the current function
>show help      show extra commands that can be used with show
>print <var>    prints content of a variable

Another good tool for debugging is Valgrind