[padb] r373 committed - Commit the new full-report page to svn. It's been up for a while but...
padb at googlecode.com
padb at googlecode.com
Mon Dec 21 23:12:33 GMT 2009
Revision: 373
Author: apittman
Date: Mon Dec 21 15:11:50 2009
Log: Commit the new full-report page to svn. It's been up for a while but
I forgot to commit the source when I uploaded it.
http://code.google.com/p/padb/source/detail?r=373
Added:
/trunk/doc/full-report.html
Modified:
/trunk/doc/build_website
/trunk/doc/email.html
/trunk/doc/header.html
/trunk/doc/index.html
/trunk/doc/layout.css
/trunk/doc/upload_website
/trunk/doc/usage.html
=======================================
--- /dev/null
+++ /trunk/doc/full-report.html Mon Dec 21 15:11:50 2009
@@ -0,0 +1,355 @@
+<div id="content">
+<h1>Full-report mode</h1>
+
+<div class=mode>
+ <a name=full-report></a>
+ <h3>To target a specific job (full-report option)</h3>
+</div>
+
+<p>Whilst <i>padb</i> can be used to collect very specific information
+from an application, unless you know what you are looking for or know
+the application very well this may not be what you want. For cases
+such as this <i>padb</i> has a "full report" mode in which it collects
+such information from a job as is likely to be useful. This will
+create a full diagnostic report for a given job iterating over the
+more common <i>padb</i> modes and options. If you are just starting
+out debugging with <i>padb</i> or are creating an error report for a
+third party then the full-report option is a good place to start. For
+large jobs this can generate a lot of output so redirecting to a file
+is recommended.
+
+<p>To run in this mode simply invoke <i>padb</i> with the option
+<b>--full-report=<jobid></b>.
+
+<p>The full-report mode is also very useful if you are automatically
+creating trace files for later inspection or collecting information
+for inspection by a third party. End-users can be instructed to run
+it and mail a log back to a remote support team, for example or it can
+be integrated into automatic test suites.
+
+<p>More detailed information on using <i>padb</i> and about the type
+of information padb can collect about a job can be found on
+the <a href=modes.html>modes</a> page.
+
+<table class="example">
+<tr><td>
+<pre class="code">
+$ padb --show-jobs
+45882
+$ padb --full-report=45882
+</pre>
+</td></tr>
+<tr><td>
+<pre class="code">
+padb version 3.n (Revision 325)
+full job report for job 45882
+
+----------------
+[0]
+----------------
+comm0: name: 'MPI_COMM_WORLD'
+comm0: rank: '0'
+comm0: size: '4'
+comm0: id: '0'
+comm0: Rank: local 0 global 0
+comm0: Rank: local 1 global 1
+comm0: Rank: local 2 global 2
+comm0: Rank: local 3 global 3
+comm1: name: 'MPI_COMM_SELF'
+comm1: rank: '0'
+comm1: size: '1'
+comm1: id: '0x1'
+comm2: name: 'MPI_COMM_NULL'
+comm2: size: '0'
+comm2: id: '0x2'
+comm3: name: 'MPI COMMUNICATOR 3 DUP FROM 0'
+comm3: rank: '0'
+comm3: size: '4'
+comm3: id: '0x3'
+comm3: Rank: local 0 global 0
+comm3: Rank: local 1 global 1
+comm3: Rank: local 2 global 2
+comm3: Rank: local 3 global 3
+comm4: name: 'MPI COMMUNICATOR 4 DUP FROM 0'
+comm4: rank: '0'
+comm4: size: '4'
+comm4: id: '0x4'
+comm4: Rank: local 0 global 0
+comm4: Rank: local 1 global 1
+comm4: Rank: local 2 global 2
+comm4: Rank: local 3 global 3
+comm5: name: 'MPI COMMUNICATOR 5 SPLIT FROM 3'
+comm5: rank: '0'
+comm5: size: '2'
+comm5: id: '0x5'
+comm5: Rank: local 0 global 0
+comm5: Rank: local 1 global 2
+----------------
+[1]
+----------------
+comm0: name: 'MPI_COMM_WORLD'
+comm0: rank: '1'
+comm0: size: '4'
+comm0: id: '0'
+comm0: Rank: local 0 global 0
+comm0: Rank: local 1 global 1
+comm0: Rank: local 2 global 2
+comm0: Rank: local 3 global 3
+comm1: name: 'MPI_COMM_SELF'
+comm1: rank: '0'
+comm1: size: '1'
+comm1: id: '0x1'
+comm2: name: 'MPI_COMM_NULL'
+comm2: size: '0'
+comm2: id: '0x2'
+comm3: name: 'MPI COMMUNICATOR 3 DUP FROM 0'
+comm3: rank: '1'
+comm3: size: '4'
+comm3: id: '0x3'
+comm3: Rank: local 0 global 0
+comm3: Rank: local 1 global 1
+comm3: Rank: local 2 global 2
+comm3: Rank: local 3 global 3
+comm4: name: 'MPI COMMUNICATOR 4 DUP FROM 0'
+comm4: rank: '1'
+comm4: size: '4'
+comm4: id: '0x4'
+comm4: Rank: local 0 global 0
+comm4: Rank: local 1 global 1
+comm4: Rank: local 2 global 2
+comm4: Rank: local 3 global 3
+comm5: name: 'MPI COMMUNICATOR 5 SPLIT FROM 3'
+comm5: rank: '0'
+comm5: size: '2'
+comm5: id: '0x5'
+comm5: Rank: local 0 global 1
+comm5: Rank: local 1 global 3
+----------------
+[2]
+----------------
+comm0: name: 'MPI_COMM_WORLD'
+comm0: rank: '2'
+comm0: size: '4'
+comm0: id: '0'
+comm0: Rank: local 0 global 0
+comm0: Rank: local 1 global 1
+comm0: Rank: local 2 global 2
+comm0: Rank: local 3 global 3
+comm1: name: 'MPI_COMM_SELF'
+comm1: rank: '0'
+comm1: size: '1'
+comm1: id: '0x1'
+comm2: name: 'MPI_COMM_NULL'
+comm2: size: '0'
+comm2: id: '0x2'
+comm3: name: 'MPI COMMUNICATOR 3 DUP FROM 0'
+comm3: rank: '2'
+comm3: size: '4'
+comm3: id: '0x3'
+comm3: Rank: local 0 global 0
+comm3: Rank: local 1 global 1
+comm3: Rank: local 2 global 2
+comm3: Rank: local 3 global 3
+comm4: name: 'MPI COMMUNICATOR 4 DUP FROM 0'
+comm4: rank: '2'
+comm4: size: '4'
+comm4: id: '0x4'
+comm4: Rank: local 0 global 0
+comm4: Rank: local 1 global 1
+comm4: Rank: local 2 global 2
+comm4: Rank: local 3 global 3
+comm5: name: 'MPI COMMUNICATOR 5 SPLIT FROM 3'
+comm5: rank: '1'
+comm5: size: '2'
+comm5: id: '0x5'
+comm5: Rank: local 0 global 0
+comm5: Rank: local 1 global 2
+----------------
+[3]
+----------------
+comm0: name: 'MPI_COMM_WORLD'
+comm0: rank: '3'
+comm0: size: '4'
+comm0: id: '0'
+comm0: Rank: local 0 global 0
+comm0: Rank: local 1 global 1
+comm0: Rank: local 2 global 2
+comm0: Rank: local 3 global 3
+comm1: name: 'MPI_COMM_SELF'
+comm1: rank: '0'
+comm1: size: '1'
+comm1: id: '0x1'
+comm2: name: 'MPI_COMM_NULL'
+comm2: size: '0'
+comm2: id: '0x2'
+comm3: name: 'MPI COMMUNICATOR 3 DUP FROM 0'
+comm3: rank: '3'
+comm3: size: '4'
+comm3: id: '0x3'
+comm3: Rank: local 0 global 0
+comm3: Rank: local 1 global 1
+comm3: Rank: local 2 global 2
+comm3: Rank: local 3 global 3
+comm4: name: 'MPI COMMUNICATOR 4 DUP FROM 0'
+comm4: rank: '3'
+comm4: size: '4'
+comm4: id: '0x4'
+comm4: Rank: local 0 global 0
+comm4: Rank: local 1 global 1
+comm4: Rank: local 2 global 2
+comm4: Rank: local 3 global 3
+comm5: name: 'MPI COMMUNICATOR 5 SPLIT FROM 3'
+comm5: rank: '1'
+comm5: size: '2'
+comm5: id: '0x5'
+comm5: Rank: local 0 global 1
+comm5: Rank: local 1 global 3
+Total: 10 communicators of which 0 are in use.
+No data was recorded for 24 communicators
+-----------------
+[0-3] (4 processes)
+-----------------
+main() at deadlock.c:42
+ locals
+ MPI_Comm alpha = 'MPI COMMUNICATOR 3 DUP FROM 0' [0-3]
+ MPI_Comm beta = 'MPI COMMUNICATOR 4 DUP FROM 0' [0-3]
+ MPI_Comm * mb = '' [0-3]
+ char * p = 'Address 0xffffffff out of bounds' [0-3]
+ MPI_Comm split = 'MPI COMMUNICATOR 5 SPLIT FROM 3' [0-3]
+ -----------------
+ [0-3] (4 processes)
+ -----------------
+ PMPI_Barrier() at pbarrier.c:62
+ params
+ MPI_Comm comm:
+ 'MPI COMMUNICATOR 3 DUP FROM 0' [1-3]
+ 'MPI COMMUNICATOR 4 DUP FROM 0' [0]
+ locals
+ int err = '0' [0-3]
+ -----------------
+ [0-3] (4 processes)
+ -----------------
+ ompi_coll_tuned_barrier_intra_dec_fixed() at
coll_tuned_decision_fixed.c:206
+ params
+ struct ompi_communicator_t * comm:
+ 'MPI COMMUNICATOR 3 DUP FROM 0' [1-3]
+ 'MPI COMMUNICATOR 4 DUP FROM 0' [0]
+ mca_coll_base_module_t * module = 'valid pointer perm=rw-p
([heap])' [0-3]
+ locals
+ int communicator_size = '0' [0-3]
+ -----------------
+ [0-3] (4 processes)
+ -----------------
+ ompi_coll_tuned_barrier_intra_recursivedoubling() at
coll_tuned_barrier.c:172
+ params
+ struct ompi_communicator_t * comm:
+ 'MPI COMMUNICATOR 3 DUP FROM 0' [1-3]
+ 'MPI COMMUNICATOR 4 DUP FROM 0' [0]
+ mca_coll_base_module_t * module = 'valid pointer perm=rw-p
([heap])' [0-3]
+ locals
+ int adjsize = '4' [0-3]
+ int err = '0' [0-3]
+ int line: more than 3 distinct values
+ int mask:
+ '2' [0-1]
+ '4' [2-3]
+ int rank: more than 3 distinct values
+ int remote:
+ '0' [1-2]
+ '1' [0,3]
+ int size = '4' [0-3]
+ -----------------
+ [0-3] (4 processes)
+ -----------------
+ ompi_coll_tuned_sendrecv_actual() at coll_tuned_util.c:54
+ params
+ void * sendbuf = 'null pointer' [0-3]
+ int scount = '0' [0-3]
+ ompi_datatype_t * sdatatype = 'MPI_BYTE' [0-3]
+ int dest:
+ '0' [1-2]
+ '1' [0,3]
+ int stag = '-16' [0-3]
+ void * recvbuf = 'null pointer' [0-3]
+ int rcount = '0' [0-3]
+ ompi_datatype_t * rdatatype = 'MPI_BYTE' [0-3]
+ int source:
+ '0' [1-2]
+ '1' [0,3]
+ int rtag = '-16' [0-3]
+ struct ompi_communicator_t * comm:
+ 'MPI COMMUNICATOR 3 DUP FROM 0' [1-3]
+ 'MPI COMMUNICATOR 4 DUP FROM 0' [0]
+ ompi_status_public_t * status = 'null pointer' [0-3]
+ locals
+ int err = '0' [0-3]
+ int line = '0' [0-3]
+ ompi_request_t *[2] reqs = '{, }' [0-3]
+ ompi_status_public_t [2] statuses = 'value too long to
display' [0-3]
+ -----------------
+ [0-3] (4 processes)
+ -----------------
+ ompi_request_default_wait_all() at request/req_wait.c:262
+ params
+ size_t count = '2' [0-3]
+ ompi_request_t ** requests: more than 3 distinct
values
+ ompi_status_public_t * statuses = 'valid pointer
perm=rw-p ([stack])' [0-3]
+ locals
+ char [30] __PRETTY_FUNCTION__
= '"ompi_request_default_wait_all"' [0-3]
+ size_t completed = '1' [0-3]
+ size_t i = '2' [0-3]
+ int mpi_error = '0' [0-3]
+ size_t pending = '1' [0-3]
+ ompi_request_t * request = 'valid pointer perm=rw-p
([heap])' [0-3]
+ ompi_request_t ** rptr = '' [0-3]
+ size_t start:
+ '53' [0-1]
+ '55' [2-3]
+ -----------------
+ [0-3] (4 processes)
+ -----------------
+ opal_condition_wait() at ../opal/threads/condition.h:99
+ params
+ opal_condition_t * c = 'valid pointer perm=rw-p' [0-3]
+ opal_mutex_t * m = 'valid pointer perm=rw-p' [0-3]
+ locals
+ int rc = '0' [0-3]
+ -----------------
+ [0,3] (2 processes)
+ -----------------
+ opal_progress() at runtime/opal_progress.c:206
+ locals
+ int events = '0' [0,3]
+ size_t i = '0' [0,3]
+ -----------------
+ [1] (1 processes)
+ -----------------
+ opal_progress() at runtime/opal_progress.c:181
+ locals
+ int events = '0' [1]
+ size_t i = '2' [1]
+ opal_timer_t now = '135914459801112' [1]
+ -----------------
+ [1] (1 processes)
+ -----------------
+ opal_timer_base_get_cycles()
at ../opal/mca/timer/linux/timer_linux.h:31
+ opal_sys_timer_get_cycles()
at ../opal/include/opal/sys/ia32/timer.h:33
+ locals
+ opal_timer_t ret = '135914459801112' [1]
+ -----------------
+ [2] (1 processes)
+ -----------------
+ opal_progress() at runtime/opal_progress.c:166
+ locals
+ int events = '0' [2]
+ size_t i = '2' [2]
+</pre>
+</td></tr>
+</table>
+
+
+</div>
+<div id="footer">
+ <hr>
+ <p>Page maintained by Ashley Pittman. $Date: 2009-11-09 15:45:01 +0000
(Mon, 09 Nov 2009) $ $Revision: 326 $</p>
+</div>
=======================================
--- /trunk/doc/build_website Thu Sep 10 02:38:12 2009
+++ /trunk/doc/build_website Mon Dec 21 15:11:50 2009
@@ -8,7 +8,7 @@
echo Uploading website to http://padb.pittman.org.uk
-FILES="index usage download email extensions modes configuration"
+FILES="index usage download email extensions modes full-report
configuration"
TDIR=public
=======================================
--- /trunk/doc/email.html Mon Nov 9 07:45:01 2009
+++ /trunk/doc/email.html Mon Dec 21 15:11:50 2009
@@ -1,9 +1,7 @@
<div id="content">
<h2>Mailing Lists</h2>
<a href="http://pittman.org.uk/mailman/listinfo">Mailing lists</a>
-for padb discussion and development are available for public use,
-if you are an existing user or are considering using <i>padb</i>
-for the first time I would advise you to join.
+for padb discussion and development are available and are archived on-line.
<ul>
<li><a
href="http://pittman.org.uk/mailman/listinfo/padb-devel_pittman.org.uk">
=======================================
--- /trunk/doc/header.html Mon Nov 9 07:45:01 2009
+++ /trunk/doc/header.html Mon Dec 21 15:11:50 2009
@@ -13,14 +13,14 @@
</div>
<div id="navigation">
<ul>
- <li><span class="menu_heading"><a href="index.html" title="Main
page">Home</a></span>
- <br><span class="menu_subheading"><a href="index.html#news"
title="Project news">News</a></span></li>
+ <li><span class="menu_heading"><a href="/" title="Main
page">Home</a></span>
+ <br><span class="menu_subheading"><a href="index.html#news"
title="Project news">News</a></span>
+ <li><span class="menu_heading"><a href="full-report.html"
title="Generating a full report for a job">Full Report mode</a></span>
<li><span class="menu_heading"><a href="usage.html" title="Command line
options">Usage</a></span>
<span class="menu_subheading">
<br><a href="usage.html#rmgr" title="Selecting the resource
manager">Resource mananger</a>
- <br><a href="usage.html#job" title="Selecting a job">Jobs</a>
+ <br><a href="usage.html#job" title="Selecting a job">Job selection</a>
<br><a href="usage.html#rank" title="Selecting ranks within a
job">Ranks</a>
- <br><a href="usage.html#full-report" title="Generating a full report
for a job">Full Report mode</a>
<br><a href="configuration.html" title="Setting configuration
options">Configuration</a>
</span>
<li><span class="menu_heading"><a href="modes.html" title="Modes of
operation">Modes of operation</a></span>
=======================================
--- /trunk/doc/index.html Mon Nov 9 07:45:01 2009
+++ /trunk/doc/index.html Mon Dec 21 15:11:50 2009
@@ -82,8 +82,10 @@
run, it's main use is to assist in the debugging of parallel applications,
it's
therefore assumed that you have a working MPI stack or other parallel
environment and that "Hello world" application runs to completion without
-error.<br> A <i>Linux</i> operating system is assumed and a working
-<i>gdb</i> is required for stack trace functionality.<br>
+error.<br>
+
+A <i>Linux</i> operating system is assumed and a working <i>gdb</i> is
required
+for stack trace functionality. Work on a <i>solaris</i> port is under way.
</div>
<div id="footer">
<hr>
=======================================
--- /trunk/doc/layout.css Mon Nov 9 07:45:01 2009
+++ /trunk/doc/layout.css Mon Dec 21 15:11:50 2009
@@ -37,8 +37,6 @@
}
pre.code {
-#margin-left: 2em;
-#margin-right: 2em;
background-color: #f0f0f0;
padding: 10px;
border: 1px solid;
=======================================
--- /trunk/doc/upload_website Thu Sep 10 02:38:12 2009
+++ /trunk/doc/upload_website Mon Dec 21 15:11:50 2009
@@ -11,7 +11,7 @@
# Load the password from a non-public file ;)
. ~/padb-website-password.txt
-FILES="index usage download email extensions modes configuration"
+FILES="index usage download email extensions modes full-report
configuration"
ftp-upload --host padb.pittman.org.uk -u padb at pittman.co.uk --password
$PASSWORD layout.css
@@ -23,13 +23,13 @@
cat $FILE.html >> $TFILE
cat footer.html >> $TFILE
ftp-upload --host padb.pittman.org.uk -u padb at pittman.co.uk --password
$PASSWORD --as $FILE.html $TFILE
- ftp-upload --host padb.pittman.org.uk -u padb at pittman.co.uk --password
$PASSWORD --as $FILE/index.html $TFILE
- ftp-upload --host padb.pittman.org.uk -u padb at pittman.co.uk --password
$PASSWORD --as $FILE/layout.css layout.css
+ # ftp-upload --host padb.pittman.org.uk -u padb at pittman.co.uk --password
$PASSWORD --as $FILE/index.html $TFILE
+ #ftp-upload --host padb.pittman.org.uk -u padb at pittman.co.uk --password
$PASSWORD --as $FILE/layout.css layout.css
rm $TFILE
done
ftp-upload --host padb.pittman.org.uk -u padb at pittman.co.uk --password
$PASSWORD OpenMPI-padb-groups.patch
-ftp-upload --host padb.pittman.org.uk -u padb at pittman.co.uk --password
$PASSWORD --as extensions/OpenMPI-padb-groups.patch
OpenMPI-padb-groups.patch
+#ftp-upload --host padb.pittman.org.uk -u padb at pittman.co.uk --password
$PASSWORD --as extensions/OpenMPI-padb-groups.patch
OpenMPI-padb-groups.patch
echo All done.
exit 0
=======================================
--- /trunk/doc/usage.html Mon Nov 9 07:45:01 2009
+++ /trunk/doc/usage.html Mon Dec 21 15:11:50 2009
@@ -6,13 +6,14 @@
<h2>Selecting the Resource Manager (Job Launcher)</h2>
</div>
<i>Padb</i> supports many resource managers and should select the
-appropriate one for your cluster, if you have more than one resource
+appropriate one for your machine, if you have more than one resource
manager installed or <i>padb</i> can't detect the correct one use
-the <b>rmgr</b> <a href=configuration.html>configuration option</a>.
-
-<p>If no resource manager is found you can use <b>-O rmgr=local</b>
-and process identifiers (pids) will be used instead of job ids.
-
+the <b>rmgr</b> <a href=configuration.html>configuration option</a> to
+set machine-wide defaults.
+
+<p>If your resource manager or scheduler is not supported you can also
+use <b>local</b> and process identifiers (pids) will be used instead
+of job ids.
<center>
<table class=rmgrs border=1 width="90%">
@@ -27,7 +28,7 @@
<td>Works with any resource manager or software stack that is
compliant with
the <a href="http://www.mcs.anl.gov/research/projects/mpi/mpi-debug/">MPI
- debugger interface</a>. It is recommended to use support for your
+ debugger interface</a>. It is preferable to use support for your
specific resource manager if it exists.</td>
</tr>
<tr>
@@ -46,7 +47,7 @@
<td>Fully supported</td>
</tr>
<tr>
- <td>MPICH2/mpd</td>
+ <td>MPICH2 mpd</td>
<td>mpd</td>
<td>Fully supported in 3.0 and above</td>
</tr>
@@ -67,7 +68,7 @@
<td>None</td>
<td>local-qsnet</td>
<td>as local-fd with local-fd-name set to /proc/qsnet/elan/user to
- automatially select network jobs on the local node.</td>
+ automatically select network jobs on the local node.</td>
</tr>
</table>
</center>
@@ -75,6 +76,8 @@
<p>The <b>--list-rmgrs</b> option can be used to show a list of
detected resource managers and their active jobs.
+<hr>
+
<div class=mode>
<a name=job></a>
<h2>Selecting the job(s) to target</h2>
@@ -86,6 +89,10 @@
default is to target jobs of the current user, this can be over-ridden
with the <b>--user</b> flag.
+<h2>To target a specific job</h2> To target a specific job specify the
+numeric jobid for the job on the command line, after all other
+options.
+
<h3>Showing list of current jobs</h3>
To show a list of currently running jobs for a given user use the
<b>--show-jobs</b> option. Alternatively the <b>--list-rmgrs</b>
@@ -95,55 +102,31 @@
<h3>To target all jobs</h3> To target all jobs currently running for a
given user use the <b>--all</b> (<b>-a</b>) flag.
-<h3>To target any jobs</h3> To target "any" job currently running for
-a given user use the <b>--any</b> (<b>-A</b>) flag. This differs from
+<h3>To target any jobs</h3> To target any job currently running for a
+given user use the <b>--any</b> (<b>-A</b>) flag. This differs from
targeting all jobs as it will exit with an error if more than one job
is running.
-<h3>To target a specific job</h3> To target a specific job specify the
-jobid for the job on the command line, after all other options.
-
-<div class=mode>
- <a name=full-report></a>
- <h3>To target a specific job (Full report option)</h3>
-</div>
-If trying to diagnose a problem or gather information there is another
-option, <b>--full-report=<jobid></b>, this tells padb to target
-the job specified and to report all information about the job it knows
-how to collect. This option is typically used when creating bug
-reports to send to third parties or to inspect a job for anomalies.
-
<hr>
<h1><a name="rank">Selecting ranks (Processes)</a></h1> In modes where
data for each process is reported separately it is possible to
restrict which ranks are queried, this is done via the <b>--rank</b>
option. Multiple ranks can be selected by specifying <b>--rank</b>
-multiple times.
+multiple times or by specifying a rank list using
+the <b>[<low>-<high>,<value>]</b> notation. Eg, to
specify ranks
+0,2 and 3 use <b>--rank [0,2-3]</b>
<hr>
<h1>Selecting which mode to run in.</h1>
<i>Padb</i> can present an array of different information about your
select jobs and it can present it in a number of different ways. With
-the exception of Full Report only one mode can be selected, if you
-need more information about the program run <i>padb</i> more than
-once.
-
-<div class=mode>
- <a name=full-report></a>
- <h2>Full Report</h2>
-</div>
-If you are just starting with <i>padb</i> or are creating an error
-report for somebody else then the <b>--full-report=<jobid></b>
-option is a good place to start, this will complete a full diagnostic
-report for the job iterating over the more common padb options. For
-large jobs this can generate a lot of output so redirecting to a file
-is recommended.
-
-<p>
-
-A list of avaliable modes and their descriptions can be found on the <a
href=modes.html>modes</a> page.
+the exception of <a href="full-report.html">full Report</a> only one
+mode can be selected, if you need more information about the program
+<i>padb</i> has to be run more than once. A list of available modes
+and their descriptions can be found on
+the <a href="modes.html">modes</a> page.
</div>
<div id="footer">
More information about the padb-devel
mailing list