none
アプリケーションと関連付けたファイルをダブルクリックで起動した場合の処理のデバッグ方法 RRS feed

  • 質問

  • いつもお世話になっております。arubi_momoと申します。

    開発環境はWindows7 VisualStudio2010 MFC SDIを使用しています。

    拡張子に関連付けられているアプリケーションがありまして、アプリケーションを起動して「ファイルを開く」とした時と、関連付けされたファイルをダブルクリックして起動した時と、動作が異なっており、後者の操作をした時にのみ不具合が生じております。

    不具合の原因が何なのか、調査を行いたいのですが、そもそも関連付けされたファイルをダブルクリックした時にどういう処理を通っているのかすらわかりません。

    勉強不足で大変恐縮ですが、どのようにプログラムを追えばよいのか、ご指導いただければ助かります。

    シングルドキュメントを使用しています。

    何卒、よろしくお願いいたします。

    2015年8月6日 8:23

回答

  • 状況によるかもしれませんが、プロジェクトのプロパティのデバッグのコマンドライン引数にそのファイルのフルパスを書いてデバッグ実行しても再現できるかもしれません。


    ※フルパスに半角スペースを含む場合は " (二重引用符で囲む)
    2015年8月6日 13:22
    モデレータ

すべての返信

  • デバッグビルドしたexeを、関連付けされたファイルのダブルクリックで起動できる。
    という条件なら、

    1.アプリケーションクラスのInitInstance()にデバッグブレークをコードします。

      BOOL MyApp::InitInstance()
      {
        __debugbreak();  // デバッグブレーク
           :
      }

    2.ファイルのDBLクリックでデバッグビルドのexeが起動すると、「・・・停止しました・・・」DLGが表示されます。
     その中の「プログラムをデバッグする」を選択します。
    3.デバッガの選択画面が表示されたら(VS2010)を選択すると、VSが起動します。
    4.「ブレークポイントが発生しました」DLGで、「中断」を選択します。
    5.もし、アセンブラ(または混合表示)の状態になっているときは、右クリックして「ソースコードへ移動」を
     選択してみてください。


    2015年8月6日 9:33
  • 状況によるかもしれませんが、プロジェクトのプロパティのデバッグのコマンドライン引数にそのファイルのフルパスを書いてデバッグ実行しても再現できるかもしれません。


    ※フルパスに半角スペースを含む場合は " (二重引用符で囲む)
    2015年8月6日 13:22
    モデレータ
  • 仲澤@失業者様、Azlean様

    いつもお世話になっております。arubi_momoです。

    ご回答ありがとうございました。

    Azlean様にご教示いただいたやり方で、デバッグできそうです!

    まだ不具合の原因までは突き止められていませんが、プログラムを追うことはできそうです。大変助かりました。ありがとうございます。

    仲澤@失業者様のやり方も試してみましたが、たぶん私のやり方が間違っていて、うまくいきませんでした。でもこんなやり方もあるのですね。exe起動からデバッグできるなんて知りませんでした。大変勉強になります。ありがとうございました。

    今後ともよろしくお願いいたします。

    2015年8月7日 1:32