0

Visual Studio でしばらく取り組んでいるプロジェクトがあり、デバッガーを広範囲に使用しています。最近、いくつかの設定を変更したところ、プログラムを停止してコードをステップ実行することができなくなりました。これに影響を与えた可能性のある変更内容を理解できません。

コードにブレークポイントを設定して、そこでプログラムを停止させようとしても、停止しません。ブレーク ポイントは、赤のアウトラインで白く表示されます。マウスをその上に置くと、「ブレークポイントは現在ヒットしません。デバッガーのターゲット コード タイプの実行可能コードは、この行に関連付けられていません。考えられる原因には、条件付きコンパイル、コンパイラの最適化、またはこのターゲット アーキテクチャが含まれます。行は、現在のデバッガ コード タイプではサポートされていません。」

InitializeComponent メソッドの先頭にブレークポイントを配置したため、ブレークポイントがある場所でプログラムがコードを実行することがわかっています。プログラムはウィンドウを正常に表示しますが、ブレークポイントで停止しません。はい、デバッグ モードで実行しています。

コンパイルされたコードと表示されるソース コードの間に切断があるようです。それが何であるか、またはデバッグを再度有効にするためにチェックする必要があるコンパイラ設定を知っている人はいますか?

コンパイラ オプションは次のとおりです。

/GS /analyze- /W3 /Zc:wchar_t /I"D:\dev\libcurl-7.19.3-win32-ssl-msvc\include" /Zi /Od /sdl /Fd"Debug\vc110.pdb" /fp :正確 /D "WIN32" /D "_D​​EBUG" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Oy- /clr /FU"C:\Program Files (x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll" /FU"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Data.dll" /FU "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.dll" /FU"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4. 5\System.Drawing.dll" /FU"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Windows.Forms.DataVisualization.dll" /FU"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Windows.Forms.dll" /FU"C:\Program Files ( x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Xml.dll" /MDd /Fa"Debug\" /EHa /nologo /Fo"Debug\" /Fp"Debug\Prog.pch"

リンカーのオプションは次のとおりです。

/OUT:"D:\dev\Prog\Debug\Prog.exe" /MANIFEST /NXCOMPAT /PDB:"D:\dev\Prog\Debug\Prog.pdb" /DYNAMICBASE "curllib.lib" "winmm.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /FIXED:NO /DEBUG /MACHINE:X86 /ENTRY:"Main" /INCREMENTAL /PGD:"D:\dev\Prog\Debug\Prog.pgd" /SUBSYSTEM:WINDOWS / MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\Prog.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"D:\dev\libcurl-7.19.3-win32 -ssl-msvc\lib\Debug" /ASSEMBLYDEBUG /TLBID:1

4

4 に答える 4

0

この動作は、コンパイラが自動最適化を行う場合に発生する可能性があります。コンパイラの最適化を無効にして再実行してみてください。

を選択しProject Properties -> C/C++ -> Optimizationます。
[最適化] で、オプションを選択しますDisabled (/Old)

于 2016-12-07T08:08:16.110 に答える
0

完全な答えのふりをするわけではありませんが、ここにいくつかの考えがあります:

  • プロジェクトのバックアップ コピーを作成します (さらなる損傷を防ぐため)。
  • コンパイルされたすべてのバイナリとオブジェクト ファイルを削除しますDebug。フォルダー全体とその他のファイルを削除します。ソース ファイル、プロジェクト ファイル、ソリューション ファイル (およびアセット、フォーム、データベースなどを使用する場合) だけを残します。他のビルド フォルダーを削除することもお勧めしますRelease
  • プロジェクトの再構築
  • デバッガーが期待どおりのプロジェクトを開始することを確認します。ソリューション エクスプローラーでプロジェクトを右クリックし、Set as StartUp project
  • デバッガーが期待どおりのバイナリを開始することを確認します。Project Properties - Debugging - Command
  • VS で開いているすべてのファイルを閉じます。ソリューション エクスプローラーをクリックして、ブレークポイントを含むソース ファイルを再度開きます。ブレークポイントを含むソース ファイルがコンパイル時に使用されたものと同じであることを確認します。ソース フォルダーに移動し、ダブルクリックして開きます。エディターで開いたファイルとソース フォルダー内のファイルへのパスを比較します。また、コンパイルの前にファイルを保存してください。
  • を使用してデバッグを開始してみてくださいStep Into。次に、 をクリックしますShow next statementmain()本当に壊れたものに足を踏み入れないなら;(
  • 何も解決しない場合は、新しいプロジェクトを作成し、ソース ファイルをそのフォルダーにコピーして、新しいプロジェクトに再帰的に追加します。

将来それを防ぐ方法:

このような状況での時間の損失、コードの損失、フラストレーションを防ぐために、プログラマーはバージョン管理システムを使用します。コーディング結果を段階的に保存できるため、任意の 2 つのステップをすばやく比較し、変更内容を観​​察し、必要に応じてロールバックできます。

最も一般的なシステムは、Subversion (SVN)、Git、Mercurial (Hg) です。すべてを Visual Studio に統合できます。

あなたのコードを愛し、作業結果を決して緩めたり壊したりしないでください!

それが役に立てば幸い。ハッピーコーディング!=)

于 2013-11-09T03:49:20.110 に答える