15

レジストリエントリを使用して特定の関数や名前空間(ブーストライブラリなど)へのステップインを無効にする方法を示すいくつかの投稿/ブログに出くわしました。

VS2012でこれを実行しようとすると、期待した結果が得られませんでした。

私は試した...

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0_Config\NativeDE\StepOver]
"10"="std\:\:.*"
"20"="boost\:\:.*"

フォーマットは変更されましたか?正しいレジストリエントリがありますか?

4

2 に答える 2

28

私はついに「解決策」を見つけました:

新しい.natstepfilterをC:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger\Visualizersに追加します

<?xml version="1.0" encoding="utf-8"?>
<StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010">
  <Function><Name>boost::.*</Name><Action>NoStepInto</Action></Function>
  <Function><Name>std::.*</Name><Action>NoStepInto</Action></Function>
</StepFilter>

この特定の例では、「boost ::。*」形式が正しいとは思いませんが、これまたは類似のものである必要があります。その他の手がかりについては、フォルダー内の他の.natstepfilterファイルを参照してください。

残念ながら、私が見つけた投稿によると、これを行うことは、混合モード(C ++ / C#など)のアプリケーションをデバッグするときに機能しません。これは私が行っていることです。この機能を実装する方法を理解しようとしている他の人や、混合モードでこれを行う方法を知っている可能性のある人には、この質問を残しておきます。

于 2012-09-23T08:04:24.477 に答える
4

前の回答の補足として(残念ながらまだコメントできません)、そのディレクトリにはすでにdefault.natstepfilterというファイルがあり、そこに2行追加するだけです(の前に</StepFilter>)。

このファイルを変更するには、 default.natstepfilterを右クリックし、に移動しPropertiesてチェックを外す必要がある場合があります。Read-Onlyこれには管理者権限が必要です。

<?xml version="1.0" encoding="utf-8"?>
<StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010">
  <Function><Name>std::.*</Name><Action>NoStepInto</Action></Function>
  <Function><Name>__security_check_cookie</Name><Action>NoStepInto</Action></Function>
  <Function><Name>__abi_winrt_.*</Name><Action>NoStepInto</Action></Function>
  ...
</StepFilter>
于 2014-08-13T08:05:43.380 に答える