lilburne <lilburne@godzilla.net> wrote in message news:<bojsb4$1fiup1$1@ID-203936.news.uni-berlin.de>...[color=blue]
> Bob Bamberg wrote:
>[color=green]
> > lilburne <lilburne@godzilla.net> wrote in message news:<boha4d$1e6a49$1@ID-203936.news.uni-berlin.de>...
> >
> >
> > lilburne, I'm not sure what you mean by making all exceptions stop in
> > the debugger through the debug menu. I am using Visual Studio and
> > there does not appear to be a debug menu directly. Could you please
> > give additional information here. Also, I'm still not sure that this
> > method will solve my problem. I do not believe that a Pure Virtual
> > Function Call causes an exception, but just a runtime error. If you
> > could give more details on trying your suggestion I am happy to try it
> > though since I am currently stuck here.
> >[/color]
>
> Indication is that an exception is being thrown, which
> results in the runtime error report:
>
http://dbforums.com/arch/89/2002/5/374760
>
> Not having access to msdev I can't confirm that but you
> could quickly put together a test see below.
>
> When you run your application from within msdev the 'build'
> menu changes to a 'debug' menu - at least with VC++6. Under
> this menu there is an item 'exceptions' this raises a dialog
> where you can highlight all the exception types and set them
> to 'stop always' rather than 'stop if unhandled'. Using this
> technique you'll get to break into the debugger when the
> exception is first thrown, rather than where it is caught,
> and thus have a decent stack trace.
>
> Alternatively you can use the technique presented here:
>
http://support.microsoft.com/default...;EN-US;q125749
>
> but that presupposes that you know which virtual function is
> being called. You do suggest though that you believe it is
> some virtual in a class other than the one you are testing.
>
> My suspicion would be that during construction of a base
> class a pure virtual is being called, probably indirectly.
> But without examining the code it is only a suspicion.
>
> #include <iostream>
>
> class A;
>
> void f(A& a);
>
> class A {
> public:
> A();
> virtual void pure() = 0;
> };
>
> A::A()
> {
> f(*this);
> }
>
> class B : public A {
> public:
> virtual void pure();
> };
>
> void B::pure()
> {
> }
>
> void f(A& a)
> {
> a.pure();
> }
>
> int main()
> {
> try {
> B b;
> }
> catch (...) {
> std::cout << "Caught exception" << std::endl;
> }
> return 0;
> }[/color]
Thanks for the additional information lilburne. I was able to
following your directions once my program was started in debug mode.
It appears as though my problem is occurring due to a Pure Virtual
function that I should not be required to provide. Specifically it is
a Media Service Provider's pure virtual function that is supposed to
be handled by TAPI 3.0. I am not supposed to be dealing with it at
all.
I think I have a handle on where things are going wrong. Thanks again
for your followup posting.
Bob