From bf8509d37c263c602d84911b8e3624433139f908 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Sun, 14 May 2006 18:08:43 +0200 Subject: [PATCH] winedbg: Fixed regression for command 'bt all'. Don't print 'process has terminated' message when detaching from a process (or backtracing it). --- programs/winedbg/stack.c | 9 ++++++++- programs/winedbg/tgt_active.c | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/programs/winedbg/stack.c b/programs/winedbg/stack.c index a6a37d13741..72e140ce29c 100644 --- a/programs/winedbg/stack.c +++ b/programs/winedbg/stack.c @@ -313,7 +313,11 @@ static void backtrace_tid(struct dbg_process* pcs, DWORD tid) dbg_printf("Can't get context for thread 0x%lx in current process\n", tid); } - else backtrace(); + else + { + stack_fetch_frames(); + backtrace(); + } ResumeThread(dbg_curr_thread->handle); } else dbg_printf("Can't suspend thread 0x%lx in current process\n", tid); @@ -331,6 +335,7 @@ static void backtrace_tid(struct dbg_process* pcs, DWORD tid) */ static void backtrace_all(void) { + struct dbg_process* process = dbg_curr_process; THREADENTRY32 entry; HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); @@ -370,6 +375,8 @@ static void backtrace_all(void) dbg_curr_process->process_io->close_process(dbg_curr_process, FALSE); } CloseHandle(snapshot); + dbg_curr_process = process; + dbg_curr_pid = process ? process->pid : 0; } void stack_backtrace(DWORD tid) diff --git a/programs/winedbg/tgt_active.c b/programs/winedbg/tgt_active.c index cdd50ad36f5..ea7f22bdd81 100644 --- a/programs/winedbg/tgt_active.c +++ b/programs/winedbg/tgt_active.c @@ -490,6 +490,7 @@ static unsigned dbg_handle_debug_event(DEBUG_EVENT* de) break; } tgt_process_active_close_process(dbg_curr_process, FALSE); + dbg_printf("Process of pid=0x%08lx has terminated\n", de->dwProcessId); break; case CREATE_THREAD_DEBUG_EVENT: @@ -917,7 +918,6 @@ static BOOL tgt_process_active_close_process(struct dbg_process* pcs, BOOL kill) if (!kill && !DebugActiveProcessStop(dbg_curr_pid)) return FALSE; } SymCleanup(pcs->handle); - dbg_printf("Process of pid=0x%08lx has terminated\n", pcs->pid); dbg_del_process(pcs); return TRUE;