如果没有发生异常,如何调试MagickReadImage会失败

时间:2016-09-15 11:18:00

标签: c++ imagemagick magickwand

我有一些MagickWand代码,其中MagickReadImage()在一个系统上失败(返回MagickFalse),而另一个系统在另一个系统上工作。

现在没有异常发生,MagickGetException()返回一个空字符串,如果我正确理解文档,则表示没有异常。

我要打开的文件在那里,我可以使用同一用户下的其他工具打开它,而我使用的magick_wand不是NULL。

呼叫周围的代码基本上是这样的:

    // read image
    MagickBooleanType status = MagickReadImage(magick_wand, fn_selector);

    // make sure it worked
    if (status == MagickFalse)
    {
            char *description;
            ExceptionType severity;
            description=MagickGetException(magick_wand,&severity);
            fprintf(stderr,"%s %s %lu :%s: %u\n",GetMagickModule(),description,severity);
            description=(char *) MagickRelinquishMemory(description);
            fprintf(stderr, "magickwand couldn't read file %s\n", fn_selector);
            exit(1);
    }

有没有办法找出函数调用失败的原因? MagickReadImage()似乎调用了一个内部函数,它不易调试,我不想自己构建MagickWand库,如果不是绝对必要的话,添加调试内容。

使用MagickWand版本6.8.9.9(debian jessie)

1 个答案:

答案 0 :(得分:0)

结果(经过strace之后)ImageMagick的PDF阅读部分需要在系统上安装 ghostscript 可执行文件(/usr/bin/gs)。现在,当通过Debian apt包管理器安装ImageMagick时,ghostscript不是依赖项,只是对Magick库的推荐。不幸的是,当读取调用失败时,Magick认为没有必要以任何方式通知您库部件丢失。

安装ghostscript软件包后,一切都按预期工作。