1

最近現れたばかりの奇妙な問題があります。

Qt アプリ内から外部バイナリにアクセスすると、アプリが次のエラーでクラッシュします。

Exception Type:  EXC_CRASH (SIGABRT)

しかし、Qt Creator 内の「ビルドして実行」から実行すると、アプリケーションで外部バイナリにヒットしたポイントにアクセスすると、すべてが正常に実行されます。

これは、アプリがQtクリエーターの外部からクラッシュしたときにヒットした関数です

QString Api::getVideoFrame(QString filename, QString position)
{
    const QString ffmpeg = QDir::currentPath()+"/ffmpeg"; //mac version
    QProcess process;
    QStringList args;
    args    << "-ss" << position
            << "-i" << filename
            << "-f" << "image2"
            << "-vframes" << "1"
            //<< "-vcodec" << "bmp"
            << "pipe:1";
    process.start(ffmpeg, args);
    process.waitForFinished();

    return QString(process.readAllStandardOutput().toBase64());
}

この場合、ffmpeg だけでなく、他の外部バイナリにアクセスするときにもクラッシュします。

QDir::currentPath() と関係があると感じています。パスを台無しにすると、Qt Creator 内からもクラッシュするためです。

明らかに、対応するバイナリを Contents/MacOS/ フォルダーの実行可能ファイルの横に追加しました

これをデバッグする方法が本当にわかりません..これを解決する方法の手がかりはありますか?

4

2 に答える 2