# latrace configuration file - version @CONFIG_VERSION@ # include another configuration file # INCLUDE "latrace-user.conf" OPTIONS { # -a, --args # arguments definition file, implies '-A' # defaults to $sysconfdir/etc/latrace.d/headers/latrace.h # HEADERS = "headers.h" # -i, --indent-sym # specify indent size specification INDENT_SYM = 2 # -p, --pipe # use pipe to latrace process to send audit data # latrace app is then the one displaying the output PIPE = YES # -S, --timestamp # display timestamp for each symbol TIMESTAMP = NO # -y, --framesize # framesize for storing the stack before pltexit FRAMESIZE = 1000 # -Y, --no-framesize-check # framesize check FRAMESIZE_CHECK = YES # -T, --hide-tid # dont display thread id HIDE_TID = NO # -F, --no-follow-fork # dont follow fork calls - childs FOLLOW_FORK = YES # -E, --no-follow-exec # dont follow exec calls FOLLOW_EXEC = YES # -d, --demangle # run the symbol name throught the C++ demangler DEMANGLE = NO # -B, --braces # always display braces {} BRACES = NO # -A, --enable-args # enable arguments output (definitions from headers) ENABLE_ARGS = NO # -D, --detail-args # display struct arguments in more detail DETAIL_ARGS = NO # no command line option equivalent # stores terminal output to the file # OUTPUT_TTY = "output-tty" # Following options: # LIBS/LIBS_TO/LIBS_FROM # SYM/SYM_OMIT/SYM_BELOW/SYM_NOEXIT # # use list of names as value. Single names in the list are # separated by comma ','. If the first char of a single name # is '*', then the name is search for as substring, otherwise # exact match is used. # -l, --libs # LIBS = krava.so # -t, --libs-to # LIBS_TO = krava.so # -f, --libs-from # LIBS_FROM = krava.so # -s, --sym # SYM = krava # -n, --sym-omit # SYM_OMIT = krava # -b, --flow-below # SYM_BELOW = krava # no command line option equivalent SYM_NOEXIT = _setjmp # no command line option equivalent # function arguments - display string length and pointer value ARGS_STRING_POINTER_LENGTH = NO } # error simulation # #ERROR krava { # DIR /krava/ # PROG krava # # RETURN R1 { # malloc = 100 # krava = 1 # FILTER NTH 10,12,14 # } # # RETURN R2 { # malloc = 100 FILTER SEQ # krava = 1 FILTER NTH 10,1-5 # } # # RETURN R3 { # malloc = 100 # krava = 1 # FILTER STACK stack1 # } # # RETURN R3 { # malloc = 100 # krava = 1 # FILTER ARGS krava ARG a = 10 # } # # RETURN R4 { # malloc = 100, 0, -1 # krava = 1,2,3 # krava1 = 0 # FILTER INTERACTIVE # } # # RUN run1 { # RETURN R1 # ARGS # } # # RUN run2 { # RETURN R1 # RETURN R2 # ARGS # } # # RUN run3 { # RETURN R1 # RETURN R2 # ARGS a a a # } # # RUN run4 { # ARGS a a a # } # # GO go1 N=100 run1,run2 # GO go2 run3 # GO go3 AUTOMATED run4 #} # # #ERROR krava { # DIR /krava # PROG krava # # RETURN R1 { # sym1 = -1 # sym2 = 0 # sym1 = NA # sym3 = 0 # sym4 = -1 # } # # RETURN R2 { # sym1 = -1 SIGSEGV # sym2 = 0 # sym1 = KEEP # sym1 = -2 # sym3 = 0 # sym4 = -1 # } # # RUN run1 { # TYPE AUTO MAX 100 # # START SYM sym4 # START LIB libc # START NTH 10 # # RETURN R1, R2 # ARGS a a a # } # # RUN run2 { # TYPE SEQ # # START SYM sym4 # START LIB libc # START NTH 10 # # RETURN R1 # ARGS a a a # } # # RUN run3 { # TYPE REPLAY # # START sym=sym4,lib=libc,n=4 # # RETURN R1 # ARGS a a a # } # # GO run1 # GO run2 #} # directory structure # ------------------- # DIR/latrace-PROG # - created based on DIR/PROG settings # DIR/latrace-PROG/latest # - created by latest run instance # DIR/latrace-PROG/latest-TIME # - moved from current latest dir # DIR/latrace-PROG/latest/GO/ # - created by processed GO # DIR/latrace-PROG/latest/GO/RUN-N # - created by processed RUN plus N value