Here's my experience using USBasp and ATmega2560: I can use the Arduino IDE 1.6.5r5 Burn Bootloader and it works fine. If I do Upload Using Programmer then it appears to upload fine but the program never runs. If I change the line in boards.txt from
As instructed in the topic http://forum.arduino.cc/index.php?topic=126160.msg1839705#msg1839705 and Burn Bootloader using USBasp to set the new fuses then Upload Using Programmer works but if I Burn Bootloader using USBasp and then try to do a serial upload it doesn't work. If I use Atmel AVRISP mkII to Burn Bootloader with the high fuse set to D9 then I can use the bootloader and Upload Using Programmer with the USBasp also works. So if you only want to Upload Using Programmer with your USBasp then change your boards.txt(or better create your own hardware files with the change so that you don't have to redo it every time the Arduino AVR Boards are updated) but be aware this will cause the bootloader to no longer work until you change the high fuse back to D8 and do Burn Bootloader again.
but after that any program uploaded through the arduino as isp not working at all & in the process boot loader also get corrupted.
The bootloader doesn't get corrupted when you Upload Using Programmer, it gets erased. This is normal and unavoidable. If you want to use the bootloader again after Upload Using Programmer then you will need to Burn Bootloader again first.