0

Windows 7 用の C コードをいくつかクロスコンパイルし、ここにあるlibpng12.dll にリンクしています。残念ながら、以下の行はクラッシュを引き起こします (GDB はセグメンテーション違反を示します):

png_structp png = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);

どこからデバッグを開始すればよいかわかりません。この関数は非常に単純で、残りのコードとは無関係のようです。バックトレースの上部は次のようになります。

#0 0xabababab in ?? ()
#1 0x6cc556d1 in png_set_read_fn () from c:\...libpng12.dll
#2 0x6cc7a5d4 in png_libpng_ver () from c:\...libpng12.dll
#3 0x00000038 in ?? ()
#4 0x0028f928 in ?? ()

#5 は呼び出し元の関数なので、#4 は png_create_read_struct() だと思います。

4

2 に答える 2

0

Please generate a core dump firstly by using ADplus or windbg etc.., and then look at the assembly code around the address of #0 (0xabababab ), also you can check the variable values with regards to those assembly. If you have the source code, you may have a good chance to understand the logic of why it crashes.

于 2012-07-17T06:17:56.733 に答える
0

(残念ながら試行錯誤により)解決しましたが、他の誰かがこの問題を経験した場合に備えて、zlibのバージョンが正しくないことが原因です(私の場合は古すぎます)。これは、実行時に非常に簡単に確認できます。

fprintf(stderr, "   Compiled with libpng %s; using libpng %s.\n",
        PNG_LIBPNG_VER_STRING, png_libpng_ver);
fprintf(stderr, "   Compiled with zlib %s; using zlib %s.\n",
        ZLIB_VERSION, zlib_version);
于 2012-07-18T07:29:40.350 に答える