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