12

Boost 是一组很棒的库,它确实提高了生产力。但是调试使用它的代码完全是一场噩梦。当然,遍历两万个头文件可能是一项有价值的智力练习,但如果你需要一遍又一遍地做呢?

是否有一种开发人员友好的方式可以跳过提升部分并让调试器直接访问我的代码?

Visual Studio 有一个适用于 .NET 框架的DebuggerStepThroughAttribute。本机 C++ 有类似的东西吗?

4

2 回答 2

11

没有独立于平台/编译器的方式,但有人告诉我,您可以告诉调试器不要“进入”某些函数或类。您应该查找注册表项:[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"

你可以在这里阅读更多内容。

于 2008-11-18T07:27:39.030 回答
10

您可以使用此处描述的技术完全跳过 boost 命名空间。只需使用类似的东西:

boost\:\:.*=NoStepInto

...在相关的注册表项中。

但是,如果您的代码在 boost 中被调用(例如,通过 aboost::function或类似方法),那么您的代码也将被跳过!如果有人能想出一个很好的解决方案来解决这个问题,我会很感兴趣......

于 2008-11-18T07:15:48.850 回答