Useful Debugging Options

With any program compiled with our toolchains, the following options print out various important intermediate representations.

    -ShowREs                         - Print parsed or generated regular expressions
    -ShowPablo                       - Print generated Pablo code
    -ShowIR                          - Print generated LLVM IR.
    -ShowASM                         - Print assembly code.

For example, try

./icgrep -ShowREs myRegExp


./icgrep -ShowASM myRegExp

Runtime traces of Pablo code can be printed with

    -DumpTrace                       - Generate dynamic traces of executed Pablo assignments.

Finally, (for the adventurous), if you are having problems with segmented pipeline parallelism mode, you can check what happens with the following flag.

    -SerializeThreads                - Force segment threads to run sequentially.

With this option, if you get correct output that matches the single-thread output, then it is likely that there is a race condition. However, if the output shows anomalous behaviour, then it is likely a logical problem in kernel, buffer or pipeline structure.