6

C++ アプリケーション内に埋め込まれた Lua 5.2.2 コードをデバッグするにはどうすればよいですか?

私はすでにこの質問を見ており、そこで提供されているすべての IDE は 5.1 以下に対応しており、5.2.2 で使用しようとするとクラッシュします。

4

2 に答える 2

5

Lua 5.2 デバッグの手順に従って、ZeroBrane Studioを使用してアプリケーションをデバッグできるはずです。Lua5.2 に対して luasocket をコンパイルする必要があることに注意してください。(表示されるクラッシュは、アプリケーションが Lua5.1 に対してコンパイルされた luasocket をロードし、Lua5.1 DLL をロードするか、必要なシンボルを見つけられないことが原因である可能性があります。)

luasocket をコンパイルしたくない場合は、このフォルダーとそのサブフォルダーから Windows/OSX/Linux のバイナリを取得できます。これらのライブラリが、Lua5.1 に対してコンパイルされた luasocket を持つ可能性のあるフォルダーの前に LUA_CPATH にあることを確認してください。

[チャット ディスカッションに基づいて更新] 複数の VM の問題が発生する可能性がある理由は、アプリがおそらく Lua インタープリターを静的にコンパイルしているためです。次に、luasocket を (直接または mobdebug を介して) ロードします。これは lua52.dll に対してコンパイルされ、インタープリターの別のコピーをロードします。これを回避するには、2 つの選択肢があります。(1) lua インタープリター自体を含めるのと同じ方法で、luasocket をアプリにコンパイルします。アプリをデバッグするための 1 つの mobdebug.lua ファイル以外は何も必要ありません。または (2) プロキシ DLL を使用します。lua52.dll のように見えますが、実際には呼び出しを静的にコンパイルされた lua ライブラリにプロキシし、複数の VM の問題を回避します。プロキシ dllはLua 5.1 用ですが、スクリプトを微調整して Lua 5.2 で動作するようにすることができます。

(インタープリターが静的にコンパイルされていない場合、ロードする Lua DLL の名前が lua52.dll とは異なる場合、2 つのインタープリターを取得する可能性があります。)

于 2013-09-08T05:45:33.373 に答える