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 qWarning()<<"Windows tracing isn't supported right now!";
24 QString format = QLatin1String("%1;");
26 QString format = QLatin1String("%1:");
28 QString buildPath = format.arg(APITRACE_BINARY_DIR);
29 QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
30 env.insert("PATH", buildPath + env.value("PATH"));
31 qputenv("PATH", env.value("PATH").toLatin1());
35 TraceProcess::~TraceProcess()
39 void TraceProcess::setExecutablePath(const QString &str)
43 QFileInfo fi(m_execPath);
44 QString baseName = fi.baseName();
46 QString format = QString::fromLatin1("%1.trace");
52 while (QFile::exists(m_tracePath)) {
53 format = QString::fromLatin1("%1.%2.trace");
60 QString TraceProcess::executablePath() const
65 void TraceProcess::setArguments(const QStringList &args)
70 QStringList TraceProcess::arguments() const
75 void TraceProcess::traceFinished()
78 qDebug()<<"trace finished on " << m_tracePath;
79 qDebug()<<"\terr = "<<m_process->readAllStandardError();
80 qDebug()<<"\tout = "<<m_process->readAllStandardOutput();
82 emit tracedFile(m_tracePath);
85 void TraceProcess::traceError(QProcess::ProcessError err)
88 qDebug()<<"trace error = "<<m_tracePath;
89 qDebug()<<"\terr = "<<m_process->readAllStandardError();
90 qDebug()<<"\tout = "<<m_process->readAllStandardOutput();
92 emit error(m_process->readAllStandardError());
96 void TraceProcess::start()
98 QStringList arguments;
100 arguments << QLatin1String("trace");
101 arguments << QLatin1String("--output");
102 arguments << m_tracePath;
103 arguments << QLatin1String("--");
104 arguments << m_execPath;
107 m_process->start(QLatin1String("apitrace"), arguments);
110 bool TraceProcess::canTrace() const
115 #include "traceprocess.moc"