[[PageOutline]] = Debugging WebKitGTK+ = You need a compilation with symbols (''take it easy as it'll take some time/hours''): {{{ #!sh $ Tools/Scripts/build-webkit --gtk --debug }}} On 32-bits arch it is quite unlikely this build will succeed. If you need a build with debug symbols but still without ASSERTs enabled you can try these options: {{{ #!sh $ Tools/Scripts/build-webkit --gtk --disable-fast-malloc --enable-debug-symbols=full --disable-optimizations }}} In other to run ''GtkLauncher'' under ''gdb'' you should use a ''jhbuild'' shell and run ''gdb'' normally or use the ''jhbuild-wrapper'' as follows: {{{ #!sh $ Tools/jhbuild/jhbuild-wrapper --gtk run gdb --args WebKitBuild/Debug/Programs/GtkLauncher }}} == Logging support == Logging and other output/behaviors support is activated by default in a ''Debug'' build only. In addition to having the logging support activated in the compilation, we need also to turn on the proper logging channels when running. These channels are defined in the [http://trac.webkit.org/browser/trunk/Source/WebCore/platform/Logging.h Source/WebCore/platform/Logging.h] and [http://trac.webkit.org/browser/trunk/Source/WebKit2/Platform/Logging.h Source/WebKit2/Platform/Logging.h] headers in the code: For passing the wanted channels to the running process we need to use the ''WEBKIT_DEBUG'' env variable as it is seen in the [http://trac.webkit.org/browser/trunk/Source/WebCore/platform/gtk/LoggingGtk.cpp WebCore/platform/gtk/LoggingGtk.cpp] and [http://trac.webkit.org/browser/trunk/Source/WebKit2/Platform/gtk/LoggingGtk.cpp Source/WebKit2/Platform/gtk/LoggingGtk.cpp] files in the code. * Notice also the ''DISABLE_NI_WARNING'' env variable referred there. It is important to export the ''WEBKIT_DEBUG'' env variable so we will want it also to affect the ''WeProcess''. * This is an example for turning on the logging int he ''Network'' channel. Notice that the channels are case insensitive. {{{ #!sh $ export WEBKIT_DEBUG="network" $ Tools/Scripts/run-minibrowser --gtk }}} It is also possible to turn '''on''' the logging and other output/behaviors support in a ''Release'' build by setting the proper C Macros. You may want to check the [http://trac.webkit.org/browser/trunk/Source/WTF/wtf/Assertions.h Source/WTF/wtf/Assertions.h] header. * This is a ''Release'' build example in which we want to turn on the logging support {{{ #!sh $ export CPPFLAGS="-DLOG_DISABLED=0" $ Tools/Scripts/build-webkit --gtk }}} == Debugging multimedia stuff == You can use the environment variable ''GST_DEBUG'': {{{ #!sh $ export GST_DEBUG="webkit*:5" }}} To debug a multimedia test inside DRT (Dump Render Tree): {{{ #!sh $ Tools/Scripts/run-webkit-tests --gtk --additional-env-var=GST_DEBUG=webkit*:5 --additional-env-var=GST_DEBUG_NO_COLOR=1 http/tests/media/video-play-stall.html }}} == Debugging tests == * In order to run tests inside the @jhbuild@ shell, these two environment variables must be set: {{{ #!sh $ export TEST_RUNNER_TEST_PLUGIN_PATH=$WEBKIT_HOME/WebKitBuild/Release/Libraries/.libs/ $ export TEST_RUNNER_INJECTED_BUNDLE_FILENAME=$WEBKIT_HOME/WebKitBuild/Release/Libraries/libTestRunnerInjectedBundle.la }}} == Debugging issues == * Some times when running the WebKitTestRunner (WK2) you can see linking errors like the following one: {{{ #!sh (lt-WebKitWebProcess:3392): WARNING **: Error loading the injected bundle (/home/javi/devel/WebKit/webkit.git/WebKitBuild/Debug/Libraries/libTestRunnerInjectedBundle.la): /home/javi/devel/WebKit/webkit.git/WebKitBuild/Debug/Libraries/.libs/libTestRunnerInjectedBundle.so: undefined symbol: _ZTVN7leveldb10ComparatorE }}} * One possible cause of such errors are missing symbols in the '''Source/autotools/symbols.filter'''. These symbols are automatically exposed in the by the '''libWebCoreInternals''' library via tags. Such library expose some symbols for testing purposes, just like the WTR application does. * The symbols.filter should be updated by a fresh checkout, but if that's not the case, it's possible to workaround the issue by manually adding the missing symbols to the file. == Related == * [wiki:WebKitGTK/TrackingMemoryErrors Tracking memory errors in WebKitGTK+]