2011-09-12 21 views
6

Tengo el siguiente código:¿Cómo establecer un punto de interrupción por nombre de función dentro del espacio de nombres anónimo en Visual Studio?

namespace 
{ 
    void Foo() 
    { 
    } 
} 

namespace Bar 
{ 
    void Foo() 
    { 
    } 
} 

int main() 
{ 
    Foo(); 
    Bar::Foo(); 

    return 0; 
} 

quiero poner punto de interrupción en el interior Foo() espacio de nombres en el anonimato por su nombre (unión de teclas Ctrl + B). Puedo hacerlo para la función dentro del espacio de nombre nombrado Bar sin ningún problema por el nombre Bar::Foo. Intenté anonymous namespace::Foo para el espacio de nombres anónimo, pero VS no puede analizar este nombre, supongo que debido al carácter de espacio en blanco en el nombre. También traté de poner diferentes comillas, pero sin suerte. ¿Es posible poner este punto de ruptura?

+0

¿Ha intentado simplemente ':: Foo'? –

+0

':: Foo' falló también – ks1322

+0

No sé, pero puede tratar de definir un tipo dentro de la función y generar su nombre usando' typeid (T) .name' (debe incluir el encabezado ''), y posiblemente allí Veremos cómo se debe referir a la función. –

Respuesta

3

Me encontré con un problema similar hace mucho tiempo (Debugging data in 'anynomous namespaces' (C++)). Quería ver el valor de un miembro de datos en un espacio de nombres sin nombre, pero no pude hacerlo.

Finalmente, alguien me indicó http://msdn.microsoft.com/en-us/library/0888kc6a%28VS.80%29.aspx. Tal vez puedas obtener el nombre de la función decorada y ponerle un punto de interrupción.

+0

Sí, esto ayudó. Tengo el nombre de la función decorada usando 'dumpbin.exe/symbols breakpoits.obj' [http://msdn.microsoft.com/en-us/library/b842y285(v=vs.v=80).aspx](http:/ /msdn.microsoft.com/en-us/library/b842y285(v=vs.80).aspx) y poner punto de interrupción en él. Parece que no hay otra forma de hacerlo en VS. – ks1322

0

Parece que Visual Studio no puede establecer el punto de interrupción por nombre de función dentro del espacio de nombres anónimo. Incluso WinDbg no puede hacer esto.

Si tiene fuentes, puede establecer el punto de corte por línea.

+0

Es posible hacerlo por nombre de función decorado. Ver mis comentarios en otra respuesta. – ks1322

+0

Sí, funcionó. Configuré el punto de interrupción en? Foo @? A0xac6cc1fe @@ YAXXZ. He intentado esto antes pero ¿me lo perdí primero? símbolo. –

Cuestiones relacionadas