1 #include "traceprocess.h"
8 TraceProcess::TraceProcess(QObject *parent)
12 m_process = new QProcess(this);
14 connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)),
15 this, SLOT(traceFinished()));
16 connect(m_process, SIGNAL(error(QProcess::ProcessError)),
17 this, SLOT(traceError(QProcess::ProcessError)));
20 QString format = QLatin1String("%1;");
22 QString format = QLatin1String("%1:");
24 QString buildPath = format.arg(APITRACE_BINARY_DIR);
25 QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
26 env.insert("PATH", buildPath + env.value("PATH"));
27 qputenv("PATH", env.value("PATH").toLatin1());
30 TraceProcess::~TraceProcess()
34 void TraceProcess::setExecutablePath(const QString &str)
38 QFileInfo fi(m_execPath);
39 QString baseName = fi.baseName();
41 QString format = QString::fromLatin1("%1.trace");
47 while (QFile::exists(m_tracePath)) {
48 format = QString::fromLatin1("%1.%2.trace");
55 QString TraceProcess::executablePath() const
60 void TraceProcess::setArguments(const QStringList &args)
65 QStringList TraceProcess::arguments() const
70 void TraceProcess::traceFinished()
73 qDebug()<<"trace finished on " << m_tracePath;
74 qDebug()<<"\terr = "<<m_process->readAllStandardError();
75 qDebug()<<"\tout = "<<m_process->readAllStandardOutput();
77 emit tracedFile(m_tracePath);
80 void TraceProcess::traceError(QProcess::ProcessError err)
83 qDebug()<<"trace error = "<<m_tracePath;
84 qDebug()<<"\terr = "<<m_process->readAllStandardError();
85 qDebug()<<"\tout = "<<m_process->readAllStandardOutput();
87 emit error(m_process->readAllStandardError());
91 void TraceProcess::start()
93 QStringList arguments;
95 arguments << QLatin1String("trace");
96 arguments << QLatin1String("--output");
97 arguments << m_tracePath;
98 arguments << QLatin1String("--");
99 arguments << m_execPath;
102 m_process->start(QLatin1String("apitrace"), arguments);
105 bool TraceProcess::canTrace() const
110 #include "traceprocess.moc"