2013年1月7日月曜日

Windows で eclipse ~CUTE実践編(6)~


続き。

Windows で eclipse ~CUTEインストール編~
Windows で eclipse ~CUTE入門編~
と書いたが、実は重大な問題があり、その解決策を書く事にした。

今まで「実行方法」は記載していたが、「デバッグ方法」については記載していなかった。
これは、 「任意のフォルダにDLLを格納した場合」のデバッグ方法が判らなかったためである。

今回、様々な調査の結果、 「任意のフォルダにDLLを格納した場合」でも、デバッグできる方法を突き止めた。


1.デバッグできない…orz

デバッグすると、下記エラーメッセージが表示される。


[実行]  > [デバッグの構成] を開き、下記を試したが成果なし。
  • [共用ライブラリ] にパスを記述
    • [(フルパス)]
    • [(フルパス)/libCalcLib.dll]
  • [.gdbinit] ファイルに、共有ライブラリのパスを記述する。
    • [set shared CalcLib]
    • [set shared libCalcLib.dll]
    • [set shared (フルパス)libCalcLib.dll]
ふと思い立って、[libCalcLib.dll] を、[Calc/Debug] の下にコピーしたら、なんとすんなりデバッガが起動した!!

なので、デバッガに [libCalcLib.dll] のパスが通知されていないだけ、ということが明確になった。


▼対策1 ビルド完了時に、DLL をEXEが格納されているフォルダにコピーする

プロジェクトのプロパティを表示し、
[C/C++ビルド] > [設定] > [ビルド後のステップ] > [コマンド:] 
に、コピーコマンドを記述してみた。


で、ビルドしたところ、
「プログラム "copy" を実行できません: 起動失敗」
と表示された……orz。


ということで、この方法は断念。


▼対策2 環境変数PATHを書き換える

実は、Eclipse の設定を変更しても、GDB に共有ライブラリのパスは通知されない。
しかし、Windowsのシステムプロパティに共有ライブラリのパスを書くと、GDBに認識される。

[コントロールパネル] > [システム] > [詳細設定タブ] > [環境変数] > [システム環境変数] > [path] 
に、[libCalcLib.dll] のパスを追加する。

こうすると、[libCalcLib.dll] をコピーしなくてもデバッガが起動する。

とはいえ、プログラムを作ったり、ファイルを移動するたびにいちいちパスを書き換えるのは精神衛生上あまりよくない。まだコピーした方がマシ。


▼対策3 作業ディレクトリーをDLL格納フォルダに変更する

だいぶ悩んでようやくたどり着いた方法がコレ。
詳細は下記参照。



2.任意のフォルダに格納されたDLLをデバッグする方法



  • [プロジェクト・エクスプローラ] > [Calc] を右クリック。
  • [デバッグ] > [デバッグの構成] をクリック。



  • [デバッグ構成] ダイヤログが表示される。
  • [引数] タブをクリック
  • [デフォルト使用] のチェックを外す
  • [ワークスペース] をクリック。



  • [フォルダーの選択] ダイヤログが表示される。
  • [CalcLib] > [Debug] を選択
  • [OK] をクリック。



  • [適用] をクリック。
  • [デバッグ] をクリック。



  • デバッガが起動する。




という訳で、無事デバッガも起動できたので、本格的にバグの調査に進む。

0 件のコメント:

コメントを投稿