問題タブ [mobile-robot-toolkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - サード パーティ ライブラリでのセグメンテーション エラーのトレース: cv::ImageCodecInitializer デストラクタがクラッシュする
私たちは、 OpenCV 2.4 を使用するmrpt-1.9を直接使用するフレームワークを開発しています。テストが存在する場合 (クリーンアップ中など) にセグメンテーション違反を起こし、OpenCV エラーが発生する単体テストを作成していました。cv::String::deallocate()
私が試したこと:
valgrind での実行
私の知る限り、これは MRPT 関数を間違って呼び出しているか、MRPT 自体のバグである可能性があります。
gdbで実行します:
私は gdb でデバッグしようとしていますが、バックトレースを取得することしかできませんが、コードのどの部分が原因であるかはわかりません。メイン出口の後に発生するように見えるので、本当に混乱します。さらに悪いことに、私たちが構築した (実際には何もしていない) クラスには MRPT クラスやオブジェクトが含まれていないため、これはフレームワークではなく MRPT ライブラリにあると推測しています。
にブレークポイントを設定しましたbreak cv::ImageCodecInitializer::~ImageCodecInitializer
そして、私は次のようになりました:
opencv-2.4 デバッグを検索
アプリはデバッグ シンボルを使用してビルドされていますが、システムにはデバッグ シンボルを使用した opencv-2.4 がないように見えるため、最適化されていないという警告が引き続き表示されます。
問題のある関数の実際のポイントを検索しました
問題を特定するために作成した縮小されたデバッグ実行可能ファイルを調べてから、実際の関数を検索してみました。
次に、これらのアドレスについて GDB が何を言おうとしているのかを見つけようとしました。
しかし、私はそこからどこにも行けないので、GDB で検索して、これを構築した人を見つけました。
再度最適化します。
問題のある関数を使用するライブラリを検索しました
関数が入ってlibopencv_highgui.so.2.4
いるので、MRPT ライブラリの 1 つがそれを使用していると推測しているので、どの MRPT ライブラリに対してリンクしているか、どの MRPT ライブラリがそれを使用しているかを検索し、見つけました。
だから、私はそれを見つけました:
その後:
私たちのプロジェクトでは、それに静的にリンクされたopencv-3.3を使用しているため、これが問題を引き起こしているライブラリであることはわかっています。残念ながら、私たちが使用しているリポジトリには、MRPT のデバッグ シンボルもありません。
さらに悪いことに:
そして、これが旅の終わりです。
私のオプションは何ですか?
- 別のバージョンの mrpt を使用しますか?
- mrpt をデバッグ シンボルでコンパイルしますか?
- デバッグシンボルでopencv-2.4をコンパイルしますか?
ヘルプ、ヒント、またはヒントは大歓迎です。この質問がローカライズされすぎていたり、SO 標準に準拠していない場合は、コメントを残してください。更新します。
ubuntu - ロボットの寸法を設定する
私は大学のプロジェクトで MRPT、特に CHolonomicVFF クラスを使用しています。簡単な障害物回避機能を実装する ROS ノードを作成しました。動作しているように見えますが、ロボットの寸法を指定する方法が必要です。CHolonomicVFF class wiki をチェックしましたが、役立つものは何も見つかりませんでした。
どうもありがとう。