Although I have been using LLVM in non-JIT mode for a while, there are still a lot of holes in my knowledge. At lot of what I do know has been learned either through trial and error or through inspection of the LLVM source code. The downside of this approach is that while you might learn *one* way to get things working, it isn't necessarily the right or best way.
Looking at the traffic on this list, I think that I am not the only person in this position.
I think a tutorial for running and debugging LLVM programs in non-JIT mode would be very useful. The Kaleidoscope tutorial was immensely useful, but for folks like me who want to produce native binaries, it kind of tapers off right before the really interesting part. Of course, I recognize why this is: Any tutorial dealing with native binaries is going to have to deal with issues of different platforms and toolsets.
My suggestion/request is this: Start with a basic LLVM "hello world" sample written in IR, one that calls some c stdio functions. Next show how to run it in lli, both with and without -force-interpreter. Introduce a crash bug and show how to diagnose it. Then move on to generating native assembly, on both Linux (or OS X) and Windows, using whatever tool chain is most convenient (assume the reader is smart enough to generalize from those two sample points to other platforms.) Show how to call functions in foreign libraries. Again, introduce a problem and show how to diagnose it. Maybe add some sample debugging intrinsics and then show how to single-step in gdb.
I'm pretty certain that for me, at least, that I would learn a lot from such a tutorial, even after several months of testing my code using lli.