Concuerror's options module
The _option()
functions listed on this page all correspond to
valid configuration options.
For general documentation go to the Overview page.
You can also access documentation about options using the help
option. You can get more help with concuerror --help help
. In the future even more
help might be added.
If you invoke Concuerror without an argument, --help
is assumed
as an argument.
The type of each options' argument is listed at the option's
specification below. When specifying integer()
or boolean()
options in the command line you can omit true
or 1
as values.
--module
to pass options to Concuerror:
-concuerror_options(Options)
-concuerror_options_forced(Options)
This information is also available via concuerror --help attributes
Each option is associated with one or more
keywords. These can be used with help
to find related options.
If you invoke help
without an argument,
you will only see options with the keyword basic
. To see all
options use --help all
.
Some options can be specified multiple times, each time with a different argument. For those that don't the last value is kept (this makes invocation via command line easier). Concuerror reports any overrides.
By default, Concuerror prints diagnostic messages in the standard
error stream. Such messages are also printed at the bottom of the
Report File after the analysis is completed. You can
find explanation of the classification of these messages in the
verbosity
option.
By default, Concuerror also prints progress information in the
standard error stream. You can find what is the meaning of each field
by running concuerror --help progress
.
The printout can be reduced or disabled (see verbosity
option). Diagnostic messages are
always printed in the Report File.
By default, Concuerror prints analysis findings in a report file.
This file contains:
An error report corresponds to an interleaving that lead to errors and contains at least the following sections:
If the program produce any output, this is also included.
By default, Concuerror reports the following errors:If the show_races
option is used,
the pairs of racing events that justify the exploration of new
interleavings are also shown. These are shown for all
interleavings, not only the ones with errors.
log_all
option is used,
all interleavings will be shown, not only the ones with errors.
bound() = infinity | non_neg_integer()
If you want to pass infinity
as option from the command-line, use -1
.
dpor() = none | optimal | persistent | source
See dpor_option/0
for the meaning of values.
abstract datatype: option_spec()
This is used internally to specify option components and is irrelevant for a user of Concuerror.
options() = proplists:proplist()
Concuerror's configuration options are given as a proplist()
.
See the list of functions in this module for valid configuration
options.
scheduling() = oldest | newest | round_robin
See scheduling_option/0
for the meaning of values.
scheduling_bound_type() = bpor | delay | none | ubpor
See scheduling_bound_option/0
for the meaning of values.
after_timeout_option/0 | Threshold for treating timeouts as infinity. |
assertions_only_option/0 | Report only abnormal exits due to ?asserts |
assume_racing_option/0 | Do not crash if race info is missing. |
depth_bound_option/0 | Maximum number of events. |
disable_sleep_sets_option/0 | Disable sleep sets. |
dpor_option/0 | DPOR technique. |
exclude_module_option/0 | * Modules that should not be instrumented. |
file_option/0 | Load specified file (.beam or .erl). |
first_process_errors_only_option/0 | Report only errors that involve the first process. |
graph_option/0 | Produce a DOT graph in the specified file. |
help_option/0 | Display help (use -h h for more help). |
ignore_error_option/0 | Error categories that should be ignored. |
instant_delivery_option/0 | Make messages and signals arrive instantly. |
interleaving_bound_option/0 | Maximum number of interleavings. |
keep_going_option/0 | Keep running after an error is found. |
log_all_option/0 | Show all interleavings in log. |
module_option/0 | Module containing the test function. |
no_output_option/0 | Do not produce an analysis report. |
non_racing_system_option/0 | No races due to 'system' messages. |
observers_option/0 | Synonym for --use_receive_patterns |
optimal_option/0 | Synonym for --dpor optimal (true) | source (false) |
options/0 | |
output_option/0 | Filename to use for the analysis report. |
pa_option/0 | Add directory to Erlang's code path (front). |
parse_cl/1 | Converts command-line arguments to a proplist using getopt. |
print_depth_option/0 | Print depth for log/graph. |
pz_option/0 | Add directory to Erlang's code path (rear). |
quiet_option/0 | Synonym for --verbosity 0 |
scheduling_bound_option/0 | Scheduling bound value. |
scheduling_bound_type_option/0 | * Schedule bounding technique. |
scheduling_option/0 | Scheduling order. |
show_races_option/0 | Show races in log/graph. |
strict_scheduling_option/0 | Force preemptions when scheduling. |
symbolic_names_option/0 | Use symbolic process names. |
test_option/0 | Name of test function. |
timeout_option/0 | How long to wait for an event (>= 500ms). |
treat_as_normal_option/0 | Exit reason treated as normal (i.e., not reported as an error). |
use_receive_patterns_option/0 | Use receive patterns for racing sends. |
verbosity_option/0 | Verbosity level (0-7). |
version_option/0 | Display version information. |
after_timeout_option() -> option_spec()
Threshold for treating timeouts as infinity
--after_timeout Value
or {after_timeout, Value}
-a
bound()
infinity
after
clauses with timeouts higher or equal to the specified value cannot be triggered. Concuerror treats all lower values as triggerable
assertions_only_option() -> option_spec()
Report only abnormal exits due to ?asserts
--assertions_only Value
or {assertions_only, Value}
boolean()
false
{{assert*, _}, _}
are considered errors. Such exit reasons are generated e.g. by the macros defined in the stdlib/include/assert.hrl
header file.
assume_racing_option() -> option_spec()
Do not crash if race info is missing
--assume_racing Value
or {assume_racing, Value}
boolean()
true
depth_bound_option() -> option_spec()
Maximum number of events
--depth_bound Value
or {depth_bound, Value}
-d
integer()
500
disable_sleep_sets_option() -> option_spec()
Disable sleep sets
--disable_sleep_sets Value
or {disable_sleep_sets, Value}
boolean()
false
--dpor none
.
dpor_option() -> option_spec()
DPOR technique
--dpor Value
or {dpor, Value}
dpor()
optimal
none
: Disable DPOR. Not recommended.
- optimal
: Using source sets and wakeup trees.
- source
: Using source sets only. Use this if the rate of
exploration is too slow. Use optimal
if a lot of
interleavings are reported as sleep-set blocked.
- persistent
: Using persistent sets. Not recommended.
exclude_module_option() -> option_spec()
* Modules that should not be instrumented
--exclude_module Value
or {exclude_module, Value}
-x
atom()
file_option() -> option_spec()
Load specified file (.beam or .erl)
--file Value
or {file, Value}
-f
string()
Explicitly load the specified file(s) (.beam or .erl). Source (.erl) files should not require any command line compile options. Use a .beam file (preferably compiled with +debug_info
) if special compilation is needed.
first_process_errors_only_option() -> option_spec()
Report only errors that involve the first process
--first_process_errors_only Value
or {first_process_errors_only, Value}
boolean()
false
graph_option() -> option_spec()
Produce a DOT graph in the specified file
--graph Value
or {graph, Value}
-g
string()
dot -Tsvg -o graph.svg graph
help_option() -> option_spec()
Display help (use -h h
for more help)
--help Value
or {help, Value}
-h
atom()
Without an argument, prints info for basic options.
With all
as argument, prints info for all options.
With attributes
as argument, prints info about passing options using module attributes.
With progress
as argument, prints info about what the items in the progress info mean.
With an option name as argument, prints more help for that option.
Options have keywords associated with them (shown in their help). With a keyword as argument, prints a list of all the options that are associated with the keyword.
If a boolean or integer argument is omitted,true
or 1
is the implied value.
ignore_error_option() -> option_spec()
Error categories that should be ignored
--ignore_error Value
or {ignore_error, Value}
atom()
abnormal_exit
: processes exiting with any abnormal reason; check -h treat_as_normal
and -h assertions_only
for more refined control
- abnormal_halt
: processes executing erlang:halt/1,2 with status /= 0
- deadlock
: processes waiting at a receive statement
- depth_bound
: reaching the depth bound; check -h depth_bound
instant_delivery_option() -> option_spec()
Make messages and signals arrive instantly
--instant_delivery Value
or {instant_delivery, Value}
boolean()
true
interleaving_bound_option() -> option_spec()
Maximum number of interleavings
--interleaving_bound Value
or {interleaving_bound, Value}
-i
bound()
infinity
keep_going_option() -> option_spec()
Keep running after an error is found
--keep_going Value
or {keep_going, Value}
-k
boolean()
false
Concuerror stops by default when the first error is found. Enable this option to keep looking for more errors.
It is usually recommended to modify the test, or use the--ignore_error
/ --treat_as_normal
options, instead of this one.
log_all_option() -> option_spec()
Show all interleavings in log
--log_all Value
or {log_all, Value}
boolean()
false
module_option() -> option_spec()
Module containing the test function
--module Value
or {module, Value}
-m
atom()
Concuerror begins exploration from a test function located in the module specified by this option.
There is no need to specify modules used in the test if they are in Erlang's code path. Otherwise use--file
, --pa
or --pz
.
no_output_option() -> option_spec()
Do not produce an analysis report
--no_output Value
or {no_output, Value}
boolean()
non_racing_system_option() -> option_spec()
No races due to 'system' messages
--non_racing_system Value
or {non_racing_system, Value}
atom()
observers_option() -> option_spec()
Synonym for --use_receive_patterns
--observers Value
or {observers, Value}
boolean()
See also: use_receive_patterns_option/0.
optimal_option() -> option_spec()
Synonym for --dpor optimal (true) | source (false)
--optimal Value
or {optimal, Value}
boolean()
See also: dpor_option/0.
options() -> [option_spec()]
output_option() -> option_spec()
Filename to use for the analysis report
--output Value
or {output, Value}
-o
string()
"concuerror_report.txt"
pa_option() -> option_spec()
Add directory to Erlang's code path (front)
--pa Value
or {pa, Value}
string()
erl -pa
.
parse_cl(CommandLineArgs::[string()]) -> {run, options()} | {return, concuerror:analysis_result()}
Converts command-line arguments to a proplist using getopt
This function also augments the interface of getopt, allowingprint_depth_option() -> option_spec()
Print depth for log/graph
--print_depth Value
or {print_depth, Value}
integer()
20
~W
and ~P
argument of io:format/3
). If you want more info about a particular piece of data in an interleaving, consider using erlang:display/1
and checking the standard output section in the error reports of the analysis report instead.
pz_option() -> option_spec()
Add directory to Erlang's code path (rear)
--pz Value
or {pz, Value}
string()
erl -pz
.
quiet_option() -> option_spec()
Synonym for --verbosity 0
--quiet Value
or {quiet, Value}
-q
boolean()
See also: verbosity_option/0.
scheduling_bound_option() -> option_spec()
Scheduling bound value
--scheduling_bound Value
or {scheduling_bound, Value}
-b
integer()
--scheduling_bound_type
can be violated.
scheduling_bound_type_option() -> option_spec()
* Schedule bounding technique
--scheduling_bound_type Value
or {scheduling_bound_type, Value}
-c
scheduling_bound_type()
none
Enables scheduling rules that prevent interleavings from being explored. The available options are:
- none
: no bounding
- bpor
: how many times per interleaving the scheduler is allowed
to preempt a process.
* Not compatible with Optimal DPOR.
- delay
: how many times per interleaving the scheduler is allowed
to skip the process chosen by default in order to schedule
others.
- ubpor
: same as bpor
but without conservative backtrack points.
* Experimental, unsound, not compatible with Optimal DPOR.
scheduling_option() -> option_spec()
Scheduling order
--scheduling Value
or {scheduling, Value}
scheduling()
round_robin
oldest
, newest
and round_robin
, with the expected semantics.
show_races_option() -> option_spec()
Show races in log/graph
--show_races Value
or {show_races, Value}
boolean()
false
strict_scheduling_option() -> option_spec()
Force preemptions when scheduling
--strict_scheduling Value
or {strict_scheduling, Value}
boolean()
false
symbolic_names_option() -> option_spec()
Use symbolic process names
--symbolic_names Value
or {symbolic_names, Value}
-s
boolean()
true
Replace PIDs with symbolic names in outputs. The format used is:
<[symbolic name]/[last registered name]>
where [symbolic name] is:
P
, for the first process and
- [parent symbolic name].[ordinal]
, for any other process, where [ordinal] shows the order of spawning (e.g. <P.2>
is the second process spawned by <P>
).
The [last registered name]
part is shown only if applicable.
test_option() -> option_spec()
Name of test function
--test Value
or {test, Value}
-t
atom()
test
--module
. Concuerror will start the test by spawning a process that calls this function.
timeout_option() -> option_spec()
How long to wait for an event (>= 500ms)
--timeout Value
or {timeout, Value}
bound()
5000
infinity
will make Concuerror wait indefinitely. Otherwise must be >= 500.
treat_as_normal_option() -> option_spec()
Exit reason treated as normal
(i.e., not reported as an error)
--treat_as_normal Value
or {treat_as_normal, Value}
atom()
shutdown
is usually a normal exit reason in this case).
use_receive_patterns_option() -> option_spec()
Use receive patterns for racing sends
--use_receive_patterns Value
or {use_receive_patterns, Value}
boolean()
true
verbosity_option() -> option_spec()
Verbosity level (0-7)
--verbosity Value
or {verbosity, Value}
-v
integer()
4
The value of verbosity determines what is shown on standard error. Messages up to info are always also shown in the output file. The available levels are the following:
0 (quiet) Nothing is printed (equivalent to--quiet
)
1 (error) Critical, resulting in early termination
2 (warn) Non-critical, notifying about weak support for a feature or
the use of an option that alters the output
3 (tip) Notifying of a suggested refactoring or option to make
testing more efficient
4 (info) Normal operation messages, can be ignored
5 (time) Timing messages
6 (debug) Used only during debugging
7 (trace) Everything else
version_option() -> option_spec()
Display version information
--version Value
or {version, Value}
undefined()
Generated by EDoc