If you read this, most likely you've tried to debug something on Android and found out it's not as easy as you would have wanted it to be.
Here's a short tutorial, from my memory to get it working. If I forgot something, please write it down in the comments and I will keep this post updated.
First, There are many mistakes that can be made. The documentation/instructions and warnings under Google's Android website are less useful and you can find yourself compiling the whole environment of Android 2.1 on Ubuntu 8.04 (which is a very big mistake, and you'll waste your time - so don't do it!).
Make sure you use latest Ubuntu (I'm not a big fan of Ubuntu, as a Slackware user for the last 10 years, but apt-get just does a good job in this setup) to build latest Android.
Download Android using GIT & REPO:
repo init -u git://android.git.kernel.org/platform/manifest.git -b <version> e.g : repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair
This should take a few hours... ;)
Compile Webkit with debugging flags, I'm quite sure this link was helpful, but I also quite sure there were few mistakes which I don't remember, I do remember it wasn't perfect buildspec.mk so just change it to fit your debugging needs.
The link had the following instructions:
Debug Native C++ Code:
To get meaningful debug info, you do need to build WebCore with - O0. It is simple. Add the following to your buildspec.mk and rebuild webcore and xml2. Use "rm out/target/product/dream/system/build.prop" (zuk's comment: I'm also sure they had path mistakes ;), take that into considerations) to make sure it takes effect. To rebuild webcore and xml2: make clean-libwebcore clean-libxml2 && make //DO NOT DO THAT YET!!!
Prepare your environment by downloading all the right packages at once (all in one line! yey!):
sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libreadline5-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev build-essential uninstall java, and install java 1.5: sudo update-java-alternatives -s java-1.5.0-sun
"If you don't have buildspec.mk under the root directory yet, please copy build/buildspec.mk.default to the root (android/)
Change to the following lines : DEBUG_MODULE_libwebcore:=true DEBUG_MODULE_libxml2:=true TARGET_CUSTOM_DEBUG_CFLAGS:=-O0 -mlong-calls Add "ADDITIONAL_BUILD_PROPERTIES += debug.db.uid=100000" so that it will wait for you to connect gdb when crashed.
in Webkit folder (for eclair branch only):
git commit / stash git cherry-pick 18342a41ab72e2c21931afaaab6f1b9bdbedb9fa
Environment setup (fix paths if needed):
export PATH="/usr/lib/jvm/java-1.5.0-sun-126.96.36.199/:$PATH" export JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun-188.8.131.52" export ANDROID_JAVA_HOME=$JAVA_HOME export PATH=$PATH:$JAVA_HOME/bin chmod +x ./build/env-setup.sh source ./build/env-setup.sh #make sure you use the source command and not trying to execute the file itself... make clean-libwebcore clean-libxml2; make
Now debugging will be made possible using gdbserver, adb and gnu-arm-eabi-gdb client (use latest gdb! they had tons of bug fixes - great job!).
You will also be able to compile native code easily by having Android.mk and executing:
source /path/to/androidhome/build/env-setup.sh; mm;