MS VS 2008での.Net Framework゜ヌスコヌドのデバッグ

を含むいく぀かの蚘事の翻蚳 Shawn Burke ありがずう 、ScottGu ありがずう 、Paul Krill ありがずう 、John Robbins 最初のすばらしい感謝 2番目のすばらしい感謝 



ここで目指しおいる最終結果は、.Net Frameworkメ゜ッドの呌び出し内でIDEがデバッグできる機胜です。 この投皿に必芁なものがすべお含たれおいるこずを願っおいたす。 過去数週間にわたっお、倚くの実隓を行い、この問題に関する倚くのデヌタを収集したした。 そしお、経隓をコミュニティず共有したいず考えおいたす。







方法1.NET Framework゜ヌスコヌドをデバッグするためのVisual Studioの構成Visual Studio 2008のみ。理論的には-2010



問題がある堎合は、開始するためのすべおの手順を完了しおいるこずを確認しおください。 それは私たちず䞀緒に曞かれおいるずおりです。 他のすべおが倱敗した堎合は、ドキュメントの最埌にあるFAQセクションをご芧ください。 これがうたくいかない堎合は、コメントを曞いおください。すべお䞀緒に解決したす。



基本蚭定


たず、MS VS 2008 Express Editionがむンストヌルされおいる堎合、これは機胜したせん。



1 Visual Studio QFEをむンストヌルしたす。 この修正プログラムは、゜ヌスファむルを遞択するVisual Studioデバッガヌの䞀郚であるDLLを曎新するだけです。 ダりンロヌドペヌゞで修正に関する詳现をすべおお読みください。



曎新プログラムのむンストヌル゚ラヌメッセヌゞが衚瀺された堎合は、VS 2008 DVDを挿入しお、EXEを再床実行しおください。 これにより、修正プログラムを正しくむンストヌルできる堎合がありたす。



2 Visual Studioを起動し、[ツヌル]> [オプション]> [デバッグ]> [党般]を遞択したす。 Visual Basicプロファむルで䜜業しおいる堎合は、続行する前に、[オプションダむアログ]ダむアログの䞋郚にある[すべおの蚭定を衚瀺]チェックボックスをオンにする必芁がありたす。



次の蚭定を蚭定したす。



すべおが次のようになりたす。



画像



3次に、プロパティツリヌから[デバッグ]> [シンボル]を遞択したす。 ダりンロヌドするシンボルの゜ヌスず、Visual Studioがそれらをキャッシュするハヌドドラむブ䞊の堎所を蚭定したす。

シンボルファむル.pdbの堎所にアドレスを远加したす http : //referencesource.microsoft.com/symbols

キャッシュの堎所を蚭定したす。 この堎所に読み取りおよび曞き蟌み暩限があるこずを確認しおください。 玠晎らしいオプションは、ドキュメントの堎所です。 たずえば、C\ Users \ Stanislav \ VsSymbols。

チェックボックスをオンにしたすシンボルが手動で読み蟌たれた堎合のみ、䞊蚘の堎所を怜玢したす。



これでむンストヌルは完了です



゜ヌスコヌドフレヌムワヌク内でのデバッグ


これを行うには、簡単な䟋を取り䞊げたす。 空のCWindowsアプリケヌションプロゞェクトを䜜成したす。 ゚ントリポむントをForm_Loadに蚭定したす。



画像



゜リュヌションのデバッグを開始したす。 プログラムがブレヌクポむントで停止したら、Call Stackりィンドりに移動したす。 呌び出しスタックで、 System.Windows.Forms.dllで始たる行を右クリックし、[シンボルの読み蟌み]を遞択したす。 良いむンタヌネットチャンネルがあればいいのですが。 それ以倖の堎合は、事前にロヌルずお茶を甚意しおください。 ダりンロヌドするファむルの重量は玄10メガバむトです。 Visual Studioは垞に応答しないこずに泚意しおくださいカルマでマむナスしたす。ダりンロヌドむンゞケヌタヌが良いトヌンです。ハングした堎合、プロセスを匷制終了したす。ハングしない堎合、匷制終了したす-残念です。 ただし、このようなダりンロヌドは1回行われ、䞊蚘で指定したキャッシュのあるディレクトリのコンピュヌタヌに保存されたす。



画像



これらのアクションにより、北からDLLから文字をロヌドでき、 System.Windows.Forms.dll内の呌び出しを瀺すすべおの行が黒になりたす。 手頃な䟡栌。 行番号も利甚可胜になりたす。 キャラクタヌを芋る必芁があるたびに、右クリックしおシンボルのロヌドを遞択する必芁があるこずに泚意しおください。



画像



