Skip to content

Debugging

John Cupitt edited this page Apr 8, 2017 · 1 revision

Debug build:

$ CFLAGS="-g -Wall" CXXFLAGS="-g -Wall" \
	./configure --prefix=/home/john/vips --enable-debug
$ make
$ make install

Leak check:

$ export G_DEBUG=gc-friendly
$ valgrind --suppressions=libvips.supp \
	--leak-check=yes \
	vips ... > vips-vg.log 2>&1

Memory error debug:

$ valgrind --vgdb=yes --vgdb-error=0 vips  ...

valgrind threading check:

$ valgrind --tool=helgrind vips ... > vips-vg.log 2>&1

Clang build:

$ CC=clang CXX=clang++ ./configure --prefix=/home/john/vips

Clang static analysis:

$ scan-build ./configure --disable-introspection --disable-debug
$ scan-build -o scan -v make 
$ scan-view scan/2013-11-22-2

Clang dynamic analysis:

$ FLAGS="-O1 -g -fsanitize=address"
$ FLAGS="$FLAGS -fno-omit-frame-pointer -fno-optimize-sibling-calls"
$ CC=clang CXX=clang++ LD=clang \
	CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" LDFLAGS=-fsanitize=address \
	./configure --prefix=/home/john/vips 

$ FLAGS="-O1 -g -fsanitize=thread"
$ FLAGS="$FLAGS -fPIC"
$ FLAGS="$FLAGS -fno-omit-frame-pointer -fno-optimize-sibling-calls"
$ CC=clang CXX=clang++ LD=clang \
	CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" \
	LDFLAGS="-fsanitize=thread -fPIC" \
	./configure --prefix=/home/john/vips \
		--without-magick \
		--disable-introspection
$ G_DEBUG=gc-friendly vips copy ~/pics/k2.jpg x.jpg >& log

Build with the GCC auto-vectorizer and diagnostics (or just -O3):

$ FLAGS="-O2 -msse4.2 -ffast-math"
$ FLAGS="$FLAGS -ftree-vectorize -fdump-tree-vect-details"
$ CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" \
	./configure --prefix=/home/john/vips 

Static analysis with:

$ cppcheck --force --enable=style . &> cppcheck.log
Clone this wiki locally