2011-09-12 19 views
6

私は次のコードを持っています:Visual Studioで匿名の名前空間内の関数名でブレークポイントを設定する方法は?

namespace 
{ 
    void Foo() 
    { 
    } 
} 

namespace Bar 
{ 
    void Foo() 
    { 
    } 
} 

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

    return 0; 
} 

名前で匿名名前空間内のFoo()にブレークポイントを入れたい(Ctrl + Bキーバインディング)。私は名前空間Barの中で名前Bar::Fooで問題なく機能することができます。私は匿名の名前空間のanonymous namespace::Fooを試しましたが、VSがこの名前を解析するのに失敗しました。名前に空白文字があるためです。また別の引用符を入れようとしましたが運がありませんでした。このブレークポイントを置くことはまったく可能ですか?

+0

あなたは ':: Foo'だけを試しましたか? –

+0

':: Foo'も – ks1322

+0

Dunnoに失敗しましたが、関数内で型を定義し、' typeid(T).name'( ''ヘッダをインクルードする必要があります)その関数がどのように参照されるべきかを見てみましょう。 –

答えて

3

私はずっと前に同様の問題が発生しました(Debugging data in 'anynomous namespaces' (C++))。私は名前のない名前空間のデータメンバーの価値を見たいと思っていましたが、これを行うことができませんでした。

最後に、誰かが私にhttp://msdn.microsoft.com/en-us/library/0888kc6a%28VS.80%29.aspxと指摘しました。たぶんあなたは装飾された関数名を取得し、その上にブレークポイントを置くことができます。

+0

はい、これが助けになりました。私は '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)、ブレークポイントを設定します。 VSのそれに他の方法がないように見えます。 – ks1322

0

Visual Studioでは、匿名名前空間内の関数名でブレークポイントを設定できないようです。 WinDbgでもこれを行うことはできません。

ソースがある場合は、ブレークポイントを1行ごとに設定できます。

+0

装飾された関数名で行うことができます。別の答えで私のコメントを参照してください。 – ks1322

+0

はい、うまくいきました。私はブレークポイントを?Foo @?A0xac6cc1fe @@ YAXXZに設定しました。私はこれを前に試しましたが、まず逃しましたか?シンボル。 –

関連する問題