I think a good starting point is to test old versions:
http://download.osmand.net/night-builds/After that, in many cases, you should be close to the bug.
Now you look for the relevant commits within the corresponding time span.
You may use
https://github.com/osmandapp/ or a git tool for that.
To exactly locate the bug, you probably want to build a snapshot of OsmAnd to bisect further.
You could use "git bisect" but I like to do it manually.
For example checkout old commits:
cd android
git checkout fb83b64ac456728c3c28cd3e445bdea89d654951
cd core
git checkout 10727c4a7110c92276b87bd7ff2db15afcb3a96c
cd resources
git checkout 0a15af5e3cdfecfbf73c882a6251bdc2d591ba02
and then build OsmAnd.
If you found one or several "bad" commits, you may want to modify the source code, to debug further.
Mostly it is recommendable to remove all build files between each build:
git clean -d -x -f
git reset --hard
Building native libs takes much time, so I recommend to skip build of native libs or to use ccache:
export NDK_CCACHE=/usr/bin/ccache
After that you upload and install the apk to your device via adb:
/path/to/platform-tools/adb install -d -r /path/to/OsmAnd-release.apk
Maybe you also want to start it via adb:
/path/to/platform-tools/adb shell am start -n net.osmand/.activities.MainMenuActivity
or
/path/to/platform-tools/adb shell am start -n net.osmand.plus/.activities.MainMenuActivity
Now happy testing. :-)
But be aware, that you don't catch all bugs with this approach, for example if a change of SDK or NDK causes a bug.
Regards,
Max