Intel® C++ Compiler
Support and discussions for creating C++ code that runs on platforms based on Intel® processors.
Announcements
The Intel sign-in experience has changed to support enhanced security controls. If you sign in, click here for more information.

Can't debug into method

Ha_Duy_Tuan
Beginner
459 Views

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.

0 Kudos
26 Replies
Ha_Duy_Tuan
Beginner
41 Views

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 

SergeyKostrov
Valued Contributor II
41 Views
>>...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.
SergeyKostrov
Valued Contributor II
41 Views
>>...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...
SergeyKostrov
Valued Contributor II
41 Views
Hi everybody, Georg, please take a look at another test-case and it is based on a code provided by Ha Duy Tuan. Even if the Run-time Binding is used in a different way the test also reproduces 'Cant Step Into the Method' problem.
Georg_Z_Intel
Employee
41 Views
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
Ha_Duy_Tuan
Beginner
41 Views

Hi Georg,

Thanks for your information.

Best regards,

Ha Duy Tuan

Reply