2012-02-21 13 views
6

he utilizado originalmente Visual Studio C++ Express, he cambiado a última y im actualmente confundido en cuanto a por qué el depurador está moviendo mis puntos de interrupción, por ejemplo:Visual Studio puntos de ruptura que se mueve

if(x > y) { 
    int z = x/y;   < --- breakpoint set here 
} 
int h = x+y;    < --- breakpoint is moved here during run time 

o

random line of code  < --- breakpoint set here 
random line of code 

return someValue;  < --- breakpoint is moved here during run time 

Parece hacer esto en ubicaciones al azar en el código. ¿Hay algún día que estoy haciendo mal aquí? Nunca he tenido un problema con la versión express como esta sucediendo.

Respuesta

10

Está depurando en modo de lanzamiento.

if(x > y) { 
    //this statement does nothing 
    //z is a local variable that's never used 
    //no executable code is generated for this line 
    int z = x/y;   < --- breakpoint set here 
} 
//the breakpoint is set on the next executable line 
//which happens to be this one 
int h = x+y;    < --- breakpoint is moved here during run time 

Normalmente depura los ganchos establecidos dentro del código binario. Si no se ejecuta código binario para int z = x/y, no puede establecer un punto de interrupción allí.

La siguiente es generado por la compilación de este en modo de lanzamiento:

if(x > y) 
{ 
    int z = x/y;//   < --- breakpoint set here 
} 
int h = x+y; 
cout << h; 
003B1000 mov   ecx,dword ptr [__imp_std::cout (3B203Ch)] 
003B1006 push  7  
003B1008 call  dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (3B2038h)] 

Para probar esto, se puede aplicar este simple cambio:

if(x > y) { 
    int z = x/y; 
    std::cout << z << endl; // <-- set breakpoint here, this should work 
} 
int h = x+y;    
+0

Estoy de acuerdo que esto es la causa más likly, lo haría También tenga en cuenta que en el pasado he visto desconecciones entre las líneas informadas a través del depurador y el IDE debido a diferencias de terminación de línea (NL vs CR NL). Recuerdo que este es un gran problema en los productos Borland Delphi, pero no creo que esto es un problema con VS. – tletnes

+0

@tletnes hmm interesante, nunca me he encontrado con esto en VS. –

+0

¡Adelante! Pasé por alto por completo que estaba en modo de lanzamiento. ¡Gracias! – kbirk

Cuestiones relacionadas