Commit 893d7524 authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

winedbg: Auto mode.

- rewrite auto mode startup - move part of auto handling to tgt_active.c
parent a67f8e86
...@@ -372,8 +372,9 @@ extern void dbg_run_debuggee(const char* args); ...@@ -372,8 +372,9 @@ extern void dbg_run_debuggee(const char* args);
extern void dbg_wait_next_exception(DWORD cont, int count, int mode); 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[]);
/* temporary for tgt_active.c */ /* temporary for tgt_active.c */
extern enum dbg_action_mode {none_mode = 0, winedbg_mode, automatic_mode} dbg_action_mode; extern enum dbg_action_mode {winedbg_mode, automatic_mode} dbg_action_mode;
extern unsigned dbg_main_loop(HANDLE); extern unsigned dbg_main_loop(HANDLE);
/* tgt_minidump.c */ /* tgt_minidump.c */
......
...@@ -872,3 +872,15 @@ enum dbg_start dbg_active_launch(int argc, char* argv[]) ...@@ -872,3 +872,15 @@ enum dbg_start dbg_active_launch(int argc, char* argv[])
dbg_last_cmd_line = cmd_line; dbg_last_cmd_line = cmd_line;
return start_ok; return start_ok;
} }
/******************************************************************
* dbg_active_auto
*
* Starts (<pid> or <pid> <evt>) in automatic mode
*/
enum dbg_start dbg_active_auto(int argc, char* argv[])
{
argc--; argv++;
dbg_action_mode = automatic_mode;
return dbg_active_attach(argc, argv);
}
...@@ -464,6 +464,7 @@ int main(int argc, char** argv) ...@@ -464,6 +464,7 @@ int main(int argc, char** argv)
{ {
int retv = 0; int retv = 0;
HANDLE hFile = INVALID_HANDLE_VALUE; HANDLE hFile = INVALID_HANDLE_VALUE;
enum dbg_start ds;
#ifdef __i386__ #ifdef __i386__
be_cpu = &be_i386; be_cpu = &be_i386;
...@@ -489,7 +490,21 @@ int main(int argc, char** argv) ...@@ -489,7 +490,21 @@ int main(int argc, char** argv)
if (retv == -1) dbg_winedbg_usage(); if (retv == -1) dbg_winedbg_usage();
return retv; return retv;
} }
dbg_init_console();
dbg_action_mode = winedbg_mode;
SymSetOptions((SymGetOptions() & ~(SYMOPT_UNDNAME)) |
SYMOPT_LOAD_LINES | SYMOPT_DEFERRED_LOADS | SYMOPT_AUTO_PUBLICS);
if (argc && !strcmp(argv[0], "--auto"))
{
/* force some internal variables */
DBG_IVAR(BreakOnDllLoad) = 0;
dbg_houtput = GetStdHandle(STD_ERROR_HANDLE);
ds = dbg_active_auto(argc, argv);
}
else
{
/* parse options */ /* parse options */
while (argc > 0 && argv[0][0] == '-') while (argc > 0 && argv[0][0] == '-')
{ {
...@@ -528,32 +543,21 @@ int main(int argc, char** argv) ...@@ -528,32 +543,21 @@ int main(int argc, char** argv)
argc--; argv++; argc--; argv++;
continue; continue;
} }
if (!strcmp(argv[0], "--auto"))
{
if (dbg_action_mode != none_mode) return dbg_winedbg_usage();
dbg_action_mode = automatic_mode;
/* force some internal variables */
DBG_IVAR(BreakOnDllLoad) = 0;
argc--; argv++;
dbg_houtput = GetStdHandle(STD_ERROR_HANDLE);
continue;
}
return dbg_winedbg_usage(); return dbg_winedbg_usage();
} }
if (!argc) ds = start_ok;
if (dbg_action_mode == none_mode) dbg_action_mode = winedbg_mode; else if ((ds = dbg_active_attach(argc, argv)) == start_error_parse)
if (!argc || dbg_active_attach(argc, argv) == start_ok || ds = dbg_active_launch(argc, argv);
dbg_active_launch(argc, argv) == start_ok) }
switch (ds)
{ {
dbg_init_console(); case start_ok: break;
case start_error_parse: return dbg_winedbg_usage();
SymSetOptions((SymGetOptions() & ~(SYMOPT_UNDNAME)) | case start_error_init: return -1;
SYMOPT_LOAD_LINES | SYMOPT_DEFERRED_LOADS | SYMOPT_AUTO_PUBLICS); }
retv = dbg_main_loop(hFile); retv = dbg_main_loop(hFile);
/* don't save modified variables in auto mode */ /* don't save modified variables in auto mode */
if (dbg_action_mode != automatic_mode) dbg_save_internal_vars(); if (dbg_action_mode != automatic_mode) dbg_save_internal_vars();
}
return retv; return retv;
} }
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