当使用boost函数调试代码并在Visual Studio中绑定时,我希望能够让调试器显示有关boost函数指向的实际函数的信息。例如,函数的名称,原始函数的签名(在使用绑定之前)或者函子的状态。
目前,我必须逐步完成代码以找出它的功能,并且需要首先逐步完成增强代码。
有人知道这是否已经完成,或者是否可以完成?
谢谢!
编辑我也很高兴发现有人已经为此问题找到了答案:How to debug code that uses boost w/o losing sanity?
(我的意思是accepted answer中提到的问题:如何跳过boost代码但仍然进入boost :: function调用的代码......)
答案 0 :(得分:2)
有一项倡议可以促进debug visualizers。已有针对不同类型的调试可视化工具(variant,multi_index,shared_ptr等)。
不幸的是,boost :: function不在那里,但你可以自己编写一个可视化器,如同那里描述的那样(也许可以提交它来提升;)。或者,您可以请求为您编写一个。
的问候,
Ovanes
答案 1 :(得分:0)
使用visual studio和它的Debug Visualizer,正如ovanes指出的那样,当将鼠标悬停在变量上时,可以获得指向函数。
由于我不想垃圾邮件这篇文章充满了它,我只提供了前12种功能类型。如果你真的需要更多,你可能会扩展它。我向boost文档开发人员发送了类似的代码,最终也会在那里发布。
目前,当没有任何实际绑定到函数对象时,此可视化器类型将显示或多或少的垃圾。请注意,这有点早期草案。
boost::function0<*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function1<*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function2<*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function3<*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function4<*,*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function5<*,*,*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function6<*,*,*,*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function7<*,*,*,*,*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function8<*,*,*,*,*,*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function9<*,*,*,*,*,*,*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function10<*,*,*,*,*,*,*,*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function11<*,*,*,*,*,*,*,*,*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }
boost::function12<*,*,*,*,*,*,*,*,*,*,*,*,*> { preview( #("func=", $e.functor.bound_memfunc_ptr.memfunc_ptr) ) }