- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all
I'm using Intel Parallel 2011.
I can't debug into methodA with below statement when I press F11:
if (false == methodA())
But if I set break point inside methodA, I can debug into this method.
Anybody met this problem.
Link Copied
- « Previous
-
- 1
- 2
- Next »
26 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Sergey
I understand what you mean. In this sample, Output must be:
Main start
D::MyMethod
D::MyMethod
D::MyMethod
Main end
But I wonder why I can't step in with statement [c->MyMethod()] with Intel complier but with Visual Complier I can step in.
Best Regard
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>>...I wonder why I can't step in with statement [c->MyMethod()] with Intel complier...
>>>>[ Posted by Georg ]
>>>>...I think this is related to incorrect debug information generated by the compiler. Hence, I've created a defect
>>>>ticket (DPD200321626)...
This is what Georg posted a couple of hours ago and it will be fixed.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>>...In this sample, Output must be:
>>
>>Main start
>>D::MyMethod
>>D::MyMethod
>>D::MyMethod
>>Main end
I see. Here is a very small test case I just created that uses Virtual Base classes. Please take a look, or ignore if you don't need it :).
...
#include "stdio.h"
class A
{
public:
A(){};
virtual ~A(){};
virtual bool MyMethod() = 0;
};
class B : virtual public A
{
public:
B(){};
virtual ~B(){};
virtual bool MyMethod();
};
bool B::MyMethod()
{
printf( "B::MyMethod\n" );
return true;
}
class C : virtual public A
{
public:
C(){};
virtual ~C(){};
virtual bool MyMethod();
};
bool C::MyMethod()
{
printf( "C::MyMethod\n" );
return true;
}
class D : public B, public C
{
public:
D(){};
virtual ~D(){};
virtual bool MyMethod();
};
bool D::MyMethod()
{
printf( "D::MyMethod\n" );
return true;
}
int main( void )
{
printf( "Main start\n" );
A *d = ( D * )new D();
A *b = ( B * )new B();
A *c = ( C * )new C();
d->MyMethod();
b->MyMethod();
c->MyMethod();
printf( "Main end\n" );
return ( int )0;
}
[ Output ]
Main start
D::MyMethod
B::MyMethod
C::MyMethod
Main end
Note: This is almost a book-like application of Late Binding of C++ objects...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
a fix has been made. Unfortunately it won't make it in the 2013 releases. That means, only with the next major Intel(R) Composer XE package released somewhere end of 2014 it will show up. You can set manual breakpoints as (admittedly inconvenient) workaround in the meantime.
Best regards,
Georg Zitzlsberger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Georg,
Thanks for your information.
Best regards,
Ha Duy Tuan

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- « Previous
-
- 1
- 2
- Next »