diff options
author | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2009-03-05 14:00:19 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@nokia.com> | 2009-03-05 15:26:23 +0100 |
commit | 6e118e72a0bcffa3a6c6967fd9196415063673f1 (patch) | |
tree | fc43fa6130a3a31186812f6b2dbf26eedb6bb99e /src/plugins/debugger/procinterrupt.cpp | |
parent | 445e409db75bb83e03efa7acde2de36d24958bc3 (diff) | |
download | qt-creator-6e118e72a0bcffa3a6c6967fd9196415063673f1.tar.gz |
process interruption improvements
rely on the inferior's pid being available. consequently, remove the
bizarre findChild stuff.
Diffstat (limited to 'src/plugins/debugger/procinterrupt.cpp')
-rw-r--r-- | src/plugins/debugger/procinterrupt.cpp | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/src/plugins/debugger/procinterrupt.cpp b/src/plugins/debugger/procinterrupt.cpp index 685f83c364..3eb38bc2c6 100644 --- a/src/plugins/debugger/procinterrupt.cpp +++ b/src/plugins/debugger/procinterrupt.cpp @@ -32,7 +32,6 @@ #if defined(Q_OS_WIN) #include <windows.h> -#include <Tlhelp32.h> using namespace Debugger::Internal; @@ -51,28 +50,6 @@ PtrCreateRemoteThread resolveCreateRemoteThread() return (PtrCreateRemoteThread)GetProcAddress(hLib, "CreateRemoteThread"); } -DWORD findProcessId(DWORD parentId) -{ - HANDLE hProcList = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - - PROCESSENTRY32 procEntry; - procEntry.dwSize = sizeof(PROCESSENTRY32); - - DWORD procId = 0; - - BOOL moreProc = Process32First(hProcList, &procEntry); - while (moreProc) { - if (procEntry.th32ParentProcessID == parentId) { - procId = procEntry.th32ProcessID; - break; - } - moreProc = Process32Next(hProcList, &procEntry); - } - - CloseHandle(hProcList); - return procId; -} - bool Debugger::Internal::interruptProcess(int pID) { DWORD pid = pID; @@ -92,83 +69,17 @@ bool Debugger::Internal::interruptProcess(int pID) return false; } -bool Debugger::Internal::interruptChildProcess(Q_PID parentPID) -{ - DWORD pid = findProcessId(parentPID->dwProcessId); - return interruptProcess(pid); -} - #endif // defined(Q_OS_WIN) #if defined(Q_OS_LINUX) || defined(Q_OS_MAC) -#include <QtCore/QLatin1String> -#include <QtCore/QString> -#include <QtCore/QDir> -#include <QtCore/QFileInfoList> -#include <QtCore/QByteArray> -#include <QtCore/QDebug> - #include <sys/types.h> #include <signal.h> -#include <sys/sysctl.h> - - using namespace Debugger::Internal; -/* Mac OS X -int OPParentIDForProcessID(int pid) - // Returns the parent process id for the given process id (pid) -{ - const uint OPProcessValueUnknown = UINT_MAX; - struct kinfo_proc info; - size_t length = sizeof(struct kinfo_proc); - int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid }; - if (sysctl(mib, 4, &info, &length, NULL, 0) < 0) - return OPProcessValueUnknown; - if (length == 0) - return OPProcessValueUnknown; - return info.kp_eproc.e_ppid; -} -*/ - -int findParentProcess(int procId) -{ - QFile statFile(QLatin1String("/proc/") + QString::number(procId) + - QLatin1String("/stat")); - if (!statFile.open(QIODevice::ReadOnly)) - return -1; - - QByteArray line = statFile.readLine(); - line = line.mid(line.indexOf(')') + 4); - //qDebug() << "1: " << line; - line = line.left(line.indexOf(' ')); - //qDebug() << "2: " << line; - - return QString(line).toInt(); -} - -int findChildProcess(int parentId) -{ - QDir proc(QLatin1String("/proc")); - QFileInfoList procList = proc.entryInfoList(QDir::Dirs); - foreach (const QFileInfo &info, procList) { - int procId = 0; - bool ok = false; - procId = info.baseName().toInt(&ok); - if (!ok || !procId) - continue; - - if (findParentProcess(procId) == parentId) - return procId; - } - - return -1; -} - bool Debugger::Internal::interruptProcess(int pID) { int procId = pID; @@ -179,11 +90,4 @@ bool Debugger::Internal::interruptProcess(int pID) return false; } -bool Debugger::Internal::interruptChildProcess(Q_PID parentPID) -{ - int procId = findChildProcess(parentPID); - //qDebug() << "INTERRUPTING PROCESS" << procId; - return interruptProcess(procId); -} - #endif // defined(Q_OS_LINUX) || defined(Q_OS_MAC) |