Visual Studio のように MFC ソース コードにステップ イン/スルーできるようにするには、Windbg でどのような設定を行う必要がありますか?
1 に答える
MFC ソース コードにステップ インするには、正しい MFC シンボルをロードすることと、正しいソース パスを設定することの 2 つが必要です。
MFC 記号
Windbg でシンボル パスを設定するための一般的なアドバイスは、 を使用すること.symfix
です。これにより、パブリック Microsoft シンボル サーバーがシンボル パスに追加されます。これにより、Windbg は、MFC DLL を含む多くの Windows DLL の PDB を Microsoft からダウンロードできます。ただし、これらの PDB には、ソースのステッピングに必要なプライベート シンボルが含まれていません。
代わりに、Visual Studio でインストールされたプライベート シンボル PDB を最初に検索し、次にシンボル サーバーを検索するように Windbg に指示する必要があります。
.sympath c:\windows\symbols\dll
.symfix+ c:\symbols
または、ファイル > シンボル ファイル パス...ダイアログにコピー アンド ペーストする場合は、次を使用します。
c:\windows\symbols\dll;srv*c:\symbols*http://msdl.microsoft.com/download/symbols
指定されたc:\symbols
パス.symfix+
は、サーバーからダウンロードした PDB のキャッシュされたコピーを保存する場所を Windbg に指示します。
Windbg ( windbg app.exe
) を使用して MFC アプリを起動し、MFC シンボルを強制的に読み込み、出力を確認することで、正しい PDB が見つかったことを確認できます (これは Windbg コマンド セッションのログです)。
0:000> $$ setup the correct sympath
0:000> .sympath c:\windows\symbols\dll;srv*c:\symbols*http://msdl.microsoft.com/download/symbols
Symbol search path is: c:\windows\symbols\dll;srv*c:\symbols*http://msdl.microsoft.com/download/symbols
Expanded Symbol search path is: c:\windows\symbols\dll;srv*c:\symbols*http://msdl.microsoft.com/download/symbols
0:000> $$ find the MFC DLL's full path
0:000> lm fm mfc*
start end module name
528e0000 52fa2000 mfc100d C:\Windows\SysWOW64\mfc100d.dll
72390000 7239d000 MFC100ENU C:\Windows\SysWOW64\MFC100ENU.DLL
0:000> $$ force the symbols to load
0:000> .reload /f C:\Windows\SysWOW64\mfc100d.dll
0:000> $$ check for "private pdb symbols"
0:000> lm m mfc*
start end module name
528e0000 52fa2000 mfc100d (private pdb symbols) c:\windows\symbols\dll\mfc100d.i386.pdb
72390000 7239d000 MFC100ENU (deferred)
mfc100d 行にプライベート pdb シンボルが含まれていることに注意してください。最後のコマンドにprivatemfc100d (pdb symbols)
という単語が表示されていない場合は、正しい PDB が読み込まれておらず、MFC ソースにステップ インできません。あなたの同情心をもう一度見てみてください。また、コマンドをオンにして実行し、PDB のロードに関する詳細な診断を確認することもできます。!sym noisy
.reload /f mfcdllpath
MFC ソース パス
デフォルトの Visual Studio インストールを行った場合、MFC (および C ランタイム) ソースは次の場所にあります。
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfcm
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src
VS2010用。過去のバージョンは、同様のディレクトリ レイアウトを持っています。次の方法で設定できます。
.sympath C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfcm;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src;
.sympath
または、上記の行 ( なし) を[ファイル] > [ソース ファイル パス... ] ダイアログにコピー アンド ペーストします。
これらのディレクトリが存在しない場合は、Visual Studio が MFC ソース コードを認識している場所を確認できます。
VS2010 (およびおそらく 2012):
- Visual Studio を起動
- プロジェクトを開く
- [プロジェクト] メニューで、[プロパティ] を選択します。
- 左ペインで、[構成プロパティ] を展開し、[VC++ ディレクトリ] を選択します。
- 右側のペインで、ソース ディレクトリの値を確認します。
VS2008 以前
- Visual Studio を起動
- [ツール] メニューで、[オプション] を選択します。
- 左ペインで、[プロジェクトとソリューション] を展開し、[VC++ ディレクトリ] を選択します。
- 右側のペインで、ソース ディレクトリの値を確認します。