winedbg: main_loop.

- split dbg_main_loop in two parts (one for finishing the debuggee
  attachment, the second one really for handling the main loop)
- removed now longer needed dbg_main_loop
This commit is contained in:
Eric Pouech 2006-03-01 21:05:28 +01:00 committed by Alexandre Julliard
parent d3a5921e8e
commit f29d084c37
3 changed files with 19 additions and 22 deletions

View File

@ -375,8 +375,6 @@ extern void dbg_wait_next_exception(DWORD cont, int count, int mode)
extern enum dbg_start dbg_active_attach(int argc, char* argv[]); extern enum dbg_start dbg_active_attach(int argc, char* argv[]);
extern enum dbg_start dbg_active_launch(int argc, char* argv[]); extern enum dbg_start dbg_active_launch(int argc, char* argv[]);
extern enum dbg_start dbg_active_auto(int argc, char* argv[]); extern enum dbg_start dbg_active_auto(int argc, char* argv[]);
/* temporary for tgt_active.c */
extern unsigned dbg_main_loop(HANDLE);
/* tgt_minidump.c */ /* tgt_minidump.c */
extern void minidump_write(const char*, const EXCEPTION_RECORD*); extern void minidump_write(const char*, const EXCEPTION_RECORD*);

View File

@ -644,7 +644,7 @@ void dbg_wait_next_exception(DWORD cont, int count, int mode)
dbg_curr_thread->exec_count); dbg_curr_thread->exec_count);
} }
/*static*/ unsigned dbg_main_loop(HANDLE hFile) static void dbg_wait_for_first_exception(void)
{ {
DEBUG_EVENT de; DEBUG_EVENT de;
@ -656,10 +656,6 @@ void dbg_wait_next_exception(DWORD cont, int count, int mode)
{ {
if (dbg_handle_debug_event(&de)) break; if (dbg_handle_debug_event(&de)) break;
} }
dbg_interactiveP = TRUE;
parser_handle(hFile);
return 0;
} }
static unsigned dbg_start_debuggee(LPSTR cmdLine) static unsigned dbg_start_debuggee(LPSTR cmdLine)
@ -703,6 +699,7 @@ static unsigned dbg_start_debuggee(LPSTR cmdLine)
} }
dbg_curr_pid = info.dwProcessId; dbg_curr_pid = info.dwProcessId;
if (!(dbg_curr_process = dbg_add_process(dbg_curr_pid, 0))) return FALSE; if (!(dbg_curr_process = dbg_add_process(dbg_curr_pid, 0))) return FALSE;
dbg_wait_for_first_exception();
return TRUE; return TRUE;
} }
@ -754,17 +751,12 @@ enum dbg_start dbg_active_attach(int argc, char* argv[])
/* try the form <myself> pid */ /* try the form <myself> pid */
if (argc == 1 && str2int(argv[0], &pid) && pid != 0) if (argc == 1 && str2int(argv[0], &pid) && pid != 0)
{ {
if (dbg_attach_debuggee(pid, FALSE, FALSE)) if (!dbg_attach_debuggee(pid, FALSE, FALSE))
{ return start_error_init;
dbg_curr_pid = pid;
return start_ok;
}
return start_error_init;
} }
/* try the form <myself> pid evt (Win32 JIT debugger) */ /* try the form <myself> pid evt (Win32 JIT debugger) */
if (argc == 2 && str2int(argv[0], &pid) && pid != 0 && else if (argc == 2 && str2int(argv[0], &pid) && pid != 0 &&
str2int(argv[1], &evt) && evt != 0) str2int(argv[1], &evt) && evt != 0)
{ {
if (!dbg_attach_debuggee(pid, TRUE, FALSE)) if (!dbg_attach_debuggee(pid, TRUE, FALSE))
{ {
@ -778,10 +770,12 @@ enum dbg_start dbg_active_attach(int argc, char* argv[])
return start_error_init; return start_error_init;
} }
CloseHandle((HANDLE)evt); CloseHandle((HANDLE)evt);
dbg_curr_pid = pid;
return start_ok;
} }
return start_error_parse; else return start_error_parse;
dbg_curr_pid = pid;
dbg_wait_for_first_exception();
return start_ok;
} }
/****************************************************************** /******************************************************************
@ -895,7 +889,10 @@ enum dbg_start dbg_active_auto(int argc, char* argv[])
} }
else return start_error_parse; else return start_error_parse;
if (hFile == INVALID_HANDLE_VALUE) return start_error_parse; if (hFile == INVALID_HANDLE_VALUE) return start_error_parse;
dbg_main_loop(hFile);
dbg_interactiveP = TRUE;
parser_handle(hFile);
return start_ok; return start_ok;
} }

View File

@ -550,11 +550,13 @@ int main(int argc, char** argv)
case start_error_init: return -1; case start_error_init: return -1;
} }
retv = dbg_main_loop(hFile); dbg_interactiveP = TRUE;
parser_handle(hFile);
while (dbg_process_list) while (dbg_process_list)
dbg_process_list->process_io->close_process(dbg_process_list, TRUE); dbg_process_list->process_io->close_process(dbg_process_list, TRUE);
dbg_save_internal_vars(); dbg_save_internal_vars();
return retv; return 0;
} }