#include class Base1 { public: virtual ~Base1() {} }; class Base2 { public: virtual void doit() = 0; virtual void doit_debug() = 0; }; Base2 *b; class Derived1 : public Base1, public Base2 { public: virtual void doit() { printf("Derived1\n"); } virtual void __attribute__((nodebug)) doit_debug() { printf("Derived1 (no debug)\n"); } }; class Derived2 : public Base2 { public: virtual void doit() { printf("Derived2\n"); } virtual void doit_debug() { printf("Derived2 (debug)\n"); } }; void testit() { b->doit(); } void testit_debug() { b->doit_debug(); printf("This is where I should step out to with nodebug.\n"); // Step here } int main() { b = new Derived1(); testit(); testit_debug(); b = new Derived2(); testit(); testit_debug(); return 0; }