예제 #1
0
ULONG currentProcessId(CIDebugClient *client)
{
    IInterfacePointer<IDebugSystemObjects> sysObjects(client);
    if (sysObjects)
        return currentProcessId(sysObjects.data());
    return 0;
}
예제 #2
0
// Complete stop parameters with common parameters and report
static inline ExtensionContext::StopReasonMap
completeStopReasons(CIDebugClient *client, ExtensionContext::StopReasonMap stopReasons, ULONG ex)
{
    typedef ExtensionContext::StopReasonMap::value_type StopReasonMapValue;

    stopReasons.insert(StopReasonMapValue(std::string("executionStatus"), toString(ex)));

    if (const ULONG processId = currentProcessId(client))
        stopReasons.insert(StopReasonMapValue(std::string("processId"), toString(processId)));
    const ULONG threadId = currentThreadId(client);
    stopReasons.insert(StopReasonMapValue(std::string("threadId"), toString(threadId)));
    // Any reason?
    const std::string reasonKey = std::string(ExtensionContext::stopReasonKeyC);
    if (stopReasons.find(reasonKey) == stopReasons.end())
        stopReasons.insert(StopReasonMapValue(reasonKey, "unknown"));
    return stopReasons;
}
ClangPchManager::PchManagerConnectionClient::PchManagerConnectionClient(
        ClangBackEnd::PchManagerClientInterface *client)
    : ConnectionClient(Utils::TemporaryDirectory::masterDirectoryPath()
                       + QStringLiteral("/ClangPchManagerBackEnd-")
                       + currentProcessId()),
      m_serverProxy(client, ioDevice())
{
    m_processCreator.setTemporaryDirectoryPattern("clangpchmanagerbackend-XXXXXX");

    QDir pchsDirectory(Core::ICore::cacheResourcePath());
    pchsDirectory.mkdir("pchs");
    pchsDirectory.cd("pchs");
    m_processCreator.setArguments({connectionName(),
                                   Core::ICore::cacheResourcePath() + "/symbol-experimental-v1.db",
                                   pchsDirectory.absolutePath()});

    stdErrPrefixer().setPrefix("PchManagerConnectionClient.stderr: ");
    stdOutPrefixer().setPrefix("PchManagerConnectionClient.stdout: ");
}
QString ClangCodeModelConnectionClient::connectionName() const
{
    return temporaryDirectory().path() + QStringLiteral("/ClangBackEnd-") + currentProcessId();
}