Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: vebmaster от Февраль 04, 2017, 20:04



Название: [РЕШЕНО] QProcess. Приложение крашится после запуска (Crashed, CrashExit)
Отправлено: vebmaster от Февраль 04, 2017, 20:04
Приветствую всех.
Имеется консольное приложение собранное из исходников. В консоле через cmd запускается, работает хорошо. Запускаю через QProcess - крашится.
Отловит все сигналы что нашёл, результат:

Код:
stateChanged():  QProcess::ProcessState(Starting)
stateChanged():  QProcess::ProcessState(Running)
started()
errorOccurred():  QProcess::ProcessError(Crashed)
stateChanged():  QProcess::ProcessState(NotRunning)
finished():  -1073741515 QProcess::ExitStatus(CrashExit)

Подскажите пожалуйста, как можно понять хотябы почему оно крашится?


Код:
#include "work.h"
#include <QDebug>
#include <QTextStream>

Work::Work()
{
    myProcess = new QProcess();
    connect(myProcess, SIGNAL(started()), this, SLOT(started()));
    connect(myProcess, SIGNAL(errorOccurred(QProcess::ProcessError)), this, SLOT(errorOccurred(QProcess::ProcessError)));
    connect(myProcess, SIGNAL(readyReadStandardError()), this, SLOT(readyReadStandardError()));
    connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(readStandardOutput()));
    connect(myProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(finished(int, QProcess::ExitStatus)));
    connect(myProcess, SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(stateChanged(QProcess::ProcessState)));
    createProcess1();
}

void Work::createProcess1()
{
    QString program = "d:\\opt\\ms\\bin\\ms.exe --version";

    myProcess->start(program);

    myProcess->waitForStarted(3000);
    myProcess->waitForReadyRead(3000);
    myProcess->waitForFinished(100);
}

void Work::finished(int exitCode, QProcess::ExitStatus exitStatus)
{
    qDebug() << "finished(): " << exitCode << exitStatus;
}

void Work::readStandardOutput()
{
    qDebug() << "readStandardOutput(): " << myProcess->readAllStandardOutput();
}

void Work::readyReadStandardError()
{
    qDebug() << "readyReadStandardError(): " << myProcess->errorString();
}

// http://doc.crossplatform.ru/qt/4.7.x/qprocess.html
void Work::errorOccurred(QProcess::ProcessError error)
{
    qDebug() << "errorOccurred(): " << error;
}

void Work::started()
{
    qDebug() << "started()";
}

void Work::stateChanged(QProcess::ProcessState newState)
{
    qDebug() << "stateChanged(): " << newState;
}


Название: Re: QProcess. Приложение крашится после запуска (Crashed, CrashExit)
Отправлено: kambala от Февраль 04, 2017, 20:50
раз есть исходники того приложения, можно добавить отладочный вывод, чтобы понять где именно падает.

еще попробуй запустить его без параметра --version или передать этот параметр через второй параметр метода QProcess ::start()


Название: Re: QProcess. Приложение крашится после запуска (Crashed, CrashExit)
Отправлено: vebmaster от Февраль 04, 2017, 23:03
можно добавить отладочный вывод, чтобы понять где именно падает.
подскажите как это можно сделать, приложение написано на с++

параметр не причём, запускал и без параметра, тоже самое


Название: Re: QProcess. Приложение крашится после запуска (Crashed, CrashExit)
Отправлено: vebmaster от Февраль 05, 2017, 13:27
Проблему решил путём сборки запускаемого приложение в этой же операционной системе в которой и работаю. В проблемном случае приложение собиралось в другой.
Моя текущая windows 10. Собирал в Windows xp.


Название: Re: [РЕШЕНО] QProcess. Приложение крашится после запуска (Crashed, CrashExit)
Отправлено: kambala от Февраль 05, 2017, 14:24
то есть приложение, собранное в ХР, спокойно запускалось в консоли 10-ки, но при запуске через QProcess падало?


Название: Re: [РЕШЕНО] QProcess. Приложение крашится после запуска (Crashed, CrashExit)
Отправлено: vebmaster от Февраль 06, 2017, 12:00
то есть приложение, собранное в ХР, спокойно запускалось в консоли 10-ки, но при запуске через QProcess падало?
да