I'm in my early twenties, at one point in my life there was a time when all I cared about were drugs, how many I could do, how many I had done, and how great of a time I could have on them.
Mixed with a bout of bad depression because my dad got sick it got to the point where I lost sight of what was important in life.
In all honesty, I expected by now I'd be dead. Sometimes, I still do. It wasn't till I had dropped out of college and started working a dead end job that I decided it was time to change. The fear of being stuck there the rest of my life and having lost all my potential from previous years was the scariest thing I've ever felt in my life, but it was also probably the best thing that could have happened to me..
I woke up at 4am, developed till I went in at 3pm, and then went straight to bed when I got home at midnight. I did this for months and months having never done any formal web programming before. I started with the basics, html and css. From there I went on to php, ruby, js, and obj-c. Each one was challenging.
All that stemmed from wanting to do "web design". Web programming gave me plenty of challenges that were easy enough to solve with brute force and hard work.
Don't give up. Keep challenging yourself. You're at your wits end and you say you're exhausted, and that's understandable. Getting my life back on track actually didn't start with programming for me, it started with exercise. I recommend taking up something you've always enjoyed and that you can do once a day. It will relieve stress and give you down time to relieve yourself from the worries of the world, your life, and your objectives.
Work not just on your web talent, but your life talent. Your sleep talent, your eating talent, your brain talent. Do puzzles. Challenge yourself. Don't give up.
For me www.reddit.com/r/get_motivated has helped in a big way. I know that may sound corny but fuck, sometimes those little quotes can do a lot for me. When I wake up sad or when it feels like things aren't going like they should, it's the little things that you need to do to get through to the next day.
You can get out of this rut by not giving up. By going on, working hard, and not quitting. It may not happen in a day, a week, a month, a year, or even two years. But as long as you keep going, one day it will happen.
If you need encouragement advice or help in any way, reply to my comment with a way for me to contact you. You are not alone, brother.