MAGIC V10Beta評価(その2) [dbMAGIC]
今日はちょっとV10の内部的なことを・・・。
うちのアプリの共通プログラムの中で、コマンドラインを取得するプログラムがあります。これは、現在、使用されているMAGIC.INI等のファイル名を判定するために「GetCommandLine」というWin32のAPIを使用して取得しています。
つまり戻り値が、
のように、「"C:\Program Files\Magic\eDeveloperPlus\MGgenw.exe" /ini=(パス名)\magic.ini /user=(ユーザ名)」のような形で返ってきます。この「/ini=」以降の文字列を取得することにより、それが可能となります。
この共通プログラムを起動しているMAGICのパス名を判断するために使っている箇所があったんですね。ところが、実は、V10だと若干仕様が変わりまして、パス名が返ってきません。
つまりV10では、「eDevRTE.exe /INI=(パス名)\Magic.ini /USER=(ユーザ名) /[INTERNALS]RteDebugMode=1 /[INTERNALS]AgentTlkPort=43996 /[INTERNALS]AgentRtPort=44433 /[INTERNALS]DeploymentMode=R」というように、指定した「/ini=」や「/user=」などのパラメータ以外の[INTERNAL]というセクションのパラメータが勝手に付くばかりでなく、実行形式の「eDevRTE.exe」(これは実行版のプログラム名で、開発版の実行名「eDevStudio.exe」とは異なるもの)はパス名が取れてしまいます。
パス名を判断するために使用していた箇所は、当然ながら誤動作してしまう結果となりました。
このことから何が分かるかと言うと、次のものです。
- 開発版から実行すると、プログラムは開発版ではなく実行版が起動される
- 開発版と実行版は、パラメータの受け渡しにより連動している(エージェントが存在している!?)
- 開発版と同じパスに実行版のモジュールが存在する仕様となっている
(Win32のAPIを使うなら、「GetModuleFileNameA」を使うのが正しいらしい。) ということで、今回は、環境周りの一例により、V10の新たな側面を見ることができた?という話でした。
プログラムのエラーがあっても、実行版だけコケてくれるので、有り難い?し、実行させながら開発版でプログラムの中身を見ることもできる(読み込み専用となりますが...)ので、ちょっとばかり開発条件は変わってくるかもしれませんね。 ちなみに、今回キャプチャした画面は、うちで作っているデバッガのV10移植版のものです。問題なく動いていることをお知らせしておきます。
V10のデバッグ機能のほうは、まだ見てないですが、ブレークポイントを設定したり、変数も更新できたりと、良くなっているらしいので、「うちのデバッガは、もう出番が無い?」のかも知れませんが・・・。(^^;
コメント 0