mirror of
https://github.com/sstefani/mtrace.git
synced 2025-12-07 01:06:41 +08:00
add manual pages
This commit is contained in:
parent
bd061133db
commit
beda5b7f99
1
.gitignore
vendored
1
.gitignore
vendored
@ -30,4 +30,5 @@ libtool
|
||||
docross
|
||||
doremote
|
||||
dokvm
|
||||
dosmw
|
||||
mtrace
|
||||
|
||||
507
mtrace.1
Normal file
507
mtrace.1
Normal file
@ -0,0 +1,507 @@
|
||||
.\" -*-nroff-*-
|
||||
.\" Copyright (c) 2015 Stefani Seibold <stefani@seibold.net>
|
||||
.\"
|
||||
.\" This program is free software; you can redistribute it and/or
|
||||
.\" modify it under the terms of the GNU General Public License as
|
||||
.\" published by the Free Software Foundation; either version 2 of the
|
||||
.\" License, or (at your option) any later version.
|
||||
.\"
|
||||
.\" This program is distributed in the hope that it will be useful, but
|
||||
.\" WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
.\" General Public License for more details.
|
||||
.\"
|
||||
.\" You should have received a copy of the GNU General Public License
|
||||
.\" along with this program; if not, write to the Free Software
|
||||
.\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
||||
.\" 02110-1301 USA
|
||||
.\"
|
||||
.TH MTRACE "1" "May 2015" "" "User Commands"
|
||||
.SH NAME
|
||||
mtrace \- A dynamic memory allocation tracer
|
||||
.SH SYNOPSIS
|
||||
.\"
|
||||
.\" ---------------------------------------------------------------------------
|
||||
.\"
|
||||
.PP
|
||||
.B mtrace
|
||||
.\"
|
||||
.\" Output formatting:
|
||||
.\"
|
||||
[\-d|\-\-depth \fIlevel\fR]
|
||||
[\-F|\-\-config \fIfile\fR]
|
||||
[\-S|\-\-sort \fIoption\fR]
|
||||
[\-o|\-\-output \fIfile\fR]
|
||||
.\"
|
||||
.\" Various:
|
||||
.\"
|
||||
[\-a|\-\-autoscan]
|
||||
[\-b|\-\-binpath \fIpath\fR]
|
||||
[\-C|\-\-cwd \fIpath\fR]
|
||||
[\-D|\-\-debug \fImask\fR]
|
||||
[\-n|\-\-nocpp]
|
||||
[\-u \fIusername\fR]
|
||||
[\-v|\-\-verbose]
|
||||
.\"
|
||||
.\" What processes to trace:
|
||||
.\"
|
||||
[\-e|\-\-follow\-exec]
|
||||
[\-f|\-\-follow\-fork]
|
||||
[\-p|\-\-pid \fIpid\fR]
|
||||
[[\-\-] \fIcommand [arg ...]\fR]
|
||||
.\"
|
||||
.\" ---------------------------------------------------------------------------
|
||||
.\"
|
||||
.PP
|
||||
.BR mtrace " \-c|\-\-client addr"
|
||||
[\-P|\-\-port num]
|
||||
[\-i|\-\-interactive]
|
||||
.\"
|
||||
.\" Output formatting:
|
||||
.\"
|
||||
[\-b|\-\-binpath \fIpath\fR]
|
||||
[\-F|\-\-config \fIfile\fR]
|
||||
[\-S|\-\-sort \fIoption\fR]
|
||||
[\-o|\-\-output \fIfilenfR]
|
||||
.\"
|
||||
.\" Various:
|
||||
.\"
|
||||
[\-a|\-\-autoscan]
|
||||
[\-D|\-\-debug \fImask\fR]
|
||||
[\-v|\-\-verbose]
|
||||
.\"
|
||||
.\" ---------------------------------------------------------------------------
|
||||
.\"
|
||||
.PP
|
||||
.BR mtrace " \-s|\-\-server"
|
||||
[\-P|\-\-port num]
|
||||
[\-l|\-\-listen addr]
|
||||
[\-w|\-\-wait]
|
||||
.\"
|
||||
.\" Output formatting:
|
||||
.\"
|
||||
[\-d|\-\-depth \fIlevel\fR]
|
||||
[\-o|\-\-output \fIfile\fR]
|
||||
.\"
|
||||
.\" Various:
|
||||
.\"
|
||||
[\-C|\-\-cwd \fIpath\fR]
|
||||
[\-D|\-\-debug \fImask\fR]
|
||||
[\-n|\-\-nocpp]
|
||||
[\-u \fIusername\fR]
|
||||
[\-v|\-\-verbose]
|
||||
.\"
|
||||
.\" What processes to trace:
|
||||
.\"
|
||||
[\-e|\-\-follow\-exec]
|
||||
[\-f|\-\-follow\-fork]
|
||||
[\-p|\-\-pid \fIpid\fR]
|
||||
[[\-\-] \fIcommand [arg ...]\fR]
|
||||
.\"
|
||||
.\" ---------------------------------------------------------------------------
|
||||
.\"
|
||||
.PP
|
||||
.B mtrace -i|\-\-interactive
|
||||
.\"
|
||||
.\" Output formatting:
|
||||
.\"
|
||||
[\-d|\-\-depth \fIlevel\fR]
|
||||
[\-F|\-\-config \fIfile\fR]
|
||||
[\-S|\-\-sort \fIoption\fR]
|
||||
.\"
|
||||
.\" Various:
|
||||
.\"
|
||||
[\-a|\-\-autoscan]
|
||||
[\-b|\-\-binpath \fIpath\fR]
|
||||
[\-C|\-\-cwd]
|
||||
[\-D|\-\-debug \fImask\fR]
|
||||
[\-n|\-\-nocpp]
|
||||
[\-u \fIusername\fR]
|
||||
[\-v|\-\-verbose]
|
||||
.\"
|
||||
.\" What processes to trace:
|
||||
.\"
|
||||
[\-e|\-\-follow\-exec]
|
||||
[\-f|\-\-follow\-fork]
|
||||
[\-p|\-\-pid \fIpid\fR]
|
||||
.\"
|
||||
.\" ---------------------------------------------------------------------------
|
||||
.\"
|
||||
.PP
|
||||
.BR mtrace " \-V|\-\-version"
|
||||
.PP
|
||||
.BR mtrace " \-h|\-\-help"
|
||||
.SH DESCRIPTION
|
||||
.B mtrace
|
||||
is a dynamic memory tracer, debugger and statistical analyses tool for C and
|
||||
C++. It traces, records and reports all dynamic memory functions which are
|
||||
called by the specified
|
||||
.I command
|
||||
or
|
||||
.I process
|
||||
until it exits or
|
||||
.B mtrace
|
||||
is terminated.
|
||||
|
||||
Unlike other memory tracers, the trace will be performed by setting
|
||||
breakpoints on each know dynamic alloction function. So no additional
|
||||
library nor any kind of instrumentation or recompiling is needed to trace
|
||||
and hunt for memory leaks.
|
||||
|
||||
.B mtrace
|
||||
is able to find no longer referenced memory allocation by scanning all
|
||||
writable memory mappings of the program against the pointer of the allocation.
|
||||
If the memory address will be not found during a scan there is a high change
|
||||
for a missing reference and therefore for a memory leak.
|
||||
|
||||
The following funtions will be intercepted:
|
||||
|
||||
.in +4
|
||||
.nf
|
||||
void *malloc(size_t size);
|
||||
void free(void *ptr);
|
||||
void *calloc(size_t nmemb, size_t size);
|
||||
void *realloc(void *ptr, size_t size);
|
||||
int posix_memalign(void **memptr, size_t alignment, size_t size);
|
||||
void *aligned_alloc(size_t alignment, size_t size);
|
||||
void *valloc(size_t size);
|
||||
void *memalign(size_t alignment, size_t size);
|
||||
void *pvalloc(size_t size);
|
||||
void cfree(void *ptr);
|
||||
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
|
||||
void *mmap64(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
|
||||
int munmap(void *addr, size_t length);
|
||||
void *mremap(void *old_address, size_t old_size, size_t new_size, int flags, ... /* void *new_address */);
|
||||
|
||||
void *operator new(size_t size) throw (std::bad_alloc)
|
||||
void *operator new(size_t size, const std::nothrow_t& nt) __THROW
|
||||
void *operator new[](size_t size) throw (std::bad_alloc)
|
||||
void *operator new[](size_t size, const std::nothrow_t& nt) __THROW
|
||||
void operator delete(void* p) __THROW
|
||||
void operator delete(void* p, const std::nothrow_t& nt) __THROW
|
||||
void operator delete[](void* p) __THROW
|
||||
void operator delete[](void* p, const std::nothrow_t& nt) __THROW
|
||||
.fi
|
||||
.in
|
||||
.PP
|
||||
.B mtrace
|
||||
offers four different kind of modes. A non interactive mode, a server
|
||||
mode and a interactive and non interactive client mode.
|
||||
|
||||
The most common mode is the non interactive mode, which allows to run
|
||||
and/or attach to a process, similar to strace.
|
||||
.B mtrace
|
||||
will show all open allocations when the traced program exists or
|
||||
.B mtrace
|
||||
will be terminated.
|
||||
|
||||
For system with memory restrictions or cross architecture
|
||||
.B mtrace
|
||||
offers a server mode which moves the memory bookkeeping and address resolution
|
||||
outside to a connected client. In this case the server must be started on
|
||||
target system where the program is executed. Then the client has to be started
|
||||
on the host system.
|
||||
|
||||
To get a more detailed information about the dynamic memory consumption
|
||||
.B mtrace
|
||||
can be started in an interactive mode. This mode is available for client
|
||||
mode or when attaching to a process. See the section \fBINTERACTIVE MODE\fR
|
||||
to learn more about the interactive commands in
|
||||
\fBmtrace\fR.
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
.IP "\-a, \-\-autoscan"
|
||||
Scan all writeable memory mappings of the process for leaked pointers on exit
|
||||
of the traced program or termination of \fBmtrace\fR. If the pointer value of an
|
||||
open allocated memory block will be not found on any aligned memory addresses,
|
||||
it will be marked and reported as leaked. The scan can take a very long time,
|
||||
depending on the size of the writeable memory mappings and the number of open
|
||||
allocations.
|
||||
.IP "\-b, \-\-binpath \fIpath\fR"
|
||||
Set the binary search path. This option is mostly needed for remote cross
|
||||
architecture trace and tells the client where to find the binaries or
|
||||
libraries. The client tries to locate the binaries by adding the remote path
|
||||
of the binary to the search path. If the binary is not found it will strip
|
||||
down the leading directory of the remote path and try again until no more
|
||||
leading directory is found. It is possible to add several binary search paths
|
||||
by passing more than one option -b.
|
||||
.IP "\-c, \-\-client \fIaddr\fR"
|
||||
Run
|
||||
.B mtrace
|
||||
as client and connect to a socket. If addr begins with / or . it will assumed
|
||||
a named socket, otherwise it will be passed to getaddrinfo(3), which handles
|
||||
any kind of hostname, IPv4 or IPv6 addresses.
|
||||
.IP "\-C, \-\-cwd \fIpath\fR"
|
||||
This option is valid in any mode except the client mode. Its used for locating
|
||||
libraries for an attached process which are linked with relative paths. In this
|
||||
case
|
||||
.B mtrace
|
||||
does not know the origin state of the current working directory and need
|
||||
to manually add this information.
|
||||
.IP "\-D, \-\-debug \fImask\fR"
|
||||
Show debugging output of
|
||||
.B mtrace
|
||||
itself. \fImask\fR is a number
|
||||
describing which debug messages should be displayed. Use the option
|
||||
\-Dh to see what can be used. This option is only available when
|
||||
.B mtrace
|
||||
was build with --enable-debug.
|
||||
.IP "\-d, \-\-depth \fIlevel\fR"
|
||||
Do backtrace of \fIlevel\fR stack frames for each memory allocation function.
|
||||
.IP "\-f, \-\-follow-fork"
|
||||
Trace child processes as they are created by one of the currently traced
|
||||
processes as a result of the fork(2) system call.
|
||||
.IP "\-f, \-\-follow-exec"
|
||||
Trace processes as they are created by one of the currently traced processes as
|
||||
a result of execve(2) system call.
|
||||
.IP "\-F, \-\-config \fIpath"
|
||||
Set the config file. For a detailed description of this file see
|
||||
mtrace.conf(5). It is possible to pass several config files by passing more
|
||||
than one option \-F. If no -F is given,
|
||||
.B mtrace
|
||||
will look up for one of the default files in the following order:
|
||||
$HOME/.mtrace,
|
||||
$XDG_CONFIG_HOME/mtrace,
|
||||
SYSCONFDIR/mtrace.conf,
|
||||
/etc/mtrace.conf
|
||||
.IP "\-h, \-\-help"
|
||||
Show a summary of the options to mtrace and exit.
|
||||
.IP "\-i, \-\-interactive"
|
||||
Enables the interactive mode for client or when attaching to a process. See
|
||||
the section \fBINTERACTIVE MODE\fR to learn more about the interactive commands
|
||||
in this mode.
|
||||
.IP "\-k, \-\-kill"
|
||||
Kill mtrace in case of a bookkeeping error. This options is for
|
||||
.B mtrace
|
||||
development only!
|
||||
.IP "\-l, \-\-listen \fIaddr"
|
||||
Listen on socket path or address in server mode. If addr begins with / or . it
|
||||
will assumed a named socket, otherwise it will be passed to getaddrinfo(3),
|
||||
which handles any kind of hostname, IPv4 or IPv6 addresses.
|
||||
.IP "\-o, \-\-output \fIfilename"
|
||||
Write the trace output to the file \fIfilename\fR rather than to stderr. When
|
||||
passing this option the output will be written in reserve order in opposite the
|
||||
stderr output. So the highest value of the sort order is at the beginning of
|
||||
the file and the lowest at the end of the file.
|
||||
.IP "\-n, \-\-nocpp"
|
||||
Disable the trace of C++ allocation operators. This is safe and faster for libstdc++,
|
||||
since this library does call malloc() and free() inside the allocation operators.
|
||||
.IP "\-p, \-\-pid \fIpid"
|
||||
Attach to the process with the process ID \fIpid\fR and begin tracing.
|
||||
This option can be used together with passing a command to execute.
|
||||
It is possible to attach to several processes by passing more than one
|
||||
option \-p.
|
||||
.IP "\-P, \-\-port \fInum"
|
||||
Set the port number for client or server mode. The default port number is 4576.
|
||||
.IP "\-s, \-\-server"
|
||||
Run mtrace in server mode. This is mostly needed for remote cross architecture
|
||||
trace or when running an interactive client. If no option -l and -P is passed
|
||||
to the sever mode, the server will listen on any address using port 4576.
|
||||
.IP "\-S, \-\-sortby keyword"
|
||||
Sort the output of the stack backtraces by keyword. Valid keywords are:
|
||||
|
||||
.RS
|
||||
\fIallocations\fR
|
||||
.RS
|
||||
Sort by the number of open allocations.
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fIaverage\fR
|
||||
.RS
|
||||
Sort by the number of average allocations (number of bytes in used / number of open allocations).
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fIbytes-leaked\fR
|
||||
.RS
|
||||
Sort by number of bytes leaked (only useful with option -a).
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fIleaks\fR
|
||||
.RS
|
||||
Sort by number of leaked allocations (only useful with option -a).
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fIstacks\fR
|
||||
.RS
|
||||
Like \fIallocations\fR but show also all stack backtraces with zero open allocations.
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fItotal\fR
|
||||
.RS
|
||||
Sort by the total number of allocations.
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fItsc\fR
|
||||
.RS
|
||||
Sort by the pseudo time stamp counter. Each stack backtrace will get an incremented counter value.
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fIusage\fR
|
||||
.RS
|
||||
Sort by number of bytes in use of all open allocations.
|
||||
.RE
|
||||
.RE
|
||||
.IP "\-u \fIusername"
|
||||
Run command with the userid, groupid and supplementary groups of
|
||||
.IR username .
|
||||
This option is only useful when running as root and enables the
|
||||
correct execution of setuid and/or setgid binaries.
|
||||
.IP "\-v, \-\-verbose"
|
||||
Be verbose and display more details about what going on. This option can be
|
||||
repeated for a more detailed view.
|
||||
.IP "\-V, \-\-version"
|
||||
Show the version number of mtrace and exit.
|
||||
.IP "\-w, \-\-wait"
|
||||
This option stops the execution of the traced processes until a client is
|
||||
connected to the server. So this option is only valid in server mode.
|
||||
.SH INTERACTIVE MODE
|
||||
|
||||
The interactive mode offers a command line interface, which allows to gather
|
||||
different kind of debug statistics during the runtime and after termination of
|
||||
the traced program. Due the use of readline it offers auto completion by
|
||||
using the TAB key. The following commands are available:
|
||||
|
||||
.in +4
|
||||
.nf
|
||||
dump
|
||||
help
|
||||
proclist
|
||||
quit
|
||||
reset
|
||||
scan
|
||||
set
|
||||
show
|
||||
start
|
||||
status
|
||||
stop
|
||||
.fi
|
||||
.in
|
||||
.PP
|
||||
|
||||
.IP "dump \fIsortby\fR \fIpid\fR \fI>filename\fR"
|
||||
The dump command allows to output the current state of the memory bookkeeping
|
||||
at any time. It accepts a maximum of three parameters:
|
||||
|
||||
.RS
|
||||
\fIsortby\fR
|
||||
.RS
|
||||
Sort the output of dump by the keyword. The keyword is the same as for the
|
||||
option -S (\fIallocations, \fIaverage\fR, \fIbytes-leaked\fR, \fIleaks\fR,
|
||||
\fIstacks\fR, \fItotal\fR, \fItsc\fR and \fIusage\fR). See option -S for
|
||||
more details about the sortby keywords. The default sort order is
|
||||
\fIallocations\fR when no sortby parameter is used.
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fIpid\fR
|
||||
.RS
|
||||
Process Id. When no process Id is specified the lowest pid of all currently
|
||||
traced processes will be used as default.
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fI>filename\fR
|
||||
.RS
|
||||
Write the output to a file. When the parameter is omitted it will paging the
|
||||
dump output.
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.IP "help \fIcommand\fR"
|
||||
Shows the help text for a given command. If no command parameter is passed, it
|
||||
will show all available commands.
|
||||
|
||||
.IP "proclist"
|
||||
Shows the list of currently traced processes.
|
||||
|
||||
.IP "quit"
|
||||
Close the client connection and exit the
|
||||
.B mtrace
|
||||
debugger.
|
||||
|
||||
.IP "reset \fIpid\fR"
|
||||
Reset the bookkeeping of a given process Id.
|
||||
|
||||
.IP "scan \fIpid\fR \fImode\fR"
|
||||
Scan for memory leaks for a given process Id. The scan operation can be only
|
||||
performed when tracing is running. \fImode\fR is one of the following keywords:
|
||||
|
||||
.RS
|
||||
\fIall\fR
|
||||
.RS
|
||||
Scan all open allocations for leaking.
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fIleak\fR
|
||||
.RS
|
||||
Scan all leaked marked allocations again.
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fInew\fR
|
||||
.RS
|
||||
Scan only allocations since last scan.
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.IP "set searchpath \fIpathes\fR"
|
||||
Set the searchpath for binaries and libraries. This is similar to to options
|
||||
-b. To pass more the one path search path, use a colon as seperator. For a
|
||||
detailed description about the search path see option -B.
|
||||
|
||||
.IP "show \fI...\fR"
|
||||
Show information about
|
||||
|
||||
.RS
|
||||
\fIinfo\fR
|
||||
.RS
|
||||
Shows client settings.
|
||||
.RE
|
||||
.RE
|
||||
.RS
|
||||
\fIsearchpath\fR
|
||||
.RS
|
||||
Show searchpath for binaries and libraries.
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.IP "start \fIpid\fR"
|
||||
Start allocation tracing.
|
||||
|
||||
.IP "status \fIpid\fR"
|
||||
Show allocation status.
|
||||
|
||||
.IP "stop \fIpid\fR"
|
||||
Stop allocation tracing. Note that in this state the \fIscan\fR command can
|
||||
not performed.
|
||||
|
||||
.SH BUGS
|
||||
It only works on Linux for X86, X86_64, ARM 32 and PowerPC 32. No Hardware
|
||||
Breakpoint support on ARM and PowerPC. No ARM Thumb support. See TODO file
|
||||
for more open issues.
|
||||
.LP
|
||||
.PP
|
||||
If you would like to report a bug, send a mail to stefani@seibold.net
|
||||
.SH FILES
|
||||
.TP
|
||||
.I /etc/mtrace.conf\fR or \fISYSCONFDIR/mtrace.conf
|
||||
System configuration file
|
||||
.TP
|
||||
.I $HOME/.mtrace\fR or \fI$XDG_CONFIG_HOME/mtrace
|
||||
Personal config file, overrides system configuration file
|
||||
.PP
|
||||
|
||||
See mtrace.conf(5) for details on the syntax of this file.
|
||||
.SH AUTHOR
|
||||
Stefani Seibold <stefani@seibold.net>
|
||||
.SH "SEE ALSO"
|
||||
.BR mtrace.conf(5),
|
||||
.BR ptrace(2)
|
||||
50
mtrace.conf.5
Normal file
50
mtrace.conf.5
Normal file
@ -0,0 +1,50 @@
|
||||
.\" -*-nroff-*-
|
||||
.\" Copyright (c) 2015 Stefani Seibold <stefani@seibold.net>
|
||||
.\"
|
||||
.\" This program is free software; you can redistribute it and/or
|
||||
.\" modify it under the terms of the GNU General Public License as
|
||||
.\" published by the Free Software Foundation; either version 2 of the
|
||||
.\" License, or (at your option) any later version.
|
||||
.\"
|
||||
.\" This program is distributed in the hope that it will be useful, but
|
||||
.\" WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
.\" General Public License for more details.
|
||||
.\"
|
||||
.\" You should have received a copy of the GNU General Public License
|
||||
.\" along with this program; if not, write to the Free Software
|
||||
.\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
||||
.\" 02110-1301 USA
|
||||
.\"
|
||||
.TH mtrace.conf "5" "May 2015" "" "mtrace configuration file"
|
||||
.SH "NAME"
|
||||
.LP
|
||||
\fBmtrace.conf\fR \- Configuration file for \fBmtrace(1)\fR.
|
||||
|
||||
.SH DESCRIPTION
|
||||
|
||||
This manual page describes \fBmtrace.conf\fR, a file that contains
|
||||
configuration information for \fBmtrace(1)\fR to use.
|
||||
|
||||
Each line of a configuration file describes at most a single item.
|
||||
Lines composed entirely of white space are ignored, as are lines
|
||||
starting with a hash characters (comment lines).
|
||||
|
||||
Currently only one command is available: \fIignore\fR
|
||||
|
||||
.SH ignore
|
||||
|
||||
The ignore command is followed by a regular expression. All allocations where
|
||||
the regular expression match will be ignored by the memory allocation
|
||||
bookkeeping.
|
||||
|
||||
The syntax is as follows:
|
||||
|
||||
.RS
|
||||
\fIignore\fR \fIregex\fR
|
||||
.RE
|
||||
|
||||
It is possible to use several ignore commands for several regular expressions.
|
||||
|
||||
.SH AUTHOR
|
||||
Stefani Seibold <stefani@seibold.net>
|
||||
Loading…
x
Reference in New Issue
Block a user