diff --git a/programs/winedbg/info.c b/programs/winedbg/info.c index bb933aeb455..ae0fd90e938 100644 --- a/programs/winedbg/info.c +++ b/programs/winedbg/info.c @@ -498,14 +498,18 @@ static unsigned get_parent(const struct dump_proc* dp, unsigned idx) static void dump_proc_info(const struct dump_proc* dp, unsigned idx, unsigned depth) { struct dump_proc_entry* dpe; + char info; for ( ; idx != -1; idx = dp->entries[idx].sibling) { assert(idx < dp->count); dpe = &dp->entries[idx]; - dbg_printf("%c%08lx %-8ld ", - (dpe->proc.th32ProcessID == (dbg_curr_process ? - dbg_curr_process->pid : 0)) ? '>' : ' ', - dpe->proc.th32ProcessID, dpe->proc.cntThreads); + if (dbg_curr_process && dpe->proc.th32ProcessID == dbg_curr_process->pid) + info = '>'; + else if (dpe->proc.th32ProcessID == GetCurrentProcessId()) + info = '='; + else + info = ' '; + dbg_printf("%c%08lx %-8ld ", info, dpe->proc.th32ProcessID, dpe->proc.cntThreads); if (depth) { unsigned i; @@ -537,11 +541,10 @@ void info_win32_processes(void) dp.entries[dp.count].proc.dwSize = sizeof(dp.entries[dp.count].proc); ok = Process32First(snap, &dp.entries[dp.count].proc); - /* fetch all process information into dp (skipping this debugger) */ + /* fetch all process information into dp */ while (ok) { - if (dp.entries[dp.count].proc.th32ProcessID != GetCurrentProcessId()) - dp.entries[dp.count++].children = -1; + dp.entries[dp.count++].children = -1; if (dp.count >= dp.alloc) { dp.entries = HeapReAlloc(GetProcessHeap(), 0, dp.entries, sizeof(*dp.entries) * (dp.alloc *= 2)); diff --git a/programs/winedbg/tgt_active.c b/programs/winedbg/tgt_active.c index c17a6f38290..9e11de69bc9 100644 --- a/programs/winedbg/tgt_active.c +++ b/programs/winedbg/tgt_active.c @@ -70,9 +70,14 @@ static unsigned dbg_handle_debug_event(DEBUG_EVENT* de); */ BOOL dbg_attach_debuggee(DWORD pid) { + if (pid == GetCurrentProcessId()) + { + dbg_printf("WineDbg can't debug its own process. Please use another process ID.\n"); + return FALSE; + } if (!(dbg_curr_process = dbg_add_process(&be_process_active_io, pid, 0))) return FALSE; - if (!DebugActiveProcess(pid)) + if (!DebugActiveProcess(pid)) { dbg_printf("Can't attach process %04lx: error %lu\n", pid, GetLastError()); dbg_del_process(dbg_curr_process);