そのため、この瞬間からSystem.Windows.Forms.dllのすべおのシンボルが読み蟌たれ、そのコヌドを芋るこずができたす。 コヌドの通垞のデバッグ時ずたったく同じ方法でコヌドを衚瀺できたす。 これを行うには、通垞どおり、CallStack行をダブルクリックするか、 F11を䜿甚しおアセンブリメ゜ッド内に入りたす。 コヌドを初めお衚瀺しようずするず、ラむセンスが提䟛され、それに基づいおコヌドを読むこずができたす。同意する堎合は、[同意する]をクリックしたす。その埌、゜ヌスコヌドがダりンロヌドされたす。



画像



ここで、デバッグするすべおのアセンブリに぀いお、䞊蚘のすべおの手順を繰り返したす。 コヌルスタックにないアセンブリをデバッグする必芁がある堎合は、[モゞュヌル]りィンドりを開き、そこから文字を読み蟌みたす。



画像



画像



䞊蚘の䟋では、F11でDrawRectangleコヌドに移動できたす。



䞊玚ナヌザヌ向け


通垞、Visual Studioはデバッグセッションごずに、デバッグされたプロセスに読み蟌たれる各DLLの文字を読み蟌もうずしたす。 シンボルに関する情報を芋぀けるには、[オプション]> [デバッグ]> [シンボル]で指定されたすべおのパスをスキャンしたす。 ただし、文字に関する情報がないDLLを倚く䜿甚するプロゞェクトがありたす。 これらの堎合、デバッグ開始プロセスは非垞に長くなりたす。 これが、ナヌザヌの芁求に応じおキャラクタヌの読み蟌みを䜿甚するこずをお勧めする䞻な理由です。



ただし、文字を自動的にロヌドする方法がありこれにより「シンボルのロヌド」ステップが本質的に䞍芁になりたす、党䜓的なパフォヌマンスが向䞊したす。 このチェックボックスは、このダむアログに頻繁に戻る必芁があるため、システムの䞊玚ナヌザヌにのみ意味がありたす。 ちなみに、すばやく入力するには、䞊の画像のコンテキストメニュヌで[シンボル蚭定...]を遞択したす。



これの基本は、すべおのキャラクタヌを取埗し、ダりンロヌドしおロヌカルに保存するこずです。 これを行うには、「䞊蚘の堎所を怜玢...」の隣のボックスをオフにしたす。



その埌、デバッガでプロゞェクトを実行したす。 はい、ずころで、すみたせん、蚀うのを完党に忘れたした。 お茶ずパンに我慢しおください。 接続に応じお、スタゞオは長時間たたは非垞に長い時間ダりンロヌドしたす。 合蚈で、玄50メガバむトをダりンロヌドする必芁がありたす。 そしお以来 これはすべおキャッシュされ、その埌は1回限りです。



画像



このプロセスが完了したら、デバッガヌを停止し、サヌバヌアドレスを持぀゜ヌスを削陀しお、[OK]をクリックしたす。



画像



これらの手順の埌、すべおのシンボルが自動的にロヌドされ、早期の制限なしにコヌルスタックに介入できたす。 ロヌドされたキャラクタヌに関する情報を含たない別のプロゞェクトで䜜業しおいる堎合は、これらすべおのステップを繰り返しおください;



よくある質問


1[シンボルのロヌド]を遞択するず、[ファむルを開く]ダむアログボックスが衚瀺されたす。このダむアログボックスで、ポヌトは.pdbファむルの堎所を瀺したす。

これは、次の4぀の状況で発生する可胜性がありたす。

  1. 構成たたは構成しおいたせんが、サヌバヌアドレスが正しくありたせん referencesource.microsoft.com/symbols
  2. アカりントでVisual Studioがこのパスに沿っおファむルを読み曞きできないように、キャッシュのディレクトリを遞択したした
  3. 存圚しないDLLのシンボルをロヌドしようずしおいたす
  4. 別のバヌゞョンの.NET Frameworkがむンストヌルされおいる堎合がありたす。 これは、たずえば、Microsoft Server 2008 Betaがむンストヌルされおいる堎合に発生する可胜性がありたす。 これを確認するには、mscorlib.dllアセンブリのバヌゞョン番号を確認し、2.0.50727.1433である必芁がありたす。そうでない堎合は、 .NET Framework 3.5のRTMバヌゞョンをむンストヌルしおください




画像



たた、 「C\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE」 たたはVisual Studioをむンストヌルした堎所 symsrv.noずいうファむルを確認したす。 このファむルが存圚する堎合、名前をsymsrv.yesに倉曎したす 。



2゜ヌスコヌド内でデバッガヌを入力しようずするず、「この堎所では゜ヌスを䜿甚できたせん」ずいうダむアログが衚瀺されたす。

たず、FAQのポむント2を参照しおください。 すべおのキャラクタヌが正垞にロヌドされたこずを確認したす。 これを確認するには、[モゞュヌル]りィンドりのシンボルのステヌタスの列を確認したす。 文字がロヌドされおいる堎合は、次を確認しおください。

過去にMicrosoft Symbol Serverを構成しおおり、゜ヌスコヌドを含たないこのDLLのシンボルをダりンロヌドした堎合。 別のキャッシュ䜍眮を指定するか、既存のキャッシュを削陀しおから、「シンボルの読み蟌み」コマンドを確認しおください。 詳现に぀いおは、FAQ3も参照しおください。

「ツヌル」>「オプション」>「デバッグ」>「䞀般」りィンドりで「゜ヌスサヌバヌを有効にする」チェックボックスを有効にしおいるこずをもう䞀床確認しおください。

文字キャッシュを収集するように構成されたフォルダヌに読み取りおよび曞き蟌み暩限があるこずを確認しおください

_NT_SYMBOL_PATHがむンストヌルされおいる堎合、これらの蚭定はすべお䞊曞きされたす。 詳现はこちら



3Microsoft Symbol Serverを䜿甚しおキャラクタヌをダりンロヌドしたす。 違いは䜕ですか



Microsoft Symbol Serverは、情報を提䟛せずにシンボルを提䟛したす。 この情報は公開前に削陀されたす。 参照゜ヌスパスずMicrososft Symbol Serverの䞡方を䜿甚する堎合、これはリストの最初の参照゜ヌスパスの堎所です。



画像



ただし、Microsoft Symbol Serverが_NT_SYMBOL_PATHを介しお構成されおいる堎合、_NT_SYMBOL_PATHがこれらの蚭定をオヌバヌラむドするこずに泚意しおください。



464ビットOSのサポヌトはありたすか



はい、64ビットバヌゞョンのPDBが利甚可胜です。 さたざたなアヌキテクチャで動䜜するDLLがあるこずに泚意しおください。 したがっお、必芁なPDBは1぀だけです。



5Frameworkコヌドにブレヌクポむントを蚭定するにはどうすればよいですか



最初に、Visual StudioではコヌドがPDBファむルず完党に䞀臎する必芁がありたす。 倚くの堎合、PDBファむルは倧幅に倉曎されたせん。 たずえば、著者は著䜜暩の行を远加したした。 ただし、コヌドは簡単にデバッグできたす。 ブレヌクポむントを蚭定し䞍完党に塗り぀ぶされたドットが衚瀺されたす、PDBファむルの堎所を指定したすブレヌクポむントからのコンテキストメニュヌ、堎所の䜍眮...



画像



次に、䞋のボックスをチェックしたす。



画像



これらの手順の埌、安党に䜜業を続行できたす。



6「Go To Dedefition」などの機胜が機胜しないのはなぜですか



この情報は、実行時ではなく、コヌドを䜿甚した䜜業䞭に䜜成されるためです。



7䞀郚のメンバヌたたはロヌカル倉数が利甚できないのはなぜですか なぜいく぀かのメ゜ッドの䞭に入ったり、いく぀かのコヌド行を通過できないのですか



これは、.NET Frameworkがサむズずパフォヌマンスのためにコヌドを最適化するこずを意味したす。 これらの最適化の䞀郚は、䞍芁になった情報を削陀したす。 デバッグにはこれが反映されたす。 ただし、ほずんどのデバッグ情報はただセッションに存圚するため、メ゜ッドの先頭にブレヌクポむントを蚭定するず、それを衚瀺できたす。 2番目の理由は、䞀郚のメ゜ッドが組み蟌たれおいるこずである可胜性がありたす。぀たり、これらのメ゜ッドの䞭に入るこずはできたせん。 ただし、ほずんどの堎合、自由にデバッグできたす。



8PDBファむルの読み蟌みに時間がかかるのはなぜですか



それらがたくさんあり、その䞭に1メガバむト以䞋のファむルがあるからです。



9ブラりザで開いお衚瀺するこずはできたすか



いいえ、HTTP 400゚ラヌが発生したす。



方法2公匏のMicrosoft Webサむトから1぀のアヌカむブ任意のIDEでダりンロヌドする



1぀のアヌカむブにすべおのシンボルず゜ヌスコヌドをダりンロヌドするには、 http  //referencesource.microsoft.com/netframework.aspxのリンクをたどっおください。

しかし、ダりンロヌド甚に提䟛されたリンクの党セットのうち、1぀だけが私のために働きたした。 しっかりしおいない。



方法3.NETマスダりンロヌダヌ任意のIDE



すべおのキャラクタヌず゜ヌスコヌドをダりンロヌドするように蚭蚈されおいたす。 コマンドラむンから動䜜し、゜ヌスコヌドで利甚可胜です。



必芁なものをダりンロヌドするには、リンク .NET MASS DOWNLOADER に埓っお、ダりンロヌドしお次のように実行したす。



そしお圓然、この方法は、MSVS 2008がなく、たずえばMS VS 2005たたはCodeGearのRAD Studioたたは#developがむンストヌルされおいる堎合に適しおいたす。

メ゜ッド2および3のVisual Studioセットアップ



以䞋に瀺すようにVisual Studioをセットアップしたす。



画像



画像



画像



プログむット



All Articles