MCPcopy Create free account
hub / github.com/Codeya-IDE/deepin-ide / initTool

Method initTool

src/tools/performancedapter/tools.cpp:474–558  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

472}
473
474bool Tools::initTool(Tools::PerformanceType pt)
475{
476 std::cout << __FUNCTION__ << " : "
477 << enumElemName<PerformanceType>(pt)
478 << std::endl;
479
480 if (d->attachPID <= 0) {
481 qCritical() << "unknown process from attach PID" << d->attachPID;
482 }
483
484 QProcess* process = new QProcess;
485 process->setEnvironment({"LINES=1000", "COLUMNS=1000"});
486 if (PerformanceType::function == pt) {
487 process->setProperty(package_name.c_str(), "perf-tools-unstable");
488 process->setProperty(::enumName<PerformanceType>(), function);
489 process->setProgram("/usr/bin/perf");
490 process->setArguments({"top",
491 "--delay", "1",
492 "--fields","overhead,sample,period,dso,symbol,srcline",
493 "--hide_kernel_symbols",
494 "--verbose",
495 "--stdio",
496 "-p", QString::number(d->attachPID)});
497 QDir tempDir(QDir::tempPath());
498 if (!tempDir.exists("perf_top_redirect_stdout")) {
499 qInfo() << "create redirect output from perf top";
500 QFile file(tempDir.filePath("perf_top_redirect_stdout"));
501 file.open(QFile::OpenModeFlag::NewOnly);
502 file.close();
503 }
504 process->setStandardInputFile(tempDir.filePath("perf_top_redirect_stdout"));
505 }
506 if (PerformanceType::global == pt) {
507 process->setProperty(package_name.c_str(), system_default.c_str());
508 process->setProperty(::enumName<PerformanceType>(), global);
509 process->setProgram("/usr/bin/top");
510 process->setArguments({"-b",
511 "-d","1",
512 "-p", QString::number(d->attachPID)});
513 }
514
515 if (PerformanceType::vfs == pt) {
516 process->setProperty(package_name.c_str(), system_default.c_str());
517 process->setProperty(::enumName<PerformanceType>(), vfs);
518 process->setProgram("/usr/bin/lsof");
519 process->setArguments({"-r", "1",
520 "-p", QString::number(d->attachPID)});
521 }
522
523 if (PerformanceType::socket == pt) {
524 Template::checkSocketScript();
525 process->setProperty(package_name.c_str(), system_default.c_str());
526 process->setProperty(::enumName<PerformanceType>(), socket);
527 process->setProgram(Template::scriptsPathFrom(socket));
528 process->setArguments({QString::number(d->attachPID), QString::number(QCoreApplication::applicationPid())});
529 }
530
531 if (PerformanceType::deviceIO == pt) {

Callers

nothing calls this directly

Calls 14

numberClass · 0.85
connectFunction · 0.85
c_strMethod · 0.80
insertMethod · 0.80
setEnvironmentMethod · 0.45
setPropertyMethod · 0.45
setProgramMethod · 0.45
setArgumentsMethod · 0.45
existsMethod · 0.45
filePathMethod · 0.45
openMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected