For those who want to skip the text wall, the question is at the bottom.
Background
I'm a self-taught programmer, and I've found that I learn best using a top down approach. For example, I started programming by setting up a PHP application, and then when I wanted to add some functionality, I started figuring out how it worked. The big epiphany came when I found I could print out data while the application was running and see what was happening to it. Suddenly web pages were no longer magic. I learned object oriented principles the same way, by playing with other's software and watching how they used objects to organize and manipulate their data. To really learn MVC, I took apart an MVC framework I liked, and rewrote it into my own.
Even now that I'm exploring more and more of Python and Ruby, I find I understand new techniques much better with a syntax guide and playing around with code than I do by reading a traditional teaching book. However, I've been feeling lately that I have a big conceptual blank when it comes to what the scripting language processor is actually doing (exacerbated by my lack of a traditional computer science background). So that leads me to my...
Dilemma
I just can't seem to find a much info available on lower level concepts geared towards someone who is comfortable with advanced concepts in scripting languages. Particularly for people who learn the way I do. I am aware that there are a lot of resources for those who want to learn from the bottom up, but that's not for me.
Why is this a problem? It doesn't really get in the way of day to day work, but I hate when I do things that feel like voodoo. If I can't write it myself, I don't really understand it. I've been using opcode caching with PHP deployments since forever. I vaguely understand what it does, and can even give a concise explanation, but if I had to write one myself, I'd barely know where to begin. Plus, every time I've taken a step lower into the libraries and tools I'm using, I always come out a better coder on the higher level.
I learn best by working on something that is applicable to what I'm already doing. What I'd like to be able to do is watch the data. Once I can really grok what happens as a request is received by a server, passed to my application, interpreted, and passed back, I'll be a happy feller. Well, until a few months later when I become disturbed that I don't get how the data in my stack translates itself into the CPU registry, or whatever.
Question
What tools/setup/process would you recommend for someone who is comfortable with very high level concepts to drill down into lower level concepts by observing what the program running your program is doing? I'm most interested in either general techniques, or Python, Ruby, and PHP.
Also, given the current approachability of modern scripting languages by non compsci/mathematical types, techniques for slowly transitioning from that background to a more fundamental understanding of computers would be relevant.