In reply to @vindaar "while it sounds like": I did run across this work and looked it over and I can confirm that it isn't quite what I am looking for, though I have already thought of a few ways to use it for some other stuff. Really good stuff IMHO. But yah, I am looking for a framework that let's me easily define a test "session", and define a collection of patterns to "always" look for (stack traces, segmentation violations, kernel oops/panic, etc), or alternatively, set a timeout and on timeout inspect the buffer for disallowed patterns (again, oops, trace, panic, etc). An example use case would be to run some application which needs to be "interacted with" (send/expect), but which also needs to be inspected via a remotely attached gdb session. The application could be launched via gdb w/ remote debugging, or the application could be run on remote hardware (with a local or network serial console and a remote JTAG supporting remote gdb), or launched by qemu (which also supports remote gdb). The idea of the "test session" is more to do with the goal of setting up the test environment and initializing the descriptors which will be used by the unit tests. This would include setting up the error exception cases w/in the sessions and allowing the send/expect tests to remain as minimal as possible.