Visual Studioを用いたChoreonoidのデバッグが上手くいきません

以下のページに従って Visual Studioを用いてChoreonoidをデバッグしようとしているのですが,うまくいきません.
https://choreonoid.org/ja/manuals/latest/tips/VisualStudio/debug.html

デバッガーの起動と終了の手前までの作業を済ませ, 「ローカルWindowsデバッガー」をクリックすると,Choreonoidは起動するのですが,メニューが英語でプラグイン等が何も読み込まれません.

Visual Studioの中からではなく,インストールされたchoreonoid-debug.exeを実行すると,メッセージビューに

ネームサーバcnoid-nameserver.exeが見つかりません.

と表示されています.binディレクトリにインストールされたネームサーバの名前がcnoid-nameserverd.exeになっているためだと思われます.cnoid-nameserverd.exeを実行しようとすると,以下のようなエラーになります.

そこで,OpenRTM-aistに付属のネームサーバを起動すると,choreonoid-debug.exeは正常に起動できたようです.

付属のプロジェクトを読み込んでシミュレーションをしてみたところ,動作が大変遅いです.これは,デバッグビルドだからでしょうか.

本題に戻りまして,Visual Studioでデバッグするためにどうすればいいのでしょうか?

こちらでもVisual Studioでデバッグする機会がありましたので、試してみたのですが、デバッグ自体はマニュアルに記述の方法で特に問題なく実行できました。メニューも日本語のままで、プラグインも読み込めています。

ですのでそちらの環境でなぜそのような症状になるかについては、申し訳ないのですが、分かりません。

付属のプロジェクトを読み込んでシミュレーションをしてみたところ,動作が大変遅いです.これは,デバッグビルドだからでしょうか.

はい、デバッグ版というのは一般的にはそのようなものです。
ただしデバッグ情報をつけつつも最適化をかけるということも出来まして、そうすると速くなります。
ただし最適化をかけると命令の実行順が変わったり、不必要な命令が実行されなかったり、関数が展開されて関数呼び出しがなくなったりするので、デバッグはやりづらくなります。
またデバッグ時にランタイムチェックをかけたい場合は、その分やはり遅くなります。

ちなみにこちらで使用したVisual C++のバージョンは2017です。

返信ありがとうございます.当方のVisual C++のバージョンは2015です.そして,OpenRTM-aistの1.2.0を使っています.それらが関係するでしょうか?

そちらの環境では,ネームサーバの名前が cnoid-nameserverd.exeにはなっていませんか?

VC++2015で試したところ、升谷先生と同じ症状になりました。
Choreonoid自体に不備がある可能性が高く、失礼しました。
ちなみにOpenRTMプラグインはビルドしていなくてこの症状になったので、OpenRTMは今回の問題とは関係なさそうです。
調査の上何か分かりましたらここでご報告します。

1 Like

VC++2015でデバッグしようとするとうまく動かない件ですが、いろいろ試してみて、動かす方法が分かりました。(少なくとも私の環境では動きました。)

ポイントは、「デバッグするときに、リリース版を選択しておく」ということのようです。

まずデバッグビルドを選択してビルドしてインストールします。そしてChoreonoidのマニュアルに書かれている方法でデバッグの設定もします。

そして!その状況から「ローカルWindowsデバッガー」のボタンを押す前に、Releaseの選択に切り替えておきます。Debugのままだとダメ見たいです。(QtとかのDLLが見つからないというエラーになります。)デバッグするんだけど、なぜかそこの設定はReleaseでないとダメということです。そのようにしてから「ローカルWindowsデバッガー」のボタンを押したら、ちゃんと起動してデバッグもできるようになりました。

意味不明な挙動なのですが、まあマイクロソフトのプロダクトではよくあることですよね。試行錯誤しているときにいろいろ検索していたら、以下のように、多分同じ問題で困っている人もいるみたいですし。