2011-09-12 9 views
6

Ho il codice seguente:Come impostare il punto di interruzione per nome funzione all'interno dello spazio dei nomi anonimo in Visual Studio?

namespace 
{ 
    void Foo() 
    { 
    } 
} 

namespace Bar 
{ 
    void Foo() 
    { 
    } 
} 

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

    return 0; 
} 

Voglio mettere punto di interruzione Foo() all'interno dello spazio dei nomi anonimi per nome (associazione di tasti Ctrl + B). Posso farlo per la funzione all'interno del namespace con nome Bar senza problemi per nome Bar::Foo. Ho provato anonymous namespace::Foo per namespace anonimo ma VS non riesce ad analizzare questo nome, credo a causa del carattere di spazio bianco nel nome. Inoltre ho provato a mettere diverse virgolette ma senza fortuna. È possibile inserire questo punto di interruzione?

+0

hai provato solo ':: Foo'? –

+0

':: Foo' non è riuscito anche – ks1322

+0

Non so, ma puoi provare a definire un tipo all'interno della funzione ed emetterne il nome usando' typeid (T) .name' (devi includere l'intestazione '') e possibilmente lì Vedremo come si intende fare riferimento alla funzione. –

risposta

3

Ho riscontrato un problema simile molto tempo fa (Debugging data in 'anynomous namespaces' (C++)). Volevo esaminare il valore di un membro dati in uno spazio dei nomi senza nome, ma non ho potuto ottenere questo risultato.

Infine, qualcuno mi ha indirizzato a http://msdn.microsoft.com/en-us/library/0888kc6a%28VS.80%29.aspx. Forse puoi ottenere il nome della funzione decorata e mettere un punto di interruzione su questo.

+0

Sì, questo ha aiutato. Ho il nome della funzione decorata usando 'dumpbin.exe/symbols breakpoits.obj' [http://msdn.microsoft.com/en-us/library/b842y285(v=vs.80).aspx](http:/ /msdn.microsoft.com/en-us/library/b842y285(v=vs.80).aspx) e inserire il punto di interruzione su di esso. Sembra che non ci sia altro modo in VS. – ks1322

0

Sembra che Visual Studio non possa impostare il punto di interruzione per nome funzione all'interno dello spazio dei nomi anonimo. Anche WinDbg non può farlo.

Se si dispone di fonti, è possibile impostare il punto di interruzione per riga.

+0

È possibile farlo con il nome della funzione decorata. Vedi i miei commenti in un'altra risposta. – ks1322

+0

Sì, ha funzionato. Ho impostato breakpoint su? Foo @? A0xac6cc1fe @@ YAXXZ. Ho provato prima, ma prima mi mancava? simbolo. –

Problemi correlati