2009-07-03 2 views
1

ブースト関数とビジュアルスタジオでバインドを使用してコードをデバッグするとき、デバッガにブーストファンクタが指し示す実際の関数に関する情報を表示させたいと考えています。たとえば、関数の名前、元の関数のシグネチャ(バインドが使用される前)、ファンクタの状態などです。ブースト関数オブジェクトが指す関数の名前をデバッガに表示させることはできますか?

現時点では、どの機能があるかを調べるためにコードをステップ実行する必要があります。そのためには、最初にブーストコード全体をステップ実行する必要があります。

これが完了したのか、それとも完了できたとしても誰にも分かりますか?

ありがとうございました!

編集私はまた、誰かが今ではこの質問への答えを開発していることを見つけることは非常に幸せになるだろう:How to debug code that uses boost w/o losing sanity?

を(私はaccepted answerで述べた問題を意味する:ブーストをステップオーバーする方法コードではありますが、boost :: function ...と呼ばれるコードにステップインします)

答えて

2

debug visualizersを作成するためのイニシアチブがあります。さまざまなタイプ(variant、multi_index、shared_ptrなど)のビジュアライザはすでにデバッグされています。

残念ながら、boost :: functionは存在しませんが、そこに記述されているようにビジュアライザーを書くことができます(ブーストに送信することもできます)。あるいは、あなたのためにあなたに書き込むように要求することができます。

よろしく、Visual Studioを使用
Ovanes

+0

ありがとうございました! – Vickster

0

とovanesによって指さとして、それは、デバッグビジュアライザだ、変数の上にマウスを移動するとき尖ったが機能するために取得することが可能です。

私はこの投稿を完全に迷惑メールにしたくないので、ここでは最初の12種類の機能タイプのみを提供します。あなたが本当にもっと必要とするならば、それを拡張することができるでしょう。私は、同様のコードをブックス・ドックの開発者に送って、結局はそこにも公開されるでしょう。

現在、このビジュアライザータイプは、実際に関数オブジェクトに何もバインドされていない場合、多かれ少なかれごみを表示します。そして、これは若干初期ドラフトであることに注意してください。


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)) } 
関連する問題