Commit f8d3c2b2 authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

winedbg: No longer hide current WineDbg process from 'info proc'.

We used to hide current WineDbg instance when displaying processes' list (command 'info proc'). This can potentially generate some "dangling" processes in the hierarchy (related to this WineDbg instance): - conhost.exe - start.exe (when launched from unix shell without full path to winedbg.exe) Also, print a more comprehensive error message when trying to attach to itself (now that debugger's PID is more easily available). Signed-off-by: 's avatarEric Pouech <eric.pouech@gmail.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent a354bb18
......@@ -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));
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment