VC PlusPlus:DLLのデバッグ親の実行ファイル*.exeから呼び出されるタイプWindows10 64bit
VC Cpp記事に戻る。
概要
DLLが親の実行ファイル(*.exe)から呼び出されるタイプのデバッグ方法についての記事です。
いわゆる、プラグイン開発なんかが該当します。*.dllや*.vst3を指定のディレクトリに配置して、DAWのようなプラグインを読み込み、呼び出すようなものです。
このWikiの関連記事で作ったサンプルをDLLをデバッグする手順を示します。デバッグには大きく分けて2種類あります。俺がやるデバッグか、俺がいないデバッグか。ローランドさんの鉄板ですね。
- アタッチする。
- アタッチの自動化。つまり、実行ファイルを指定する。
の2種類でした。
■アタッチしてDEBUGする手順
1.VC PlusPlus:LIB/DLLの生成とLIB呼び出し、DLL呼び出しについての記事をできれば理解しつつ、記事の下の方にあるサンプルを入手します。
2.3つのソリューションそれぞれのプロジェクトをビルドします。CppDLLを最後にビルドしましょう。
3.CppDLLソリューションプロジェクトの中のdllmain.cppの6行目にブレークポイントを設定します。
4.CppLoadDLLソリューションの中の\\x64x\\Debug\\CppLoadDLL.exeを起動します。入力待ちになります。起動して止まっているところで、Visual Studioの画面に戻ります。
5.Visual Studioのメニュー[デバッグ]-[プロセスにアタッチ]を選択します。
6.Visual Studioがデバッグの画面に遷移します。性能のよいPCならすぐに次の手順に行っても問題ないのでしょうけれど、遅いPCはデバッグの画面への遷移が落ち着くまで待った方が良いでしょう。
7.実行中だったCppLoadDLL.exeのコマンド画面に戻り、数字を入力してEnterキーを押します。
8.これでブレークポイントを設定したdllmain.cppの6行目で実行が止まります。
9.Dll側のプログラムが一行なので、特にデバッグでやりたいこともないでしょうから、続行で終わらせてもよいでしょう。F5キーですね。ツールバーの緑の再生アイコンの[続行]でもいいです。
10.はい。プログラムが進んでデバッグ終了です。以上がデバッグの手順です。
■アタッチの自動化。つまり、実行ファイルを指定する手順
1.ソリューションエクスプローラーのCppDLLというプロジェクト名の項目を右クリックして表示されるメニューの[プロパティ]を選択。よく使うプロパティ画面なので、いろいろな方法でこの画面を表示することはできます。
2.表示されたダイアログの左側のツリー項目の[デバッグ]を選択したときに、表示される設定リストの「コマンド」欄にCppLoadDLL.exeへのフルパス。例えば、C:\Users\(ユーザID)\source\repos\CppLoadDLL\x64\Debug\CppLoadDLL.exeとかになります。
3.「コマンド」欄と同じところにある、ちょい下の「作業ディレクトリ」欄も念のため入力しておきます。CppLoadDLL.exeのパスです。例えば、C:\Users\(ユーザID)\source\repos\CppLoadDLL\x64\Debugですね。
4.上記2を入力したら、ダイアログを[OK]ボタンで閉じます。
5.ソリューションエクスプローラーのCppDLLというプロジェクト名の項目を右クリックして表示されるメニューの[スタートアッププロジェクトに設定]を選択。
6.ここまでを設定すると、アタッチの手順でやったような複雑な手順を踏まなくても、デバッグの開始を実行するだけで、何度でもデバッグができます。メニューの[デバッグ]-[デバッグの実行]ですね。
これが基本的なデバッグのやり方になりますが、これで全てOKというわけではありません。ホストアプリケーションの仕組みによっては、この方法でデバッグできずに固まってしまうという結末もありえます。固まってしまう場合は、管理人の場合、修復不能でした。そうなってしまうPCはもう重症の可能性があり、他のPCではうまく行くというパターンの場合では、重症PCはOSの再インストールくらいからやりなおさないと修復できないと思われます。原因を究明するのはかなり高度な技術が必要になります。困りましたね。困った。でも諦めるという決断は大事です。壊れるべくしてシステムは壊れるものです。
この記事では、そのような場合にどうしたらいいかということについても、なるべく触れていきたいと思いますが、それは来世の話になりそうです。記事が更新されるまでにどれくらいかかるか?期待せずに期待してほしいものだな!ではまた。OSの再インストールをして、PCを使いやすくするために、いままで積み上げてきた作業をもう一度やりなおす。そういう作業をやった方が早いくらいのことですよ。
VC Cpp記事に戻る。