Boost是一套很棒的库,它确实提高了生产力.但调试使用它的代码是一场彻头彻尾的噩梦.当然,单步执行两万个头文件可能是一项有价值的智力练习,但是如果你需要一遍又一遍地做什么呢?
是否有开发人员友好的方式只是跳过boost部分并让调试器直接进入我的代码?
Visual Studio有一个用于.NET框架的DebuggerStepThroughAttribute.原生C++有什么类似的东西吗?
没有平台/编译器独立的方式,但我被告知你可以告诉调试器不要"进入"某些功能或类.您应该查找注册表项:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver]
并按照规则应该应用的顺序创建一个名为数字的字符串值(我对此也有点困惑,但我猜这些规则只是在(可能是反向)中排序他们应该应用的方式)并将其设置为:"boost ::.*= NoStepInto".例如:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver] "10"="boost\:\:.*=NoStepInto"
你可以在这里阅读更多内容.
您可以使用此处描述的技术完全跳过boost命名空间.只需使用以下内容:
boost\:\:.*=NoStepInto
...在相关的注册表项中.
但是,如果你的代码是从boost中调用的(例如通过一个boost::function
或类似的),那么你的代码也会被跳过!如果有人能为这个问题找到一个好的解决方案,我会感兴趣的...