I'm not concerned about which language right now, anything with a REPL should be able to work in this way.  But the context I'm working in is perhaps a bit trickier.  The call stack would normally cross between languages multiple times so just inspecting the stack becomes really clumsy.  Since both languages have access to the same data structures, a watchpoint set on the C side can break at a fairly arbitrary point in the interpreter, from which you need to gain control on the other side.<p>And it's important to be able to attach to a running process and move through the inter-language call stack (e.g. when debugging a deadlock under MPI (distributed-memory)).  I haven't found a high-level language that offers this sort of interoperability, but I'd love to hear suggestions.