- get rid of winedbg internal channels for output

- move all standard (old MESG channel) output to stdout
- move all other outputs (TRACE, WARN...) to a new wine debugging
  channel (winedbg)
- replaced quite a few #ifdef:ed out output to new channels (mainly in
  symbol management area...)
- added a new maintenance commands to ease up debugging
- updated documentation accordingly
This commit is contained in:
Eric Pouech 2003-12-15 19:53:08 +00:00 committed by Alexandre Julliard
parent 6bbba607c9
commit 48f97983d7
21 changed files with 725 additions and 817 deletions

View File

@ -1146,66 +1146,6 @@ set $BreakAllThreadsStartup = 1
</variablelist>
</sect3>
<sect3>
<title>Output handling</title>
<variablelist>
<varlistentry>
<term><varname>ConChannelMask</varname></term>
<listitem>
<para>
Mask of active debugger output channels on console
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>StdChannelMask</varname></term>
<listitem>
<para>
Mask of active debugger output channels on <filename>stderr</filename>
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
Those last 2 variables are jointly used in two generic ways:
</para>
<orderedlist>
<listitem>
<para>
default
</para>
<programlisting>
ConChannelMask = DBG_CHN_MESG (1)
StdChannelMask = 0
</programlisting>
<para>
In this case, all input/output goes into the
debugger's console (either the standard unix console
if winedbg is started from the command line, or a
specific windowed-console if the debugger is started
upon an exception in a running program. All debug
messages <function>TRACE</function>,
<function>WARN</function>... still goes to tty where
wine is run from).
</para>
</listitem>
<listitem>
<para>
To have all input/output go into the tty where Wine
was started from (to be used in a X11-free
environment)
</para>
<screen>
ConChannelMask = 0
StdChannelMask = DBG_CHN_MESG (1)
</screen>
</listitem>
</orderedlist>
</sect3>
<sect3>
<title>Context information</title>

View File

@ -22,6 +22,9 @@
#include "config.h"
#include "debugger.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
#ifdef __i386__
#define DR7_CONTROL_SHIFT 16
@ -197,7 +200,7 @@ void DEBUG_SetBreakpoints( BOOL set )
if (!DEBUG_WRITE_MEM( (void*)DEBUG_ToLinear(&breakpoints[i].addr),
&ch, sizeof(ch) ))
{
DEBUG_Printf(DBG_CHN_MESG, "Invalid address for breakpoint %d, disabling it\n", i);
DEBUG_Printf("Invalid address for breakpoint %d, disabling it\n", i);
breakpoints[i].enabled = FALSE;
}
#endif
@ -304,7 +307,7 @@ static int DEBUG_InitXPoint(int type, const DBG_ADDR* addr)
}
}
DEBUG_Printf( DBG_CHN_MESG, "Too many breakpoints. Please delete some.\n" );
DEBUG_Printf("Too many breakpoints. Please delete some.\n");
return -1;
}
@ -350,7 +353,7 @@ BOOL DEBUG_AddBreakpoint( const DBG_VALUE *value, BOOL (*func)(void), BOOL verbo
if (!DEBUG_READ_MEM((void*)DEBUG_ToLinear( &value->addr ), &ch, sizeof(ch)))
{
if (verbose)
DEBUG_Printf( DBG_CHN_MESG, "Invalid address, can't set breakpoint\n");
DEBUG_Printf("Invalid address, can't set breakpoint\n");
return FALSE;
}
@ -360,10 +363,10 @@ BOOL DEBUG_AddBreakpoint( const DBG_VALUE *value, BOOL (*func)(void), BOOL verbo
breakpoints[num].u.b.opcode = ch;
breakpoints[num].u.b.func = func;
DEBUG_Printf( DBG_CHN_MESG, "Breakpoint %d at ", num );
DEBUG_Printf("Breakpoint %d at ", num);
DEBUG_PrintAddress( &breakpoints[num].addr, breakpoints[num].is32 ? MODE_32 : MODE_16,
TRUE );
DEBUG_Printf( DBG_CHN_MESG, "\n" );
DEBUG_Printf("\n");
return FALSE;
}
@ -395,11 +398,11 @@ BOOL DEBUG_AddBreakpointFromValue( const DBG_VALUE *_value )
{
if (!DBG_IVAR(CanDeferOnBPByAddr))
{
DEBUG_Printf( DBG_CHN_MESG, "Invalid address, can't set breakpoint\n"
"You can turn on deferring breakpoints by address by setting $CanDeferOnBPByAddr to 1\n");
DEBUG_Printf("Invalid address, can't set breakpoint\n"
"You can turn on deferring breakpoints by address by setting $CanDeferOnBPByAddr to 1\n");
return FALSE;
}
DEBUG_Printf(DBG_CHN_MESG, "Unable to add breakpoint, will check again any time a new DLL is loaded\n");
DEBUG_Printf("Unable to add breakpoint, will check again any time a new DLL is loaded\n");
DEBUG_CurrProcess->delayed_bp = DBG_realloc(DEBUG_CurrProcess->delayed_bp,
sizeof(DBG_DELAYED_BP) * ++DEBUG_CurrProcess->num_delayed_bp);
@ -432,7 +435,7 @@ void DEBUG_AddBreakpointFromId(const char *name, int lineno)
return;
}
DEBUG_Printf(DBG_CHN_MESG, "Unable to add breakpoint, will check again when a new DLL is loaded\n");
DEBUG_Printf("Unable to add breakpoint, will check again when a new DLL is loaded\n");
for (i = 0; i < DEBUG_CurrProcess->num_delayed_bp; i++)
{
if (DEBUG_CurrProcess->delayed_bp[i].is_symbol &&
@ -466,7 +469,7 @@ void DEBUG_AddBreakpointFromLineno(int lineno)
DEBUG_FindNearestSymbol(&value.addr, TRUE, &nh, 0, NULL);
if (nh == NULL)
{
DEBUG_Printf(DBG_CHN_MESG, "Unable to add breakpoint\n");
DEBUG_Printf("Unable to add breakpoint\n");
return;
}
DEBUG_GetLineNumberAddr(nh, lineno, &value.addr, TRUE);
@ -497,15 +500,15 @@ void DEBUG_CheckDelayedBP(void)
}
else
value = dbp[i].u.value;
DEBUG_Printf(DBG_CHN_MESG, "trying to add delayed %s-bp\n", dbp[i].is_symbol ? "S" : "A");
WINE_TRACE("trying to add delayed %s-bp\n", dbp[i].is_symbol ? "S" : "A");
if (!dbp[i].is_symbol)
DEBUG_Printf(DBG_CHN_MESG, "\t%04x %04lx:%08lx\n",
dbp[i].u.value.cookie,
dbp[i].u.value.addr.seg,
dbp[i].u.value.addr.off);
WINE_TRACE("\t%04x %04lx:%08lx\n",
dbp[i].u.value.cookie,
dbp[i].u.value.addr.seg,
dbp[i].u.value.addr.off);
else
DEBUG_Printf(DBG_CHN_MESG, "\t'%s' @ %d\n",
dbp[i].u.symbol.name, dbp[i].u.symbol.lineno);
WINE_TRACE("\t'%s' @ %d\n",
dbp[i].u.symbol.name, dbp[i].u.symbol.lineno);
if (DEBUG_AddBreakpoint(&value, NULL, FALSE))
memmove(&dbp[i], &dbp[i+1], (--DEBUG_CurrProcess->num_delayed_bp - i) * sizeof(*dbp));
@ -554,7 +557,7 @@ void DEBUG_AddWatchpoint( const DBG_VALUE *_value, BOOL is_write )
for (reg = 0; reg < 4 && (mask & (1 << reg)); reg++);
if (reg == 4)
{
DEBUG_Printf(DBG_CHN_MESG, "All i386 hardware watchpoints have been set. Delete some\n");
DEBUG_Printf("All i386 hardware watchpoints have been set. Delete some\n");
return;
}
#endif
@ -568,7 +571,7 @@ void DEBUG_AddWatchpoint( const DBG_VALUE *_value, BOOL is_write )
if (!DEBUG_GetWatchedValue( num, &breakpoints[num].u.w.oldval))
{
DEBUG_Printf(DBG_CHN_MESG, "Bad address. Watchpoint not set\n");
DEBUG_Printf("Bad address. Watchpoint not set\n");
breakpoints[num].refcount = 0;
}
else
@ -576,9 +579,9 @@ void DEBUG_AddWatchpoint( const DBG_VALUE *_value, BOOL is_write )
breakpoints[num].u.w.rw = (is_write) ? TRUE : FALSE;
breakpoints[reg].u.w.reg = reg;
DEBUG_Printf( DBG_CHN_MESG, "Watchpoint %d at ", num );
DEBUG_Printf("Watchpoint %d at ", num);
DEBUG_PrintAddress( &breakpoints[num].addr, breakpoints[num].is32 ? MODE_32 : MODE_16, TRUE );
DEBUG_Printf( DBG_CHN_MESG, "\n" );
DEBUG_Printf("\n");
}
}
@ -597,7 +600,7 @@ void DEBUG_AddWatchpointFromId(const char *name)
DEBUG_AddWatchpoint( &value, 1 );
break;
case gsv_unknown:
DEBUG_Printf(DBG_CHN_MESG, "Unable to add watchpoint\n");
DEBUG_Printf("Unable to add watchpoint\n");
break;
case gsv_aborted: /* user aborted symbol lookup */
break;
@ -613,14 +616,14 @@ void DEBUG_DelBreakpoint( int num )
{
if ((num <= 0) || (num >= next_bp) || breakpoints[num].refcount == 0)
{
DEBUG_Printf( DBG_CHN_MESG, "Invalid breakpoint number %d\n", num );
DEBUG_Printf("Invalid breakpoint number %d\n", num);
return;
}
if (--breakpoints[num].refcount > 0)
return;
if( breakpoints[num].condition != NULL )
if (breakpoints[num].condition != NULL)
{
DEBUG_FreeExpr(breakpoints[num].condition);
breakpoints[num].condition = NULL;
@ -640,7 +643,7 @@ void DEBUG_EnableBreakpoint( int num, BOOL enable )
{
if ((num <= 0) || (num >= next_bp) || breakpoints[num].refcount == 0)
{
DEBUG_Printf( DBG_CHN_MESG, "Invalid breakpoint number %d\n", num );
DEBUG_Printf("Invalid breakpoint number %d\n", num);
return;
}
breakpoints[num].enabled = (enable) ? TRUE : FALSE;
@ -728,40 +731,40 @@ void DEBUG_InfoBreakpoints(void)
{
int i;
DEBUG_Printf( DBG_CHN_MESG, "Breakpoints:\n" );
DEBUG_Printf("Breakpoints:\n");
for (i = 1; i < next_bp; i++)
{
if (breakpoints[i].refcount && breakpoints[i].type == DBG_BREAK)
{
DEBUG_Printf( DBG_CHN_MESG, "%d: %c ", i, breakpoints[i].enabled ? 'y' : 'n');
DEBUG_Printf("%d: %c ", i, breakpoints[i].enabled ? 'y' : 'n');
DEBUG_PrintAddress( &breakpoints[i].addr,
breakpoints[i].is32 ? MODE_32 : MODE_16, TRUE);
DEBUG_Printf( DBG_CHN_MESG, " (%u)\n", breakpoints[i].refcount );
DEBUG_Printf(" (%u)\n", breakpoints[i].refcount );
if( breakpoints[i].condition != NULL )
{
DEBUG_Printf(DBG_CHN_MESG, "\t\tstop when ");
DEBUG_Printf("\t\tstop when ");
DEBUG_DisplayExpr(breakpoints[i].condition);
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
}
}
}
DEBUG_Printf( DBG_CHN_MESG, "Watchpoints:\n" );
DEBUG_Printf("Watchpoints:\n");
for (i = 1; i < next_bp; i++)
{
if (breakpoints[i].refcount && breakpoints[i].type == DBG_WATCH)
{
DEBUG_Printf( DBG_CHN_MESG, "%d: %c ", i, breakpoints[i].enabled ? 'y' : 'n');
DEBUG_Printf("%d: %c ", i, breakpoints[i].enabled ? 'y' : 'n');
DEBUG_PrintAddress( &breakpoints[i].addr,
breakpoints[i].is32 ? MODE_32 : MODE_16, TRUE);
DEBUG_Printf( DBG_CHN_MESG, " on %d byte%s (%c)\n",
DEBUG_Printf(" on %d byte%s (%c)\n",
breakpoints[i].u.w.len + 1,
breakpoints[i].u.w.len > 0 ? "s" : "",
breakpoints[i].u.w.rw ? 'W' : 'R');
if( breakpoints[i].condition != NULL )
{
DEBUG_Printf(DBG_CHN_MESG, "\t\tstop when ");
DEBUG_Printf("\t\tstop when ");
DEBUG_DisplayExpr(breakpoints[i].condition);
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
}
}
}
@ -784,9 +787,9 @@ static BOOL DEBUG_ShallBreak( int bpnum )
/*
* Something wrong - unable to evaluate this expression.
*/
DEBUG_Printf(DBG_CHN_MESG, "Unable to evaluate expression ");
DEBUG_Printf("Unable to evaluate expression ");
DEBUG_DisplayExpr(breakpoints[bpnum].condition);
DEBUG_Printf(DBG_CHN_MESG, "\nTurning off condition\n");
DEBUG_Printf("\nTurning off condition\n");
DEBUG_AddBPCondition(bpnum, NULL);
}
else if( !DEBUG_GetExprValue( &value, NULL) )
@ -834,10 +837,10 @@ BOOL DEBUG_ShouldContinue( DBG_ADDR *addr, DWORD code, int * count )
{
if (!DEBUG_ShallBreak(bpnum)) return TRUE;
DEBUG_Printf( DBG_CHN_MESG, "Stopped on breakpoint %d at ", bpnum );
DEBUG_Printf("Stopped on breakpoint %d at ", bpnum);
syminfo = DEBUG_PrintAddress( &breakpoints[bpnum].addr,
breakpoints[bpnum].is32 ? MODE_32 : MODE_16, TRUE );
DEBUG_Printf( DBG_CHN_MESG, "\n" );
DEBUG_Printf("\n");
if( syminfo.list.sourcefile != NULL )
DEBUG_List(&syminfo.list, NULL, 0);
@ -858,10 +861,10 @@ BOOL DEBUG_ShouldContinue( DBG_ADDR *addr, DWORD code, int * count )
if (!DEBUG_ShallBreak(wpnum)) return TRUE;
addr_mode = DEBUG_GetSelectorType( addr->seg );
DEBUG_Printf(DBG_CHN_MESG, "Stopped on watchpoint %d at ", wpnum);
DEBUG_Printf("Stopped on watchpoint %d at ", wpnum);
syminfo = DEBUG_PrintAddress( addr, addr_mode, TRUE );
DEBUG_Printf(DBG_CHN_MESG, " values: old=%lu new=%lu\n",
DEBUG_Printf(" values: old=%lu new=%lu\n",
oldval, breakpoints[wpnum].u.w.oldval);
if (syminfo.list.sourcefile != NULL)
DEBUG_List(&syminfo.list, NULL, 0);
@ -980,7 +983,7 @@ void DEBUG_RestartExecution( int count )
{
if( mode == EXEC_CONT && count > 1 )
{
DEBUG_Printf(DBG_CHN_MESG, "Not stopped at any breakpoint; argument ignored.\n");
DEBUG_Printf("Not stopped at any breakpoint; argument ignored.\n");
}
}
@ -1011,19 +1014,15 @@ void DEBUG_RestartExecution( int count )
if( ((mode == EXEC_STEP_OVER) || (mode == EXEC_STEPI_OVER))
&& status == FUNC_IS_TRAMPOLINE )
{
#if 0
DEBUG_Printf(DBG_CHN_MESG, "Not stepping into trampoline at %x (no lines)\n",
addr2.off);
#endif
WINE_TRACE("Not stepping into trampoline at %lx (no lines)\n",
addr2.off);
mode = EXEC_STEP_OVER_TRAMPOLINE;
}
if( mode == EXEC_STEP_INSTR && status == FUNC_HAS_NO_LINES )
{
#if 0
DEBUG_Printf(DBG_CHN_MESG, "Not stepping into function at %x (no lines)\n",
addr2.off);
#endif
WINE_TRACE("Not stepping into function at %lx (no lines)\n",
addr2.off);
mode = EXEC_STEP_OVER;
}
}
@ -1033,8 +1032,8 @@ void DEBUG_RestartExecution( int count )
{
if( DEBUG_CheckLinenoStatus(&addr) == FUNC_HAS_NO_LINES )
{
DEBUG_Printf(DBG_CHN_MESG, "Single stepping until exit from function, \n");
DEBUG_Printf(DBG_CHN_MESG, "which has no line number information.\n");
DEBUG_Printf("Single stepping until exit from function, \n"
"which has no line number information.\n");
ret_mode = mode = EXEC_FINISH;
}
@ -1109,7 +1108,7 @@ DEBUG_AddBPCondition(int num, struct expr * exp)
{
if ((num <= 0) || (num >= next_bp) || !breakpoints[num].refcount)
{
DEBUG_Printf( DBG_CHN_MESG, "Invalid breakpoint number %d\n", num );
DEBUG_Printf("Invalid breakpoint number %d\n", num);
return FALSE;
}

View File

@ -1070,7 +1070,7 @@ static unsigned int db_get_task_value( const DBG_ADDR *addr,
char buffer[4];
if (size != 1 && size != 2 && size != 4) {
DEBUG_Printf(DBG_CHN_MESG, "Illegal size specified\n");
DEBUG_Printf("Illegal size specified\n");
} else {
DEBUG_READ_MEM((void*)DEBUG_ToLinear( addr ), buffer, size);
@ -1194,21 +1194,21 @@ static void db_task_printsym(unsigned int addr, int size)
void db_print_address(const char *seg, int size, struct i_addr *addrp, int byref)
{
if (addrp->is_reg) {
DEBUG_Printf(DBG_CHN_MESG,"%s", db_reg[size][addrp->disp]);
DEBUG_Printf("%s", db_reg[size][addrp->disp]);
return;
}
if (seg) {
DEBUG_Printf(DBG_CHN_MESG,"%s:", seg);
DEBUG_Printf("%s:", seg);
}
if (addrp->base != 0 || addrp->index != 0) {
DEBUG_Printf(DBG_CHN_MESG,"0x%x(", addrp->disp);
DEBUG_Printf("0x%x(", addrp->disp);
if (addrp->base)
DEBUG_Printf(DBG_CHN_MESG,"%s", addrp->base);
DEBUG_Printf("%s", addrp->base);
if (addrp->index)
DEBUG_Printf(DBG_CHN_MESG,",%s,%d", addrp->index, 1<<addrp->ss);
DEBUG_Printf(DBG_CHN_MESG,")");
DEBUG_Printf(",%s,%d", addrp->index, 1<<addrp->ss);
DEBUG_Printf(")");
}
else {
@ -1218,11 +1218,11 @@ void db_print_address(const char *seg, int size, struct i_addr *addrp, int byref
void* a1;
void* a2;
DEBUG_Printf(DBG_CHN_MESG,"0x%x -> ", addrp->disp);
DEBUG_Printf("0x%x -> ", addrp->disp);
if (!DEBUG_READ_MEM((void*)addrp->disp, &a1, sizeof(a1))) {
DEBUG_Printf(DBG_CHN_MESG, "(invalid source)");
DEBUG_Printf("(invalid source)");
} else if (!DEBUG_READ_MEM(a1, &a2, sizeof(a2))) {
DEBUG_Printf(DBG_CHN_MESG, "(invalid destination)");
DEBUG_Printf("(invalid destination)");
} else {
db_task_printsym((unsigned long)a1, 0);
}
@ -1254,34 +1254,22 @@ void db_disasm_esc( DBG_ADDR *addr, int inst, int short_addr,
fp = &db_Esc_inst[inst - 0xd8][f_reg(regmodrm)];
mod = f_mod(regmodrm);
if (mod != 3) {
const char* p;
/*
* Normal address modes.
*/
db_read_address( addr, short_addr, regmodrm, &address);
DEBUG_Printf(DBG_CHN_MESG,fp->f_name);
DEBUG_Printf(fp->f_name);
switch(fp->f_size) {
case SNGL:
DEBUG_Printf(DBG_CHN_MESG,"s");
break;
case DBLR:
DEBUG_Printf(DBG_CHN_MESG,"l");
break;
case EXTR:
DEBUG_Printf(DBG_CHN_MESG,"t");
break;
case WORD:
DEBUG_Printf(DBG_CHN_MESG,"s");
break;
case LONG:
DEBUG_Printf(DBG_CHN_MESG,"l");
break;
case QUAD:
DEBUG_Printf(DBG_CHN_MESG,"q");
break;
default:
break;
case SNGL: p = "s"; break;
case DBLR: p = "l"; break;
case EXTR: p = "t"; break;
case WORD: p = "s"; break;
case LONG: p = "l"; break;
case QUAD: p = "q"; break;
default: p = ""; break;
}
DEBUG_Printf(DBG_CHN_MESG,"\t");
DEBUG_Printf("%s\t", p);
db_print_address(seg, BYTE, &address, 0);
}
else {
@ -1291,25 +1279,24 @@ void db_disasm_esc( DBG_ADDR *addr, int inst, int short_addr,
switch (fp->f_rrmode) {
case op2(ST,STI):
name = (fp->f_rrname) ? fp->f_rrname : fp->f_name;
DEBUG_Printf(DBG_CHN_MESG,"%s\t%%st,%%st(%d)",name,f_rm(regmodrm));
DEBUG_Printf("%s\t%%st,%%st(%d)",name,f_rm(regmodrm));
break;
case op2(STI,ST):
name = (fp->f_rrname) ? fp->f_rrname : fp->f_name;
DEBUG_Printf(DBG_CHN_MESG,"%s\t%%st(%d),%%st",name, f_rm(regmodrm));
DEBUG_Printf("%s\t%%st(%d),%%st",name, f_rm(regmodrm));
break;
case op1(STI):
name = (fp->f_rrname) ? fp->f_rrname : fp->f_name;
DEBUG_Printf(DBG_CHN_MESG,"%s\t%%st(%d)",name, f_rm(regmodrm));
DEBUG_Printf("%s\t%%st(%d)",name, f_rm(regmodrm));
break;
case op1(X):
DEBUG_Printf(DBG_CHN_MESG,"%s", ((char **)fp->f_rrname)[f_rm(regmodrm)]);
DEBUG_Printf("%s", ((char **)fp->f_rrname)[f_rm(regmodrm)]);
break;
case op1(XA):
DEBUG_Printf(DBG_CHN_MESG,"%s\t%%ax",
((char **)fp->f_rrname)[f_rm(regmodrm)]);
DEBUG_Printf("%s\t%%ax", ((char **)fp->f_rrname)[f_rm(regmodrm)]);
break;
default:
DEBUG_Printf(DBG_CHN_MESG,"<bad instruction>");
DEBUG_Printf("<bad instruction>");
break;
}
}
@ -1349,7 +1336,7 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
case MODE_VM86:
case MODE_16: db_disasm_16 = 1; break;
case MODE_32: db_disasm_16 = 0; break;
default: DEBUG_Printf(DBG_CHN_MESG, "Bad selector %lx\n", addr->seg); return;
default: DEBUG_Printf("Bad selector %lx\n", addr->seg); return;
}
get_value_inc( inst, addr, 1, FALSE );
@ -1399,15 +1386,15 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
break;
case 0xf0:
if( db_display )
DEBUG_Printf(DBG_CHN_MESG,"lock ");
DEBUG_Printf("lock ");
break;
case 0xf2:
if( db_display )
DEBUG_Printf(DBG_CHN_MESG,"repne ");
DEBUG_Printf("repne ");
break;
case 0xf3:
if( db_display )
DEBUG_Printf(DBG_CHN_MESG,"repe "); /* XXX repe VS rep */
DEBUG_Printf("repe "); /* XXX repe VS rep */
break;
default:
prefix = FALSE;
@ -1475,28 +1462,28 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
if( db_display )
{
if (size == WORD)
DEBUG_Printf(DBG_CHN_MESG,i_name);
DEBUG_Printf(i_name);
else
DEBUG_Printf(DBG_CHN_MESG,ip->i_extra);
DEBUG_Printf(ip->i_extra);
}
}
else {
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,i_name);
DEBUG_Printf(i_name);
}
if (i_size != NONE) {
if (i_size == BYTE) {
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"b");
DEBUG_Printf("b");
}
size = BYTE;
}
else if (i_size == WORD) {
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"w");
DEBUG_Printf("w");
}
size = WORD;
}
@ -1504,28 +1491,28 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
{
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"w");
DEBUG_Printf("w");
}
}
else
{
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"l");
DEBUG_Printf("l");
}
}
}
}
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"\t");
DEBUG_Printf("\t");
}
for (first = TRUE;
i_mode != 0;
i_mode >>= 8, first = FALSE)
{
if (!first && db_display)
DEBUG_Printf(DBG_CHN_MESG,",");
DEBUG_Printf(",");
switch (i_mode & 0xFF) {
@ -1539,7 +1526,7 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
case Eind:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"*");
DEBUG_Printf("*");
db_print_address(seg, size, &address, 1);
}
break;
@ -1561,31 +1548,31 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
case R:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%s", db_reg[size][f_reg(regmodrm)]);
DEBUG_Printf("%s", db_reg[size][f_reg(regmodrm)]);
}
break;
case MX:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%mm%d", f_reg(regmodrm));
DEBUG_Printf("%%mm%d", f_reg(regmodrm));
}
break;
case EMX:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%mm%d", f_rm(regmodrm));
DEBUG_Printf("%%mm%d", f_rm(regmodrm));
}
break;
case XMM:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%xmm%d", f_reg(regmodrm));
DEBUG_Printf("%%xmm%d", f_reg(regmodrm));
}
break;
case EXMM:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%xmm%d", f_rm(regmodrm));
DEBUG_Printf("%%xmm%d", f_rm(regmodrm));
}
break;
@ -1593,35 +1580,35 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
case Rw:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%s", db_reg[WORD][f_reg(regmodrm)]);
DEBUG_Printf("%s", db_reg[WORD][f_reg(regmodrm)]);
}
break;
case Ri:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%s", db_reg[size][f_rm(inst)]);
DEBUG_Printf("%s", db_reg[size][f_rm(inst)]);
}
break;
case S:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%s", db_seg_reg[f_reg(regmodrm)]);
DEBUG_Printf("%s", db_seg_reg[f_reg(regmodrm)]);
}
break;
case Si:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%s", db_seg_reg[f_reg(inst)]);
DEBUG_Printf("%s", db_seg_reg[f_reg(inst)]);
}
break;
case A:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%s", db_reg[size][0]); /* acc */
DEBUG_Printf("%s", db_reg[size][0]); /* acc */
}
break;
@ -1629,22 +1616,22 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
if( db_display )
{
if (seg)
DEBUG_Printf(DBG_CHN_MESG,"%s:", seg);
DEBUG_Printf(DBG_CHN_MESG,"(%s)", short_addr ? "%bx" : "%ebx");
DEBUG_Printf("%s:", seg);
DEBUG_Printf("(%s)", short_addr ? "%bx" : "%ebx");
}
break;
case CL:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%cl");
DEBUG_Printf("%%cl");
}
break;
case DX:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%dx");
DEBUG_Printf("%%dx");
}
break;
@ -1652,36 +1639,36 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
if( db_display )
{
if (seg)
DEBUG_Printf(DBG_CHN_MESG,"%s:", seg);
DEBUG_Printf(DBG_CHN_MESG,"(%s)", short_addr ? "%si" : "%esi");
DEBUG_Printf("%s:", seg);
DEBUG_Printf("(%s)", short_addr ? "%si" : "%esi");
}
break;
case DI:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%es:(%s)", short_addr ? "%di" : "%edi");
DEBUG_Printf("%%es:(%s)", short_addr ? "%di" : "%edi");
}
break;
case CR:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%cr%d", f_reg(regmodrm));
DEBUG_Printf("%%cr%d", f_reg(regmodrm));
}
break;
case DR:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%dr%d", f_reg(regmodrm));
DEBUG_Printf("%%dr%d", f_reg(regmodrm));
}
break;
case TR:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"%%tr%d", f_reg(regmodrm));
DEBUG_Printf("%%tr%d", f_reg(regmodrm));
}
break;
@ -1690,7 +1677,7 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
get_value_inc(imm, addr, len, FALSE);/* unsigned */
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"$0x%x", imm);
DEBUG_Printf("$0x%x", imm);
}
break;
@ -1699,7 +1686,7 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
get_value_inc(imm, addr, len, TRUE); /* signed */
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"$%d", imm);
DEBUG_Printf("$%d", imm);
}
break;
@ -1707,7 +1694,7 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
get_value_inc(imm, addr, 1, FALSE); /* unsigned */
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"$0x%x", imm);
DEBUG_Printf("$0x%x", imm);
}
break;
@ -1715,7 +1702,7 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
get_value_inc(imm, addr, 1, TRUE); /* signed */
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"$%d", imm);
DEBUG_Printf("$%d", imm);
}
break;
@ -1723,7 +1710,7 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
get_value_inc(imm, addr, 2, FALSE); /* unsigned */
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"$0x%x", imm);
DEBUG_Printf("$0x%x", imm);
}
break;
@ -1731,7 +1718,7 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
get_value_inc(imm, addr, 4, FALSE);
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"$0x%x", imm);
DEBUG_Printf("$0x%x", imm);
}
break;
@ -1748,7 +1735,7 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
}
if (seg)
DEBUG_Printf(DBG_CHN_MESG,"%s:0x%x",seg, displ);
DEBUG_Printf("%s:0x%x",seg, displ);
else
db_task_printsym(displ, short_addr ? WORD : LONG);
break;
@ -1790,14 +1777,14 @@ void DEBUG_Disasm( DBG_ADDR *addr, int display )
case o1:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"$1");
DEBUG_Printf("$1");
}
break;
case o3:
if( db_display )
{
DEBUG_Printf(DBG_CHN_MESG,"$3");
DEBUG_Printf("$3");
}
break;

View File

@ -60,7 +60,7 @@ int yyerror(const char *);
%token <string> tPATH
%token <string> tIDENTIFIER tSTRING tDEBUGSTR tINTVAR
%token <integer> tNUM tFORMAT
%token tSYMBOLFILE tRUN tATTACH tDETACH tNOPROCESS
%token tSYMBOLFILE tRUN tATTACH tDETACH tNOPROCESS tMAINTENANCE tTYPE
%token tCHAR tSHORT tINT tLONG tFLOAT tDOUBLE tUNSIGNED tSIGNED
%token tSTRUCT tUNION tENUM
@ -152,6 +152,7 @@ command:
| info_command
| walk_command
| run_command
| maintenance_command
| noprocess_state
;
@ -266,9 +267,13 @@ run_command:
| tRUN tSTRING tEOL { DEBUG_Run($2); }
;
maintenance_command:
tMAINTENANCE tTYPE { DEBUG_DumpTypes(); }
;
noprocess_state:
tNOPROCESS tEOL {} /* <CR> shall not barf anything */
| tNOPROCESS tSTRING tEOL { DEBUG_Printf(DBG_CHN_MESG, "No process loaded, cannot execute '%s'\n", $2); }
| tNOPROCESS tSTRING tEOL { DEBUG_Printf("No process loaded, cannot execute '%s'\n", $2); }
;
type_expr:
@ -385,7 +390,7 @@ static void mode_command(int newmode)
{
case 16: DEBUG_CurrThread->dbg_mode = MODE_16; break;
case 32: DEBUG_CurrThread->dbg_mode = MODE_32; break;
default: DEBUG_Printf(DBG_CHN_MESG,"Invalid mode (use 16, 32 or vm86)\n");
default: DEBUG_Printf("Invalid mode (use 16, 32 or vm86)\n");
}
}
@ -398,37 +403,37 @@ static WINE_EXCEPTION_FILTER(wine_dbg_cmd)
{
if (DBG_IVAR(ExtDbgOnInternalException))
DEBUG_ExternalDebugger();
DEBUG_Printf(DBG_CHN_MESG, "\nwine_dbg_cmd: ");
DEBUG_Printf("\nwine_dbg_cmd: ");
switch (GetExceptionCode()) {
case DEBUG_STATUS_INTERNAL_ERROR:
DEBUG_Printf(DBG_CHN_MESG, "WineDbg internal error\n");
DEBUG_Printf("WineDbg internal error\n");
if (DBG_IVAR(ExtDbgOnInternalException))
DEBUG_ExternalDebugger();
break;
case DEBUG_STATUS_NO_SYMBOL:
DEBUG_Printf(DBG_CHN_MESG, "Undefined symbol\n");
DEBUG_Printf("Undefined symbol\n");
break;
case DEBUG_STATUS_DIV_BY_ZERO:
DEBUG_Printf(DBG_CHN_MESG, "Division by zero\n");
DEBUG_Printf("Division by zero\n");
break;
case DEBUG_STATUS_BAD_TYPE:
DEBUG_Printf(DBG_CHN_MESG, "No type or type mismatch\n");
DEBUG_Printf("No type or type mismatch\n");
break;
case DEBUG_STATUS_NO_FIELD:
DEBUG_Printf(DBG_CHN_MESG, "No such field in structure or union\n");
DEBUG_Printf("No such field in structure or union\n");
break;
case DEBUG_STATUS_ABORT:
break;
case CONTROL_C_EXIT:
/* this is generally sent by a ctrl-c when we run winedbg outside of wineconsole */
DEBUG_Printf(DBG_CHN_MESG, "Ctrl-C\n");
DEBUG_Printf("Ctrl-C\n");
/* stop the debuggee, and continue debugger execution, we will be reintered by the
* debug events generated by stopping
*/
DEBUG_InterruptDebuggee();
return EXCEPTION_CONTINUE_EXECUTION;
default:
DEBUG_Printf(DBG_CHN_MESG, "Exception %lx\n", GetExceptionCode());
DEBUG_Printf("Exception %lx\n", GetExceptionCode());
DEBUG_ExternalDebugger();
break;
}
@ -491,6 +496,6 @@ void DEBUG_Parser(LPCSTR filename)
int yyerror(const char* s)
{
DEBUG_Printf(DBG_CHN_MESG, "%s\n", s);
DEBUG_Printf("%s\n", s);
return 0;
}

View File

@ -62,6 +62,7 @@ STRING \"[^\n"]+\"
%s WALK_CMD
%s SHOW_CMD
%s MODE_CMD
%s MAINT_CMD
%s NOCMD
%x ASTRING_EXPECTED
@ -145,6 +146,7 @@ STRING \"[^\n"]+\"
<INITIAL>whatis|whati|what { BEGIN(NOCMD); return tWHATIS; }
<INITIAL,NOPROCESS>run|ru|r { BEGIN(ASTRING_EXPECTED); return tRUN;}
<INITIAL>detach|detac|deta|det { BEGIN(NOCMD); return tDETACH; }
<INITIAL>maintenance|maint { BEGIN(MAINT_CMD); return tMAINTENANCE; }
<NOPROCESS>attach|attac|atta|att { BEGIN(NOCMD); return tATTACH; }
<INFO_CMD>share|shar|sha { return tSHARE; }
<INFO_CMD>locals|local|loca|loc { return tLOCAL; }
@ -156,11 +158,12 @@ STRING \"[^\n"]+\"
<INFO_CMD>registers|regs|reg|re { return tREGS; }
<INFO_CMD>segments|segment|segm|seg|se { return tSEGMENTS; }
<INFO_CMD>stack|stac|sta|st { return tSTACK; }
<INFO_CMD>symbol|sym { BEGIN(ASTRING_EXPECTED); return tSYMBOL; }
<INFO_CMD>symbol|symbo|symb|sym { BEGIN(ASTRING_EXPECTED); return tSYMBOL; }
<WALK_CMD>maps|map { return tMAPS; }
<INFO_CMD,WALK_CMD>window|windo|wind|win|wnd { return tWND; }
<HELP_CMD>info|inf|in { return tINFO; }
<MODE_CMD>vm86 { return tVM86; }
<MAINT_CMD>type { return tTYPE; }
<INITIAL,SHOW_CMD>directories|directorie|directori|director|directo|direct|direc|direc|dir {
BEGIN(PATH_EXPECTED); return tDIR; }
@ -187,7 +190,7 @@ enum { return tENUM; }
<NOPROCESS>. { BEGIN(ASTRING_EXPECTED); yyless(0); return tNOPROCESS;}
<*>. { if (syntax_error == 0) {
syntax_error++;
DEBUG_Printf(DBG_CHN_MESG, "Syntax Error (%s)\n", yytext); }
DEBUG_Printf("Syntax Error (%s)\n", yytext); }
}
%%
@ -241,7 +244,10 @@ static int DEBUG_FetchEntireLine(const char* pfx, char** line, size_t* allo
/* store stuff at the end of last_line */
if (len + nread + 1 > *alloc)
{
*line = HeapReAlloc(GetProcessHeap(), 0, *line, *alloc += nread + 1);
if (*line)
*line = HeapReAlloc(GetProcessHeap(), 0, *line, *alloc += nread + 1);
else
*line = HeapAlloc(GetProcessHeap(), 0, *alloc += nread + 1);
}
strcpy(*line + len, buf_line);
len += nread;

View File

@ -428,8 +428,8 @@ extern enum dbg_mode DEBUG_GetSelectorType( WORD sel );
extern void DEBUG_FixAddress( DBG_ADDR *address, DWORD def );
extern int DEBUG_IsSelectorSystem( WORD sel );
#endif
extern int DEBUG_PrintStringA( int chnl, const DBG_ADDR* address, int len );
extern int DEBUG_PrintStringW( int chnl, const DBG_ADDR* address, int len );
extern int DEBUG_PrintStringA(const DBG_ADDR* address, int len);
extern int DEBUG_PrintStringW(const DBG_ADDR* address, int len);
/* debugger/module.c */
extern int DEBUG_LoadEntryPoints( const char * prefix );
@ -512,22 +512,17 @@ extern const char* DEBUG_GetName(struct datatype * dt);
extern enum debug_type DEBUG_GetType(struct datatype * dt);
extern struct datatype * DEBUG_TypeCast(enum debug_type, const char *);
extern int DEBUG_PrintTypeCast(const struct datatype *);
extern int DEBUG_PrintType( const DBG_VALUE* addr );
extern int DEBUG_PrintType(const DBG_VALUE* addr);
extern struct datatype * DEBUG_GetBasicType(enum debug_type_basic);
extern int DEBUG_DumpTypes(void);
/* debugger/winedbg.c */
#define DBG_CHN_MESG 1
#define DBG_CHN_ERR 2
#define DBG_CHN_WARN 4
#define DBG_CHN_FIXME 8
#define DBG_CHN_TRACE 16
extern void DEBUG_OutputA(int chn, const char* buffer, int len);
extern void DEBUG_OutputW(int chn, const WCHAR* buffer, int len);
extern void DEBUG_OutputA(const char* buffer, int len);
extern void DEBUG_OutputW(const WCHAR* buffer, int len);
#ifdef __GNUC__
extern int DEBUG_Printf(int chn, const char* format, ...) __attribute__((format (printf,2,3)));
extern int DEBUG_Printf(const char* format, ...) __attribute__((format (printf,1,2)));
#else
extern int DEBUG_Printf(int chn, const char* format, ...);
extern int DEBUG_Printf(const char* format, ...);
#endif
extern DBG_INTVAR* DEBUG_GetIntVar(const char*);
extern BOOL DEBUG_Attach(DWORD pid, BOOL cofe, BOOL wfe);

View File

@ -85,7 +85,7 @@ int DEBUG_InfoDisplay(void)
continue;
if (displaypoints[i].function_name)
DEBUG_Printf(DBG_CHN_MESG, "%d in %s%s : ", i + 1,
DEBUG_Printf("%d in %s%s : ", i + 1,
DEBUG_GetSymbolName(displaypoints[i].function_name),
(displaypoints[i].enabled ?
(displaypoints[i].function_name != DEBUG_GetCurrentFrameFunctionName() ?
@ -93,10 +93,10 @@ int DEBUG_InfoDisplay(void)
: " (disabled)")
);
else
DEBUG_Printf(DBG_CHN_MESG, "%d%s : ", i + 1,
(displaypoints[i].enabled ? "" : " (disabled)"));
DEBUG_Printf("%d%s : ", i + 1,
(displaypoints[i].enabled ? "" : " (disabled)"));
DEBUG_DisplayExpr(displaypoints[i].exp);
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
}
return TRUE;
@ -109,19 +109,19 @@ void DEBUG_PrintOneDisplay(int i)
if (displaypoints[i].enabled) {
value = DEBUG_EvalExpr(displaypoints[i].exp);
if (value.type == NULL) {
DEBUG_Printf(DBG_CHN_MESG, "Unable to evaluate expression ");
DEBUG_Printf("Unable to evaluate expression ");
DEBUG_DisplayExpr(displaypoints[i].exp);
DEBUG_Printf(DBG_CHN_MESG, "\nDisabling display %d ...\n", i + 1);
DEBUG_Printf("\nDisabling display %d ...\n", i + 1);
displaypoints[i].enabled = FALSE;
return;
}
}
DEBUG_Printf(DBG_CHN_MESG, "%d : ", i + 1);
DEBUG_Printf("%d : ", i + 1);
DEBUG_DisplayExpr(displaypoints[i].exp);
DEBUG_Printf(DBG_CHN_MESG, " = ");
DEBUG_Printf(" = ");
if (!displaypoints[i].enabled)
DEBUG_Printf(DBG_CHN_MESG, "(disabled)\n");
DEBUG_Printf("(disabled)\n");
else
if (displaypoints[i].format == 'i')
DEBUG_ExamineMemory(&value, displaypoints[i].count, displaypoints[i].format);
@ -152,7 +152,7 @@ int DEBUG_DelDisplay(int displaynum)
if (displaynum > ndisplays || displaynum == 0 || displaynum < -1
|| displaypoints[displaynum - 1].exp == NULL) {
DEBUG_Printf(DBG_CHN_MESG, "Invalid display number\n");
DEBUG_Printf("Invalid display number\n");
return TRUE;
}
@ -185,7 +185,7 @@ int DEBUG_EnableDisplay(int displaynum, int enable)
{
--displaynum;
if (displaynum >= ndisplays || displaynum < 0 || displaypoints[displaynum].exp == NULL) {
DEBUG_Printf(DBG_CHN_MESG, "Invalid display number\n");
DEBUG_Printf("Invalid display number\n");
return TRUE;
}

View File

@ -325,7 +325,7 @@ DBG_VALUE DEBUG_EvalExpr(struct expr * exp)
case EXPR_TYPE_CAST:
if (!exp->un.cast.cast)
{
DEBUG_Printf(DBG_CHN_MESG, "Can't cast to unknown type\n");
DEBUG_Printf("Can't cast to unknown type\n");
RaiseException(DEBUG_STATUS_BAD_TYPE, 0, 0, NULL);
}
rtn = DEBUG_EvalExpr(exp->un.cast.expr);
@ -377,7 +377,7 @@ DBG_VALUE DEBUG_EvalExpr(struct expr * exp)
if (!DEBUG_FindStructElement(&rtn, exp->un.structure.element_name,
&exp->un.structure.result))
{
DEBUG_Printf(DBG_CHN_MESG, "%s\n", exp->un.structure.element_name);
DEBUG_Printf("%s\n", exp->un.structure.element_name);
RaiseException(DEBUG_STATUS_NO_FIELD, 0, 0, NULL);
}
@ -392,7 +392,7 @@ DBG_VALUE DEBUG_EvalExpr(struct expr * exp)
if (!DEBUG_FindStructElement(&rtn, exp->un.structure.element_name,
&exp->un.structure.result))
{
DEBUG_Printf(DBG_CHN_MESG, "%s\n", exp->un.structure.element_name);
DEBUG_Printf("%s\n", exp->un.structure.element_name);
RaiseException(DEBUG_STATUS_NO_FIELD, 0, 0, NULL);
}
break;
@ -456,7 +456,7 @@ DBG_VALUE DEBUG_EvalExpr(struct expr * exp)
break;
}
#else
DEBUG_Printf(DBG_CHN_MESG, "Function call no longer implemented\n");
DEBUG_Printf("Function call no longer implemented\n");
/* would need to set up a call to this function, and then restore the current
* context afterwards...
*/
@ -685,7 +685,7 @@ DBG_VALUE DEBUG_EvalExpr(struct expr * exp)
}
break;
default:
DEBUG_Printf(DBG_CHN_MESG,"Unexpected expression (%d).\n", exp->type);
DEBUG_Printf("Unexpected expression (%d).\n", exp->type);
RaiseException(DEBUG_STATUS_INTERNAL_ERROR, 0, 0, NULL);
break;
}
@ -704,111 +704,111 @@ DEBUG_DisplayExpr(const struct expr * exp)
switch(exp->type)
{
case EXPR_TYPE_CAST:
DEBUG_Printf(DBG_CHN_MESG, "((");
DEBUG_Printf("((");
DEBUG_PrintTypeCast(exp->un.cast.cast);
DEBUG_Printf(DBG_CHN_MESG, ")");
DEBUG_Printf(")");
DEBUG_DisplayExpr(exp->un.cast.expr);
DEBUG_Printf(DBG_CHN_MESG, ")");
DEBUG_Printf(")");
break;
case EXPR_TYPE_INTVAR:
DEBUG_Printf(DBG_CHN_MESG, "$%s", exp->un.intvar.name);
DEBUG_Printf("$%s", exp->un.intvar.name);
break;
case EXPR_TYPE_US_CONST:
DEBUG_Printf(DBG_CHN_MESG, "%ud", exp->un.u_const.value);
DEBUG_Printf("%ud", exp->un.u_const.value);
break;
case EXPR_TYPE_CONST:
DEBUG_Printf(DBG_CHN_MESG, "%d", exp->un.u_const.value);
DEBUG_Printf("%d", exp->un.u_const.value);
break;
case EXPR_TYPE_STRING:
DEBUG_Printf(DBG_CHN_MESG, "\"%s\"", exp->un.string.str);
DEBUG_Printf("\"%s\"", exp->un.string.str);
break;
case EXPR_TYPE_SYMBOL:
DEBUG_Printf(DBG_CHN_MESG, "%s" , exp->un.symbol.name);
DEBUG_Printf("%s" , exp->un.symbol.name);
break;
case EXPR_TYPE_PSTRUCT:
DEBUG_DisplayExpr(exp->un.structure.exp1);
DEBUG_Printf(DBG_CHN_MESG, "->%s", exp->un.structure.element_name);
DEBUG_Printf("->%s", exp->un.structure.element_name);
break;
case EXPR_TYPE_STRUCT:
DEBUG_DisplayExpr(exp->un.structure.exp1);
DEBUG_Printf(DBG_CHN_MESG, ".%s", exp->un.structure.element_name);
DEBUG_Printf(".%s", exp->un.structure.element_name);
break;
case EXPR_TYPE_CALL:
DEBUG_Printf(DBG_CHN_MESG, "%s(",exp->un.call.funcname);
DEBUG_Printf("%s(",exp->un.call.funcname);
for(i=0; i < exp->un.call.nargs; i++)
{
DEBUG_DisplayExpr(exp->un.call.arg[i]);
if( i != exp->un.call.nargs - 1 )
{
DEBUG_Printf(DBG_CHN_MESG, ", ");
DEBUG_Printf(", ");
}
}
DEBUG_Printf(DBG_CHN_MESG, ")");
DEBUG_Printf(")");
break;
case EXPR_TYPE_BINOP:
DEBUG_Printf(DBG_CHN_MESG, "( ");
DEBUG_Printf("( ");
DEBUG_DisplayExpr(exp->un.binop.exp1);
switch(exp->un.binop.binop_type)
{
case EXP_OP_ADD:
DEBUG_Printf(DBG_CHN_MESG, " + ");
DEBUG_Printf(" + ");
break;
case EXP_OP_SUB:
DEBUG_Printf(DBG_CHN_MESG, " - ");
DEBUG_Printf(" - ");
break;
case EXP_OP_SEG:
DEBUG_Printf(DBG_CHN_MESG, ":");
DEBUG_Printf(":");
break;
case EXP_OP_LOR:
DEBUG_Printf(DBG_CHN_MESG, " || ");
DEBUG_Printf(" || ");
break;
case EXP_OP_LAND:
DEBUG_Printf(DBG_CHN_MESG, " && ");
DEBUG_Printf(" && ");
break;
case EXP_OP_OR:
DEBUG_Printf(DBG_CHN_MESG, " | ");
DEBUG_Printf(" | ");
break;
case EXP_OP_AND:
DEBUG_Printf(DBG_CHN_MESG, " & ");
DEBUG_Printf(" & ");
break;
case EXP_OP_XOR:
DEBUG_Printf(DBG_CHN_MESG, " ^ ");
DEBUG_Printf(" ^ ");
break;
case EXP_OP_EQ:
DEBUG_Printf(DBG_CHN_MESG, " == ");
DEBUG_Printf(" == ");
break;
case EXP_OP_GT:
DEBUG_Printf(DBG_CHN_MESG, " > ");
DEBUG_Printf(" > ");
break;
case EXP_OP_LT:
DEBUG_Printf(DBG_CHN_MESG, " < ");
DEBUG_Printf(" < ");
break;
case EXP_OP_GE:
DEBUG_Printf(DBG_CHN_MESG, " >= ");
DEBUG_Printf(" >= ");
break;
case EXP_OP_LE:
DEBUG_Printf(DBG_CHN_MESG, " <= ");
DEBUG_Printf(" <= ");
break;
case EXP_OP_NE:
DEBUG_Printf(DBG_CHN_MESG, " != ");
DEBUG_Printf(" != ");
break;
case EXP_OP_SHL:
DEBUG_Printf(DBG_CHN_MESG, " << ");
DEBUG_Printf(" << ");
break;
case EXP_OP_SHR:
DEBUG_Printf(DBG_CHN_MESG, " >> ");
DEBUG_Printf(" >> ");
break;
case EXP_OP_MUL:
DEBUG_Printf(DBG_CHN_MESG, " * ");
DEBUG_Printf(" * ");
break;
case EXP_OP_DIV:
DEBUG_Printf(DBG_CHN_MESG, " / ");
DEBUG_Printf(" / ");
break;
case EXP_OP_REM:
DEBUG_Printf(DBG_CHN_MESG, " %% ");
DEBUG_Printf(" %% ");
break;
case EXP_OP_ARR:
DEBUG_Printf(DBG_CHN_MESG, "[");
DEBUG_Printf("[");
break;
default:
break;
@ -816,33 +816,33 @@ DEBUG_DisplayExpr(const struct expr * exp)
DEBUG_DisplayExpr(exp->un.binop.exp2);
if( exp->un.binop.binop_type == EXP_OP_ARR )
{
DEBUG_Printf(DBG_CHN_MESG, "]");
DEBUG_Printf("]");
}
DEBUG_Printf(DBG_CHN_MESG, " )");
DEBUG_Printf(" )");
break;
case EXPR_TYPE_UNOP:
switch(exp->un.unop.unop_type)
{
case EXP_OP_NEG:
DEBUG_Printf(DBG_CHN_MESG, "-");
DEBUG_Printf("-");
break;
case EXP_OP_NOT:
DEBUG_Printf(DBG_CHN_MESG, "!");
DEBUG_Printf("!");
break;
case EXP_OP_LNOT:
DEBUG_Printf(DBG_CHN_MESG, "~");
DEBUG_Printf("~");
break;
case EXP_OP_DEREF:
DEBUG_Printf(DBG_CHN_MESG, "*");
DEBUG_Printf("*");
break;
case EXP_OP_ADDR:
DEBUG_Printf(DBG_CHN_MESG, "&");
DEBUG_Printf("&");
break;
}
DEBUG_DisplayExpr(exp->un.unop.exp1);
break;
default:
DEBUG_Printf(DBG_CHN_MESG,"Unexpected expression.\n");
DEBUG_Printf("Unexpected expression.\n");
RaiseException(DEBUG_STATUS_INTERNAL_ERROR, 0, 0, NULL);
break;
}
@ -901,7 +901,7 @@ DEBUG_CloneExpr(const struct expr * exp)
rtn->un.unop.exp1 = DEBUG_CloneExpr(exp->un.unop.exp1);
break;
default:
DEBUG_Printf(DBG_CHN_MESG,"Unexpected expression.\n");
DEBUG_Printf("Unexpected expression.\n");
RaiseException(DEBUG_STATUS_INTERNAL_ERROR, 0, 0, NULL);
break;
}
@ -956,7 +956,7 @@ DEBUG_FreeExpr(struct expr * exp)
DEBUG_FreeExpr(exp->un.unop.exp1);
break;
default:
DEBUG_Printf(DBG_CHN_MESG,"Unexpected expression.\n");
DEBUG_Printf("Unexpected expression.\n");
RaiseException(DEBUG_STATUS_INTERNAL_ERROR, 0, 0, NULL);
break;
}

View File

@ -665,7 +665,7 @@ static void handle_debug_event(struct gdb_context* gdbctx, DEBUG_EVENT* de)
DEBUG_CheckDelayedBP();
if (DBG_IVAR(BreakOnDllLoad))
{
DEBUG_Printf(DBG_CHN_MESG, "Stopping on DLL %s loading at %08lx\n",
DEBUG_Printf("Stopping on DLL %s loading at %08lx\n",
buffer, (unsigned long)de->u.LoadDll.lpBaseOfDll);
DEBUG_Parser();
}

View File

@ -26,6 +26,10 @@
#include <limits.h>
#include <sys/types.h>
#include "debugger.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
WINE_DECLARE_DEBUG_CHANNEL(winedbg_sym);
#define NR_NAME_HASH 16384
#ifndef PATH_MAX
@ -148,8 +152,8 @@ DEBUG_ResortSymbols(void)
if( (nh->flags & SYM_INVALID) == 0 )
nsym++;
else
DEBUG_Printf( DBG_CHN_MESG, "Symbol %s (%04lx:%08lx) is invalid\n",
nh->name, nh->value.addr.seg, nh->value.addr.off );
DEBUG_Printf("Symbol %s (%04lx:%08lx) is invalid\n",
nh->name, nh->value.addr.seg, nh->value.addr.off );
}
}
@ -219,10 +223,9 @@ DEBUG_AddSymbol( const char * name, const DBG_VALUE *value,
*/
if (nh->value.addr.seg == 0 && nh->value.addr.off == 0 && c != 0)
{
#if 0
DEBUG_Printf(DBG_CHN_MESG, "Changing address for symbol %s (%04lx:%08lx => %04lx:%08lx)\n",
name, nh->value.addr.seg, nh->value.addr.off, value->addr.seg, value->addr.off);
#endif
WINE_TRACE_(winedbg_sym)(
"Changing address for symbol %s (%04lx:%08lx => %04lx:%08lx)\n",
name, nh->value.addr.seg, nh->value.addr.off, value->addr.seg, value->addr.off);
nh->value.addr = value->addr;
}
if (nh->value.type == NULL && value->type != NULL)
@ -244,10 +247,9 @@ DEBUG_AddSymbol( const char * name, const DBG_VALUE *value,
}
}
#if 0
DEBUG_Printf(DBG_CHN_TRACE, "adding %s symbol (%s) from file '%s' at %04lx:%08lx\n",
(flags & SYM_INVALID) ? "invalid" : " valid", name, source, value->addr.seg, value->addr.off);
#endif
WINE_TRACE_(winedbg_sym)(
"adding %s symbol (%s) from file '%s' at %04lx:%08lx\n",
(flags & SYM_INVALID) ? "invalid" : " valid", name, source, value->addr.seg, value->addr.off);
/*
* First see if we already have an entry for this symbol. If so
@ -383,7 +385,7 @@ enum get_sym_val DEBUG_GetSymbolValue( const char * name,
const int lineno,
DBG_VALUE *rtn, int bp_flag )
{
#define NUMDBGV 10
#define NUMDBGV 100
/* FIXME: NUMDBGV should be made variable */
DBG_VALUE value[NUMDBGV];
DBG_VALUE vtmp;
@ -400,7 +402,7 @@ enum get_sym_val DEBUG_GetSymbolValue( const char * name,
strcpy(buffer + 1, name);
num = DEBUG_GSV_Helper(buffer, lineno, value, NUMDBGV, bp_flag);
}
else DEBUG_Printf(DBG_CHN_WARN, "Way too long symbol (%s)\n", name);
else WINE_WARN("Way too long symbol (%s)\n", name);
}
/* now get the local symbols if any */
@ -419,24 +421,24 @@ enum get_sym_val DEBUG_GetSymbolValue( const char * name,
char buffer[256];
if (num == NUMDBGV+1) {
DEBUG_Printf(DBG_CHN_MESG, "Too many addresses for symbol '%s', limiting the first %d\n", name, NUMDBGV);
DEBUG_Printf("Too many addresses for symbol '%s', limiting the first %d\n", name, NUMDBGV);
num = NUMDBGV;
}
DEBUG_Printf(DBG_CHN_MESG, "Many symbols with name '%s', choose the one you want (<cr> to abort):\n", name);
DEBUG_Printf("Many symbols with name '%s', choose the one you want (<cr> to abort):\n", name);
for (i = 0; i < num; i++) {
DEBUG_Printf(DBG_CHN_MESG, "[%d]: ", i + 1);
DEBUG_Printf("[%d]: ", i + 1);
if (i == local) {
struct name_hash*func;
unsigned int ebp;
unsigned int eip;
if (DEBUG_GetCurrentFrame(&func, &eip, &ebp))
DEBUG_Printf(DBG_CHN_MESG, "local variable of %s in %s\n", func->name, func->sourcefile);
DEBUG_Printf("local variable of %s in %s\n", func->name, func->sourcefile);
else
DEBUG_Printf(DBG_CHN_MESG, "local variable\n");
DEBUG_Printf("local variable\n");
} else {
DEBUG_PrintAddress( &value[i].addr, DEBUG_GetSelectorType(value[i].addr.seg), TRUE);
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
}
}
do {
@ -446,7 +448,7 @@ enum get_sym_val DEBUG_GetSymbolValue( const char * name,
if (buffer[0] == '\0') return gsv_aborted;
i = atoi(buffer);
if (i < 1 || i > num)
DEBUG_Printf(DBG_CHN_MESG, "Invalid choice %d\n", i);
DEBUG_Printf("Invalid choice %d\n", i);
}
} while (i < 1 || i > num);
@ -612,14 +614,13 @@ const char * DEBUG_FindNearestSymbol( const DBG_ADDR *addr, int flag,
}
}
nearest = addr_sorttab[mid];
#if 0
DEBUG_Printf(DBG_CHN_MESG, "Found %x:%x when looking for %x:%x %x %s\n",
addr_sorttab[mid ]->value.addr.seg,
addr_sorttab[mid ]->value.addr.off,
addr->seg, addr->off,
addr_sorttab[mid ]->linetab,
addr_sorttab[mid ]->name);
#endif
WINE_TRACE_(winedbg_sym)(
"Found %lx:%lx when looking for %lx:%lx %p %s\n",
addr_sorttab[mid ]->value.addr.seg,
addr_sorttab[mid ]->value.addr.off,
addr->seg, addr->off,
addr_sorttab[mid ]->linetab,
addr_sorttab[mid ]->name);
break;
}
if( (addr_sorttab[mid]->value.addr.seg < addr->seg)
@ -788,11 +789,11 @@ void DEBUG_ReadSymbolTable( const char* filename, unsigned long offset )
if (!(symbolfile = fopen(filename, "r")))
{
DEBUG_Printf( DBG_CHN_WARN, "Unable to open symbol table %s\n", filename );
WINE_WARN("Unable to open symbol table %s\n", filename);
return;
}
DEBUG_Printf( DBG_CHN_MESG, "Reading symbols from file %s\n", filename );
DEBUG_Printf("Reading symbols from file %s\n", filename);
value.type = NULL;
value.addr.seg = 0;
@ -821,7 +822,7 @@ void DEBUG_ReadSymbolTable( const char* filename, unsigned long offset )
if (sscanf(buffer, "%lx %c %s", &value.addr.off, &type, name) == 3)
{
if (value.addr.off + offset < value.addr.off)
DEBUG_Printf( DBG_CHN_WARN, "Address wrap around\n");
WINE_WARN("Address wrap around\n");
value.addr.off += offset;
DEBUG_AddSymbol( name, &value, NULL, SYM_WINE );
}
@ -900,7 +901,7 @@ DEBUG_DumpHashInfo(void)
{
depth++;
}
DEBUG_Printf(DBG_CHN_MESG, "Bucket %d: %d\n", i, depth);
DEBUG_Printf("Bucket %d: %d\n", i, depth);
}
}
@ -975,14 +976,13 @@ int DEBUG_CheckLinenoStatus( const DBG_ADDR *addr)
}
}
nearest = addr_sorttab[mid];
#if 0
DEBUG_Printf(DBG_CHN_MESG, "Found %x:%x when looking for %x:%x %x %s\n",
addr_sorttab[mid ]->value.addr.seg,
addr_sorttab[mid ]->value.addr.off,
addr->seg, addr->off,
addr_sorttab[mid ]->linetab,
addr_sorttab[mid ]->name);
#endif
WINE_TRACE_(winedbg_sym)(
"Found %lx:%lx when looking for %lx:%lx %p %s\n",
addr_sorttab[mid ]->value.addr.seg,
addr_sorttab[mid ]->value.addr.off,
addr->seg, addr->off,
addr_sorttab[mid ]->linetab,
addr_sorttab[mid ]->name);
break;
}
if( (addr_sorttab[mid]->value.addr.seg < addr->seg)
@ -1118,11 +1118,11 @@ DEBUG_GetFuncInfo( struct list_id * ret, const char * filename,
{
if( filename != NULL )
{
DEBUG_Printf(DBG_CHN_MESG, "No such function %s in %s\n", name, filename);
DEBUG_Printf("No such function %s in %s\n", name, filename);
}
else
{
DEBUG_Printf(DBG_CHN_MESG, "No such function %s\n", name);
DEBUG_Printf("No such function %s\n", name);
}
ret->sourcefile = NULL;
ret->line = -1;
@ -1228,7 +1228,7 @@ DEBUG_InfoLocals(void)
return FALSE;
}
DEBUG_Printf(DBG_CHN_MESG, "%s:\n", curr_func->name);
DEBUG_Printf("%s:\n", curr_func->name);
for(i=0; i < curr_func->n_locals; i++ )
{
@ -1256,7 +1256,7 @@ DEBUG_InfoLocals(void)
{
ptr = (unsigned int *)(((DWORD)&DEBUG_context)
+ reg_ofs[curr_func->local_vars[i].regno - 1]);
DEBUG_Printf(DBG_CHN_MESG, " %s (optimized into register $%s) == 0x%8.8x\n",
DEBUG_Printf(" %s (optimized into register $%s) == 0x%8.8x\n",
curr_func->local_vars[i].name,
reg_name[curr_func->local_vars[i].regno - 1],
*ptr);
@ -1265,7 +1265,7 @@ DEBUG_InfoLocals(void)
{
DEBUG_READ_MEM_VERBOSE((void*)(ebp + curr_func->local_vars[i].offset),
&val, sizeof(val));
DEBUG_Printf(DBG_CHN_MESG, " %s == 0x%8.8x\n",
DEBUG_Printf(" %s == 0x%8.8x\n",
curr_func->local_vars[i].name, val);
}
}
@ -1366,18 +1366,18 @@ void DEBUG_InfoSymbols(const char* str)
NULL, 0, NULL );
if (mode != MODE_32)
DEBUG_Printf( DBG_CHN_MESG, "%04lx:%04lx :",
array[i]->value.addr.seg & 0xFFFF,
array[i]->value.addr.off );
DEBUG_Printf("%04lx:%04lx :",
array[i]->value.addr.seg & 0xFFFF,
array[i]->value.addr.off);
else
DEBUG_Printf( DBG_CHN_MESG, "%08lx :", array[i]->value.addr.off );
DEBUG_Printf("%08lx :", array[i]->value.addr.off);
if (array[i]->value.type)
{
DEBUG_Printf( DBG_CHN_MESG, " (");
DEBUG_Printf(" (");
DEBUG_PrintTypeCast(array[i]->value.type);
DEBUG_Printf( DBG_CHN_MESG, ")");
DEBUG_Printf(")");
}
if (name) DEBUG_Printf( DBG_CHN_MESG, " %s\n", name );
if (name) DEBUG_Printf(" %s\n", name);
}
HeapFree(GetProcessHeap(), 0, array);
}
@ -1386,7 +1386,7 @@ void DEBUG_InfoSymbols(const char* str)
void DEBUG_InfoSymbols(const char* str)
{
DEBUG_Printf( DBG_CHN_MESG, "FIXME: needs regex support\n" );
WINE_FIXME("Requires regex support\n");
}
#endif /* HAVE_REGEX_H */

View File

@ -32,6 +32,9 @@
#include "tlhelp32.h"
#include "debugger.h"
#include "expr.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
/***********************************************************************
* DEBUG_PrintBasic
@ -46,7 +49,7 @@ void DEBUG_PrintBasic( const DBG_VALUE* value, int count, char format )
assert(value->cookie == DV_TARGET || value->cookie == DV_HOST);
if (value->type == NULL)
{
DEBUG_Printf(DBG_CHN_MESG, "Unable to evaluate expression\n");
DEBUG_Printf("Unable to evaluate expression\n");
return;
}
@ -58,29 +61,29 @@ void DEBUG_PrintBasic( const DBG_VALUE* value, int count, char format )
case 'x':
if (value->addr.seg)
{
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "0x%04lx", (long unsigned int)res);
DEBUG_nchar += DEBUG_Printf("0x%04lx", (long unsigned int)res);
}
else
{
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "0x%08lx", (long unsigned int)res);
DEBUG_nchar += DEBUG_Printf("0x%08lx", (long unsigned int)res);
}
break;
case 'd':
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "%ld\n", (long int)res);
DEBUG_nchar += DEBUG_Printf("%ld\n", (long int)res);
break;
case 'c':
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "%d = '%c'",
DEBUG_nchar += DEBUG_Printf("%d = '%c'",
(char)(res & 0xff), (char)(res & 0xff));
break;
case 'u':
{
WCHAR wch = (WCHAR)(res & 0xFFFF);
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "%d = '", (unsigned)(res & 0xffff));
DEBUG_OutputW(DBG_CHN_MESG, &wch, 1);
DEBUG_Printf(DBG_CHN_MESG, "'");
DEBUG_nchar += DEBUG_Printf("%d = '", (unsigned)(res & 0xffff));
DEBUG_OutputW(&wch, 1);
DEBUG_Printf("'");
}
break;
@ -88,7 +91,7 @@ void DEBUG_PrintBasic( const DBG_VALUE* value, int count, char format )
case 's':
case 'w':
case 'b':
DEBUG_Printf(DBG_CHN_MESG, "Format specifier '%c' is meaningless in 'print' command\n", format);
DEBUG_Printf("Format specifier '%c' is meaningless in 'print' command\n", format);
case 0:
if (default_format == NULL) break;
@ -114,38 +117,38 @@ void DEBUG_PrintBasic( const DBG_VALUE* value, int count, char format )
addr.seg = 0;
addr.off = (long)res;
DEBUG_nchar += DEBUG_PrintStringA(DBG_CHN_MESG, &addr, -1);
DEBUG_nchar += DEBUG_PrintStringA(&addr, -1);
}
else
{
/* shouldn't happen */
DEBUG_Printf(DBG_CHN_MESG, "%%%c", *ptr);
DEBUG_Printf("%%%c", *ptr);
DEBUG_nchar += 2;
}
state = 0;
}
else
{
DEBUG_OutputA(DBG_CHN_MESG, ptr, 1);
DEBUG_OutputA(ptr, 1);
DEBUG_nchar++;
}
}
}
else if (strcmp(default_format, "%B") == 0)
{
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "%s", res ? "true" : "false");
DEBUG_nchar += DEBUG_Printf("%s", res ? "true" : "false");
}
else if (strcmp(default_format, "%R") == 0)
{
if (value->cookie == DV_HOST)
DEBUG_InfoRegisters((CONTEXT*)value->addr.off);
else
DEBUG_Printf(DBG_CHN_MESG, "NIY: info on register struct in debuggee address space\n");
DEBUG_Printf("NIY: info on register struct in debuggee address space\n");
DEBUG_nchar = 0;
}
else
{
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, default_format, res);
DEBUG_nchar += DEBUG_Printf(default_format, res);
}
break;
}
@ -165,10 +168,10 @@ DEBUG_PrintAddress( const DBG_ADDR *addr, enum dbg_mode mode, int flag )
const char *name = DEBUG_FindNearestSymbol( addr, flag, &rtn.sym, 0,
&rtn.list );
if (addr->seg) DEBUG_Printf( DBG_CHN_MESG, "0x%04lx:", addr->seg&0xFFFF );
if (mode != MODE_32) DEBUG_Printf( DBG_CHN_MESG, "0x%04lx", addr->off );
else DEBUG_Printf( DBG_CHN_MESG, "0x%08lx", addr->off );
if (name) DEBUG_Printf( DBG_CHN_MESG, " (%s)", name );
if (addr->seg) DEBUG_Printf("0x%04lx:", addr->seg & 0xFFFF);
if (mode != MODE_32) DEBUG_Printf("0x%04lx", addr->off);
else DEBUG_Printf("0x%08lx", addr->off);
if (name) DEBUG_Printf(" (%s)", name);
return rtn;
}
/***********************************************************************
@ -187,10 +190,10 @@ DEBUG_PrintAddressAndArgs( const DBG_ADDR *addr, enum dbg_mode mode,
const char *name = DEBUG_FindNearestSymbol( addr, flag, &rtn.sym, ebp,
&rtn.list );
if (addr->seg) DEBUG_Printf( DBG_CHN_MESG, "0x%04lx:", addr->seg );
if (mode != MODE_32) DEBUG_Printf( DBG_CHN_MESG, "0x%04lx", addr->off );
else DEBUG_Printf( DBG_CHN_MESG, "0x%08lx", addr->off );
if (name) DEBUG_Printf( DBG_CHN_MESG, " (%s)", name );
if (addr->seg) DEBUG_Printf("0x%04lx:", addr->seg);
if (mode != MODE_32) DEBUG_Printf("0x%04lx", addr->off);
else DEBUG_Printf("0x%08lx", addr->off);
if (name) DEBUG_Printf(" (%s)", name);
return rtn;
}
@ -241,7 +244,7 @@ void DEBUG_Help(void)
NULL
};
while(helptext[i]) DEBUG_Printf(DBG_CHN_MESG,"%s\n", helptext[i++]);
while(helptext[i]) DEBUG_Printf("%s\n", helptext[i++]);
}
@ -270,7 +273,7 @@ void DEBUG_HelpInfo(void)
NULL
};
while(infotext[i]) DEBUG_Printf(DBG_CHN_MESG,"%s\n", infotext[i++]);
while(infotext[i]) DEBUG_Printf("%s\n", infotext[i++]);
}
/* FIXME: merge InfoClass and InfoClass2 */
@ -279,13 +282,12 @@ void DEBUG_InfoClass(const char* name)
WNDCLASSEXA wca;
if (!GetClassInfoEx(0, name, &wca)) {
DEBUG_Printf(DBG_CHN_MESG, "Cannot find class '%s'\n", name);
DEBUG_Printf("Cannot find class '%s'\n", name);
return;
}
DEBUG_Printf(DBG_CHN_MESG, "Class '%s':\n", name);
DEBUG_Printf(DBG_CHN_MESG,
"style=%08x wndProc=%08lx\n"
DEBUG_Printf("Class '%s':\n", name);
DEBUG_Printf("style=%08x wndProc=%08lx\n"
"inst=%p icon=%p cursor=%p bkgnd=%p\n"
"clsExtra=%d winExtra=%d\n",
wca.style, (DWORD)wca.lpfnWndProc, wca.hInstance,
@ -303,13 +305,12 @@ static void DEBUG_InfoClass2(HWND hWnd, const char* name)
WNDCLASSEXA wca;
if (!GetClassInfoEx((HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), name, &wca)) {
DEBUG_Printf(DBG_CHN_MESG, "Cannot find class '%s'\n", name);
DEBUG_Printf("Cannot find class '%s'\n", name);
return;
}
DEBUG_Printf(DBG_CHN_MESG, "Class '%s':\n", name);
DEBUG_Printf(DBG_CHN_MESG,
"style=%08x wndProc=%08lx\n"
DEBUG_Printf("Class '%s':\n", name);
DEBUG_Printf("style=%08x wndProc=%08lx\n"
"inst=%p icon=%p cursor=%p bkgnd=%p\n"
"clsExtra=%d winExtra=%d\n",
wca.style, (DWORD)wca.lpfnWndProc, wca.hInstance,
@ -320,16 +321,15 @@ static void DEBUG_InfoClass2(HWND hWnd, const char* name)
int i;
WORD w;
DEBUG_Printf(DBG_CHN_MESG, "Extra bytes:" );
DEBUG_Printf("Extra bytes:");
for (i = 0; i < wca.cbClsExtra / 2; i++) {
w = GetClassWord(hWnd, i * 2);
/* FIXME: depends on i386 endian-ity */
DEBUG_Printf(DBG_CHN_MESG, " %02x", HIBYTE(w));
DEBUG_Printf(DBG_CHN_MESG, " %02x", LOBYTE(w));
DEBUG_Printf(" %02x %02x", HIBYTE(w), LOBYTE(w));
}
DEBUG_Printf(DBG_CHN_MESG, "\n" );
DEBUG_Printf("\n");
}
DEBUG_Printf(DBG_CHN_MESG, "\n" );
DEBUG_Printf("\n");
}
struct class_walker {
@ -398,8 +398,7 @@ void DEBUG_InfoWindow(HWND hWnd)
SetRectEmpty(&windowRect);
/* FIXME missing fields: hmemTaskQ, hrgnUpdate, dce, flags, pProp, scroll */
DEBUG_Printf(DBG_CHN_MESG,
"next=%p child=%p parent=%p owner=%p class='%s'\n"
DEBUG_Printf("next=%p child=%p parent=%p owner=%p class='%s'\n"
"inst=%p active=%p idmenu=%08lx\n"
"style=%08lx exstyle=%08lx wndproc=%08lx text='%s'\n"
"client=%ld,%ld-%ld,%ld window=%ld,%ld-%ld,%ld sysmenu=%p\n",
@ -420,16 +419,15 @@ void DEBUG_InfoWindow(HWND hWnd)
GetSystemMenu(hWnd, FALSE));
if (GetClassLong(hWnd, GCL_CBWNDEXTRA)) {
DEBUG_Printf(DBG_CHN_MESG, "Extra bytes:" );
DEBUG_Printf("Extra bytes:" );
for (i = 0; i < GetClassLong(hWnd, GCL_CBWNDEXTRA) / 2; i++) {
w = GetWindowWord(hWnd, i * 2);
/* FIXME: depends on i386 endian-ity */
DEBUG_Printf(DBG_CHN_MESG, " %02x", HIBYTE(w));
DEBUG_Printf(DBG_CHN_MESG, " %02x", LOBYTE(w));
DEBUG_Printf(" %02x %02x", HIBYTE(w), LOBYTE(w));
}
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
}
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
}
void DEBUG_WalkWindows(HWND hWnd, int indent)
@ -442,8 +440,7 @@ void DEBUG_WalkWindows(HWND hWnd, int indent)
hWnd = GetDesktopWindow();
if (!indent) /* first time around */
DEBUG_Printf(DBG_CHN_MESG,
"%-16.16s %-17.17s %-8.8s %s\n",
DEBUG_Printf("%-16.16s %-17.17s %-8.8s %s\n",
"hwnd", "Class Name", " Style", " WndProc Text");
do {
@ -453,8 +450,8 @@ void DEBUG_WalkWindows(HWND hWnd, int indent)
strcpy(wndName, "-- Empty --");
/* FIXME: missing hmemTaskQ */
DEBUG_Printf(DBG_CHN_MESG, "%*s%04x%*s", indent, "", (UINT)hWnd, 13-indent,"");
DEBUG_Printf(DBG_CHN_MESG, "%-17.17s %08lx %08lx %.14s\n",
DEBUG_Printf("%*s%04x%*s", indent, "", (UINT)hWnd, 13-indent,"");
DEBUG_Printf("%-17.17s %08lx %08lx %.14s\n",
clsName, GetWindowLong(hWnd, GWL_STYLE),
GetWindowLong(hWnd, GWL_WNDPROC), wndName);
@ -475,12 +472,12 @@ void DEBUG_WalkProcess(void)
entry.dwSize = sizeof(entry);
ok = Process32First( snap, &entry );
DEBUG_Printf(DBG_CHN_MESG, " %-8.8s %-8.8s %-8.8s %s\n",
DEBUG_Printf(" %-8.8s %-8.8s %-8.8s %s\n",
"pid", "threads", "parent", "executable" );
while (ok)
{
if (entry.th32ProcessID != GetCurrentProcessId())
DEBUG_Printf(DBG_CHN_MESG, "%c%08lx %-8ld %08lx '%s'\n",
DEBUG_Printf("%c%08lx %-8ld %08lx '%s'\n",
(entry.th32ProcessID == current) ? '>' : ' ',
entry.th32ProcessID, entry.cntThreads,
entry.th32ParentProcessID, entry.szExeFile);
@ -503,7 +500,7 @@ void DEBUG_WalkThreads(void)
entry.dwSize = sizeof(entry);
ok = Thread32First( snap, &entry );
DEBUG_Printf(DBG_CHN_MESG, "%-8.8s %-8.8s %s\n", "process", "tid", "prio" );
DEBUG_Printf("%-8.8s %-8.8s %s\n", "process", "tid", "prio" );
while (ok)
{
if (entry.th32OwnerProcessID != GetCurrentProcessId())
@ -516,11 +513,11 @@ void DEBUG_WalkThreads(void)
{
DBG_PROCESS* p = DEBUG_GetProcess(entry.th32OwnerProcessID);
DEBUG_Printf(DBG_CHN_MESG, "%08lx%s %s\n",
entry.th32OwnerProcessID, p ? " (D)" : "", p ? p->imageName : "");
DEBUG_Printf("%08lx%s %s\n",
entry.th32OwnerProcessID, p ? " (D)" : "", p ? p->imageName : "");
lastProcessId = entry.th32OwnerProcessID;
}
DEBUG_Printf(DBG_CHN_MESG, "\t%08lx %4ld%s\n",
DEBUG_Printf("\t%08lx %4ld%s\n",
entry.th32ThreadID, entry.tpBasePri,
(entry.th32ThreadID == current) ? " <==" : "");
@ -544,12 +541,11 @@ void DEBUG_WalkExceptions(DWORD tid)
if (!DEBUG_CurrProcess || !DEBUG_CurrThread)
{
DEBUG_Printf(DBG_CHN_MESG,
"Cannot walk exceptions while no process is loaded\n");
DEBUG_Printf("Cannot walk exceptions while no process is loaded\n");
return;
}
DEBUG_Printf( DBG_CHN_MESG, "Exception frames:\n" );
DEBUG_Printf("Exception frames:\n");
if (tid == DEBUG_CurrTid) thread = DEBUG_CurrThread;
else
@ -558,19 +554,19 @@ void DEBUG_WalkExceptions(DWORD tid)
if (!thread)
{
DEBUG_Printf( DBG_CHN_MESG, "Unknown thread id (0x%08lx) in current process\n", tid);
DEBUG_Printf("Unknown thread id (0x%08lx) in current process\n", tid);
return;
}
if (SuspendThread( thread->handle ) == -1)
{
DEBUG_Printf( DBG_CHN_MESG, "Can't suspend thread id (0x%08lx)\n", tid);
DEBUG_Printf("Can't suspend thread id (0x%08lx)\n", tid);
return;
}
}
if (!DEBUG_READ_MEM(thread->teb, &next_frame, sizeof(next_frame)))
{
DEBUG_Printf( DBG_CHN_MESG, "Can't read TEB:except_frame\n");
DEBUG_Printf("Can't read TEB:except_frame\n");
return;
}
@ -578,13 +574,13 @@ void DEBUG_WalkExceptions(DWORD tid)
{
EXCEPTION_REGISTRATION_RECORD frame;
DEBUG_Printf( DBG_CHN_MESG, "%p: ", next_frame );
DEBUG_Printf("%p: ", next_frame);
if (!DEBUG_READ_MEM(next_frame, &frame, sizeof(frame)))
{
DEBUG_Printf( DBG_CHN_MESG, "Invalid frame address\n" );
DEBUG_Printf("Invalid frame address\n");
break;
}
DEBUG_Printf( DBG_CHN_MESG, "prev=%p handler=%p\n", frame.Prev, frame.Handler );
DEBUG_Printf("prev=%p handler=%p\n", frame.Prev, frame.Handler);
next_frame = frame.Prev;
}
@ -617,8 +613,7 @@ void DEBUG_InfoSegments(DWORD start, int length)
flags[1] = (le.HighWord.Bits.Type & 0x2) ? 'w' : '-';
flags[2] = '-';
}
DEBUG_Printf(DBG_CHN_MESG,
"%04lx: sel=%04lx base=%08x limit=%08x %d-bit %c%c%c\n",
DEBUG_Printf("%04lx: sel=%04lx base=%08x limit=%08x %d-bit %c%c%c\n",
i, (i<<3)|7,
(le.HighWord.Bits.BaseHi << 24) +
(le.HighWord.Bits.BaseMid << 16) + le.BaseLow,
@ -642,8 +637,7 @@ void DEBUG_InfoVirtual(DWORD pid)
{
if (DEBUG_CurrProcess == NULL)
{
DEBUG_Printf(DBG_CHN_MESG,
"Cannot look at mapping of current process, while no process is loaded\n");
DEBUG_Printf("Cannot look at mapping of current process, while no process is loaded\n");
return;
}
hProc = DEBUG_CurrProcess->handle;
@ -653,12 +647,12 @@ void DEBUG_InfoVirtual(DWORD pid)
hProc = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
if (hProc == NULL)
{
DEBUG_Printf(DBG_CHN_MESG, "Cannot open process <%lu>\n", pid);
DEBUG_Printf("Cannot open process <%lu>\n", pid);
return;
}
}
DEBUG_Printf(DBG_CHN_MESG, "Address Size State Type RWX\n");
DEBUG_Printf("Address Size State Type RWX\n");
while (VirtualQueryEx(hProc, addr, &mbi, sizeof(mbi)) >= sizeof(mbi))
{
@ -695,7 +689,7 @@ void DEBUG_InfoVirtual(DWORD pid)
type = "";
prot[0] = '\0';
}
DEBUG_Printf(DBG_CHN_MESG, "%08lx %08lx %s %s %s\n",
DEBUG_Printf("%08lx %08lx %s %s %s\n",
(DWORD)addr, mbi.RegionSize, state, type, prot);
if (addr + mbi.RegionSize < addr) /* wrap around ? */
break;
@ -726,7 +720,7 @@ void DEBUG_DbgChannel(BOOL turn_on, const char* chnl, const char* name)
if (DEBUG_GetSymbolValue("first_dll", -1, &val, FALSE) != gsv_found)
{
DEBUG_Printf(DBG_CHN_MESG, "Can't get first_option symbol");
DEBUG_Printf("Can't get first_option symbol");
return;
}
addr = (void*)DEBUG_ToLinear(&val.addr);
@ -735,7 +729,7 @@ void DEBUG_DbgChannel(BOOL turn_on, const char* chnl, const char* name)
else if (!strcmp(chnl, "err")) mask = 2;
else if (!strcmp(chnl, "warn")) mask = 4;
else if (!strcmp(chnl, "trace")) mask = 8;
else { DEBUG_Printf(DBG_CHN_MESG, "Unknown channel %s\n", chnl); return; }
else { DEBUG_Printf("Unknown channel %s\n", chnl); return; }
bAll = !strcmp("all", name);
while (addr && DEBUG_READ_MEM(addr, &dol, sizeof(dol)))
@ -752,6 +746,6 @@ void DEBUG_DbgChannel(BOOL turn_on, const char* chnl, const char* name)
}
addr = dol.next;
}
if (!done) DEBUG_Printf(DBG_CHN_MESG, "Unable to find debug channel %s\n", name);
else DEBUG_Printf(DBG_CHN_TRACE, "Changed %d channel instances\n", done);
if (!done) DEBUG_Printf("Unable to find debug channel %s\n", name);
else WINE_TRACE("Changed %d channel instances\n", done);
}

View File

@ -27,10 +27,6 @@ INTERNAL_VAR(BreakOnFirstChance, TRUE, NULL, DT_BASIC_CONST_INT)
INTERNAL_VAR(BreakOnDllLoad, FALSE, NULL, DT_BASIC_CONST_INT)
INTERNAL_VAR(CanDeferOnBPByAddr, FALSE, NULL, DT_BASIC_CONST_INT)
/* console handling */
INTERNAL_VAR(ConChannelMask, DBG_CHN_MESG, NULL, DT_BASIC_CONST_INT)
INTERNAL_VAR(StdChannelMask, 0, NULL, DT_BASIC_CONST_INT)
/* debugging debugger */
INTERNAL_VAR(ExtDbgOnInvalidAddress, FALSE, NULL, DT_BASIC_CONST_INT)
INTERNAL_VAR(ExtDbgOnInternalException, FALSE, NULL, DT_BASIC_CONST_INT)

View File

@ -35,7 +35,7 @@
static void DEBUG_Die(const char* msg)
{
DEBUG_Printf(DBG_CHN_MESG, msg);
DEBUG_Printf(msg);
exit(1);
}
@ -139,9 +139,9 @@ void DEBUG_GetCurrentAddress( DBG_ADDR *addr )
void DEBUG_InvalAddr( const DBG_ADDR* addr )
{
DEBUG_Printf(DBG_CHN_MESG,"*** Invalid address ");
DEBUG_Printf("*** Invalid address ");
DEBUG_PrintAddress(addr, DEBUG_CurrThread->dbg_mode, FALSE);
DEBUG_Printf(DBG_CHN_MESG,"\n");
DEBUG_Printf("\n");
if (DBG_IVAR(ExtDbgOnInvalidAddress)) DEBUG_ExternalDebugger();
}
@ -255,7 +255,7 @@ BOOL DEBUG_GrabAddress( DBG_VALUE* value, BOOL fromCode )
value->addr.off = DEBUG_GetExprValue(value, NULL);
}
} else if (!value->addr.seg && !value->addr.off) {
DEBUG_Printf(DBG_CHN_MESG,"Invalid expression\n");
DEBUG_Printf("Invalid expression\n");
return FALSE;
}
return TRUE;
@ -277,7 +277,7 @@ void DEBUG_ExamineMemory( const DBG_VALUE *_value, int count, char format )
if (format != 'i' && count > 1)
{
DEBUG_PrintAddress( &value.addr, DEBUG_CurrThread->dbg_mode, FALSE );
DEBUG_Printf(DBG_CHN_MESG,": ");
DEBUG_Printf(": ");
}
pnt = (void*)DEBUG_ToLinear( &value.addr );
@ -286,13 +286,13 @@ void DEBUG_ExamineMemory( const DBG_VALUE *_value, int count, char format )
{
case 'u':
if (count == 1) count = 256;
DEBUG_nchar += DEBUG_PrintStringW(DBG_CHN_MESG, &value.addr, count);
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_nchar += DEBUG_PrintStringW(&value.addr, count);
DEBUG_Printf("\n");
return;
case 's':
if (count == 1) count = 256;
DEBUG_nchar += DEBUG_PrintStringA(DBG_CHN_MESG, &value.addr, count);
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_nchar += DEBUG_PrintStringA(&value.addr, count);
DEBUG_Printf("\n");
return;
case 'i':
while (count-- && DEBUG_DisassembleInstruction( &value.addr ));
@ -302,7 +302,7 @@ void DEBUG_ExamineMemory( const DBG_VALUE *_value, int count, char format )
{
GUID guid;
if (!DEBUG_READ_MEM_VERBOSE(pnt, &guid, sizeof(guid))) break;
DEBUG_Printf(DBG_CHN_MESG,"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
DEBUG_Printf("{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
guid.Data1, guid.Data2, guid.Data3,
guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3],
guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7] );
@ -311,7 +311,7 @@ void DEBUG_ExamineMemory( const DBG_VALUE *_value, int count, char format )
if (count)
{
DEBUG_PrintAddress( &value.addr, DEBUG_CurrThread->dbg_mode, FALSE );
DEBUG_Printf(DBG_CHN_MESG,": ");
DEBUG_Printf(": ");
}
}
return;
@ -320,15 +320,15 @@ void DEBUG_ExamineMemory( const DBG_VALUE *_value, int count, char format )
_t _v; \
for(i=0; i<count; i++) { \
if (!DEBUG_READ_MEM_VERBOSE(pnt, &_v, sizeof(_t))) break; \
DEBUG_Printf(DBG_CHN_MESG,_f,(_vv)); \
DEBUG_Printf(_f,(_vv)); \
pnt += sizeof(_t); value.addr.off += sizeof(_t); \
if ((i % (_l)) == (_l)-1) { \
DEBUG_Printf(DBG_CHN_MESG,"\n"); \
DEBUG_Printf("\n"); \
DEBUG_PrintAddress( &value.addr, DEBUG_CurrThread->dbg_mode, FALSE );\
DEBUG_Printf(DBG_CHN_MESG,": ");\
DEBUG_Printf(": ");\
} \
} \
DEBUG_Printf(DBG_CHN_MESG,"\n"); \
DEBUG_Printf("\n"); \
} \
return
#define DO_DUMP(_t,_l,_f) DO_DUMP2(_t,_l,_f,_v)
@ -350,7 +350,7 @@ void DEBUG_ExamineMemory( const DBG_VALUE *_value, int count, char format )
* address space. The string stops when either len chars (if <> -1)
* have been printed, or the '\0' char is printed
*/
int DEBUG_PrintStringA(int chnl, const DBG_ADDR* address, int len)
int DEBUG_PrintStringA(const DBG_ADDR* address, int len)
{
char* lin = (void*)DEBUG_ToLinear(address);
char ch[CHARBUFSIZE+1];
@ -364,7 +364,7 @@ int DEBUG_PrintStringA(int chnl, const DBG_ADDR* address, int len)
if (!DEBUG_READ_MEM_VERBOSE(lin, ch, to_write)) break;
ch[to_write] = '\0'; /* protect from displaying junk */
to_write = lstrlenA(ch);
DEBUG_OutputA(chnl, ch, to_write);
DEBUG_OutputA(ch, to_write);
lin += to_write;
written += to_write;
if (to_write < CHARBUFSIZE) break;
@ -372,7 +372,7 @@ int DEBUG_PrintStringA(int chnl, const DBG_ADDR* address, int len)
return written; /* number of actually written chars */
}
int DEBUG_PrintStringW(int chnl, const DBG_ADDR* address, int len)
int DEBUG_PrintStringW(const DBG_ADDR* address, int len)
{
char* lin = (void*)DEBUG_ToLinear(address);
WCHAR ch[CHARBUFSIZE+1];
@ -386,7 +386,7 @@ int DEBUG_PrintStringW(int chnl, const DBG_ADDR* address, int len)
if (!DEBUG_READ_MEM_VERBOSE(lin, ch, to_write * sizeof(WCHAR))) break;
ch[to_write] = 0; /* protect from displaying junk */
to_write = lstrlenW(ch);
DEBUG_OutputW(chnl, ch, to_write);
DEBUG_OutputW(ch, to_write);
lin += to_write;
written += to_write;
if (to_write < CHARBUFSIZE) break;

View File

@ -26,6 +26,9 @@
#include "debugger.h"
#include "wingdi.h"
#include "winuser.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
/***********************************************************************
* Creates and links a new module to the current process
@ -445,25 +448,25 @@ int DEBUG_LoadEntryPoints(const char* pfx)
(module.flags & NE_FFLAGS_WIN32) /* NE module */)
continue;
if (!first) {
if (pfx) DEBUG_Printf(DBG_CHN_MESG, pfx);
DEBUG_Printf(DBG_CHN_MESG, " ");
if (pfx) DEBUG_Printf(pfx);
DEBUG_Printf(" ");
rowcount = 3 + (pfx ? strlen(pfx) : 0);
first = 1;
}
len = strlen(entry.szModule);
if ((rowcount + len) > 76) {
DEBUG_Printf(DBG_CHN_MESG, "\n ");
DEBUG_Printf("\n ");
rowcount = 3;
}
DEBUG_Printf(DBG_CHN_MESG, " %s", entry.szModule);
DEBUG_Printf(" %s", entry.szModule);
rowcount += len + 1;
DEBUG_LoadModule16(entry.hModule, &module, moduleAddr, entry.szModule);
} while (ModuleNext16(&entry));
#endif
if (first) DEBUG_Printf(DBG_CHN_MESG, "\n");
if (first) DEBUG_Printf("\n");
return first;
}
@ -485,11 +488,11 @@ void DEBUG_ReportDIL(enum DbgInfoLoad dil, const char* pfx, const char* filename
fmt = "Can't find file for %s '%s' (%p)\n";
break;
default:
DEBUG_Printf(DBG_CHN_ERR, "Oooocch (%d)\n", dil);
WINE_ERR("Oooocch (%d)\n", dil);
return;
}
DEBUG_Printf(DBG_CHN_MESG, fmt, pfx, filename, load_addr);
DEBUG_Printf(fmt, pfx, filename, load_addr);
}
static const char* DEBUG_GetModuleType(enum DbgModuleType type)
@ -540,8 +543,8 @@ static inline BOOL DEBUG_IsContainer(const DBG_MODULE* wmod_cntnr,
static void DEBUG_InfoShareModule(const DBG_MODULE* module, int ident)
{
if (ident) DEBUG_Printf(DBG_CHN_MESG, " \\-");
DEBUG_Printf(DBG_CHN_MESG, "%s\t0x%08lx-%08lx\t%s\n",
if (ident) DEBUG_Printf(" \\-");
DEBUG_Printf("%s\t0x%08lx-%08lx\t%s\n",
DEBUG_GetModuleType(module->type),
(DWORD)module->load_addr, (DWORD)module->load_addr + module->size,
module->module_name);
@ -560,7 +563,7 @@ void DEBUG_InfoShare(void)
ref = DBG_alloc(sizeof(DBG_MODULE*) * DEBUG_CurrProcess->num_modules);
if (!ref) return;
DEBUG_Printf(DBG_CHN_MESG, "Module\tAddress\t\t\tName\t%d modules\n",
DEBUG_Printf("Module\tAddress\t\t\tName\t%d modules\n",
DEBUG_CurrProcess->num_modules);
memcpy(ref, DEBUG_CurrProcess->modules,
@ -588,7 +591,7 @@ void DEBUG_InfoShare(void)
DEBUG_InfoShareModule(ref[i], 0);
break;
default:
DEBUG_Printf(DBG_CHN_ERR, "Unknown type (%d)\n", ref[i]->type);
WINE_ERR("Unknown type (%d)\n", ref[i]->type);
}
}
DBG_free(ref);
@ -604,11 +607,11 @@ void DEBUG_DumpModule(DWORD mod)
if (!(wmod = DEBUG_FindModuleByHandle((HANDLE)mod, DMT_UNKNOWN)) &&
!(wmod = DEBUG_FindModuleByAddr((void*)mod, DMT_UNKNOWN))) {
DEBUG_Printf(DBG_CHN_MESG, "'0x%08lx' is not a valid module handle or address\n", mod);
DEBUG_Printf("'0x%08lx' is not a valid module handle or address\n", mod);
return;
}
DEBUG_Printf(DBG_CHN_MESG, "Module '%s' (handle=%p) 0x%08lx-0x%08lx (%s, debug info %s)\n",
DEBUG_Printf("Module '%s' (handle=%p) 0x%08lx-0x%08lx (%s, debug info %s)\n",
wmod->module_name, wmod->handle, (DWORD)wmod->load_addr,
(DWORD)wmod->load_addr + wmod->size,
DEBUG_GetModuleType(wmod->type), DEBUG_GetDbgInfo(wmod->dil));
@ -626,12 +629,11 @@ void DEBUG_WalkModules(void)
if (!DEBUG_CurrProcess)
{
DEBUG_Printf(DBG_CHN_MESG,
"Cannot walk classes while no process is loaded\n");
DEBUG_Printf("Cannot walk classes while no process is loaded\n");
return;
}
DEBUG_Printf(DBG_CHN_MESG, "Address\t\t\tModule\tName\n");
DEBUG_Printf("Address\t\t\tModule\tName\n");
amod = DBG_alloc(sizeof(DBG_MODULE*) * DEBUG_CurrProcess->num_modules);
if (!amod) return;
@ -643,7 +645,7 @@ void DEBUG_WalkModules(void)
for (i = 0; i < DEBUG_CurrProcess->num_modules; i++) {
if (amod[i]->type == DMT_ELF) continue;
DEBUG_Printf(DBG_CHN_MESG, "0x%08lx-%08lx\t(%s)\t%s\n",
DEBUG_Printf("0x%08lx-%08lx\t(%s)\t%s\n",
(DWORD)amod[i]->load_addr,
(DWORD)amod[i]->load_addr + amod[i]->size,
DEBUG_GetModuleType(amod[i]->type), amod[i]->module_name);

View File

@ -42,9 +42,13 @@
#define PATH_MAX MAX_PATH
#endif
#include "wine/exception.h"
#include "wine/debug.h"
#include "excpt.h"
#include "debugger.h"
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
WINE_DECLARE_DEBUG_CHANNEL(winedbg_msc);
#define MAX_PATHNAME_LEN 1024
typedef struct
@ -251,7 +255,7 @@ static enum DbgInfoLoad DEBUG_ProcessCoff( DBG_MODULE *module, LPBYTE root )
DBG_VALUE new_value;
enum DbgInfoLoad dil = DIL_ERROR;
DEBUG_Printf(DBG_CHN_TRACE, "Processing COFF symbols...\n");
WINE_TRACE("Processing COFF symbols...\n");
assert(sizeof(IMAGE_SYMBOL) == IMAGE_SIZEOF_SYMBOL);
assert(sizeof(IMAGE_LINENUMBER) == IMAGE_SIZEOF_LINENUMBER);
@ -278,7 +282,7 @@ static enum DbgInfoLoad DEBUG_ProcessCoff( DBG_MODULE *module, LPBYTE root )
if( coff_sym->StorageClass == IMAGE_SYM_CLASS_FILE )
{
curr_file_idx = DEBUG_AddCoffFile( &coff_files, (char *) (coff_sym + 1) );
DEBUG_Printf(DBG_CHN_TRACE,"New file %s\n", coff_files.files[curr_file_idx].filename);
WINE_TRACE("New file %s\n", coff_files.files[curr_file_idx].filename);
i += naux;
continue;
}
@ -286,7 +290,7 @@ static enum DbgInfoLoad DEBUG_ProcessCoff( DBG_MODULE *module, LPBYTE root )
if (curr_file_idx < 0) {
assert(coff_files.nfiles == 0 && coff_files.nfiles_alloc == 0);
curr_file_idx = DEBUG_AddCoffFile( &coff_files, "<none>" );
DEBUG_Printf(DBG_CHN_TRACE,"New file %s\n", coff_files.files[curr_file_idx].filename);
WINE_TRACE("New file %s\n", coff_files.files[curr_file_idx].filename);
}
/*
@ -309,22 +313,22 @@ static enum DbgInfoLoad DEBUG_ProcessCoff( DBG_MODULE *module, LPBYTE root )
*/
const char* fn = coff_files.files[curr_file_idx].filename;
#ifdef MORE_DBG
DEBUG_Printf(DBG_CHN_TRACE, "Duplicating sect from %s: %lx %x %x %d %d\n",
coff_files.files[curr_file_idx].filename,
aux->Section.Length,
aux->Section.NumberOfRelocations,
aux->Section.NumberOfLinenumbers,
aux->Section.Number,
aux->Section.Selection);
DEBUG_Printf(DBG_CHN_TRACE, "More sect %d %s %08lx %d %d %d\n",
coff_sym->SectionNumber,
DEBUG_GetCoffName( coff_sym, coff_strtab ),
coff_sym->Value,
coff_sym->Type,
coff_sym->StorageClass,
coff_sym->NumberOfAuxSymbols);
#endif
WINE_TRACE_(winedbg_msc)(
"Duplicating sect from %s: %lx %x %x %d %d\n",
coff_files.files[curr_file_idx].filename,
aux->Section.Length,
aux->Section.NumberOfRelocations,
aux->Section.NumberOfLinenumbers,
aux->Section.Number,
aux->Section.Selection);
WINE_TRACE_(winedbg_msc)(
"More sect %d %s %08lx %d %d %d\n",
coff_sym->SectionNumber,
DEBUG_GetCoffName( coff_sym, coff_strtab ),
coff_sym->Value,
coff_sym->Type,
coff_sym->StorageClass,
coff_sym->NumberOfAuxSymbols);
/*
* Duplicate the file entry. We have no way to describe
@ -332,18 +336,17 @@ static enum DbgInfoLoad DEBUG_ProcessCoff( DBG_MODULE *module, LPBYTE root )
*/
DEBUG_AddCoffFile( &coff_files, fn );
}
#ifdef MORE_DBG
else
{
DEBUG_Printf(DBG_CHN_TRACE, "New text sect from %s: %lx %x %x %d %d\n",
coff_files.files[curr_file_idx].filename,
aux->Section.Length,
aux->Section.NumberOfRelocations,
aux->Section.NumberOfLinenumbers,
aux->Section.Number,
aux->Section.Selection);
WINE_TRACE_(winedbg_msc)(
"New text sect from %s: %lx %x %x %d %d\n",
coff_files.files[curr_file_idx].filename,
aux->Section.Length,
aux->Section.NumberOfRelocations,
aux->Section.NumberOfLinenumbers,
aux->Section.Number,
aux->Section.Selection);
}
#endif
if( coff_files.files[curr_file_idx].startaddr > coff_sym->Value )
{
@ -377,9 +380,7 @@ static enum DbgInfoLoad DEBUG_ProcessCoff( DBG_MODULE *module, LPBYTE root )
new_value.addr.seg = 0;
new_value.addr.off = (int) ((char *)module->load_addr + base + coff_sym->Value);
#ifdef MORE_DBG
DEBUG_Printf(DBG_CHN_TRACE,"\tAdding static symbol %s\n", nampnt);
#endif
WINE_TRACE_(winedbg_msc)("\tAdding static symbol %s\n", nampnt);
/* FIXME: was adding symbol to this_file ??? */
DEBUG_AddCoffSymbol( &coff_files.files[curr_file_idx],
@ -401,12 +402,10 @@ static enum DbgInfoLoad DEBUG_ProcessCoff( DBG_MODULE *module, LPBYTE root )
new_value.addr.seg = 0;
new_value.addr.off = (int) ((char *)module->load_addr + base + coff_sym->Value);
#ifdef MORE_DBG
DEBUG_Printf(DBG_CHN_TRACE, "%d: %lx %s\n", i, new_value.addr.off, nampnt);
DEBUG_Printf(DBG_CHN_TRACE,"\tAdding global symbol %s (sect=%s)\n",
nampnt, MSC_INFO(module)->sectp[coff_sym->SectionNumber - 1].Name);
#endif
WINE_TRACE_(winedbg_msc)("%d: %lx %s\n", i, new_value.addr.off, nampnt);
WINE_TRACE_(winedbg_msc)(
"\tAdding global symbol %s (sect=%s)\n",
nampnt, module->msc_info->sectp[coff_sym->SectionNumber - 1].Name);
/*
* Now we need to figure out which file this guy belongs to.
@ -443,11 +442,8 @@ static enum DbgInfoLoad DEBUG_ProcessCoff( DBG_MODULE *module, LPBYTE root )
new_value.addr.seg = 0;
new_value.addr.off = (int) ((char *)module->load_addr + base + coff_sym->Value);
#ifdef MORE_DBG
DEBUG_Printf(DBG_CHN_TRACE, "%d: %lx %s\n", i, new_value.addr.off, nampnt);
DEBUG_Printf(DBG_CHN_TRACE,"\tAdding global data symbol %s\n", nampnt);
#endif
WINE_TRACE_(winedbg_msc)("%d: %lx %s\n", i, new_value.addr.off, nampnt);
WINE_TRACE_(winedbg_msc)("\tAdding global data symbol %s\n", nampnt);
/*
* Now we need to figure out which file this guy belongs to.
@ -468,11 +464,10 @@ static enum DbgInfoLoad DEBUG_ProcessCoff( DBG_MODULE *module, LPBYTE root )
continue;
}
#ifdef MORE_DBG
DEBUG_Printf(DBG_CHN_TRACE,"Skipping unknown entry '%s' %d %d %d\n",
DEBUG_GetCoffName( coff_sym, coff_strtab ),
coff_sym->StorageClass, coff_sym->SectionNumber, naux);
#endif
WINE_TRACE_(winedbg_msc)(
"Skipping unknown entry '%s' %d %d %d\n",
DEBUG_GetCoffName( coff_sym, coff_strtab ),
coff_sym->StorageClass, coff_sym->SectionNumber, naux);
/*
* For now, skip past the aux entries.
@ -1261,7 +1256,7 @@ numeric_leaf( int *value, unsigned short int *leaf )
break;
default:
DEBUG_Printf( DBG_CHN_MESG, "Unknown numeric leaf type %04x\n", type );
DEBUG_Printf("Unknown numeric leaf type %04x\n", type);
*value = 0;
break;
}
@ -1408,8 +1403,8 @@ DEBUG_AddCVType_EnumFieldList( unsigned int typeno, unsigned char *list, int len
}
default:
DEBUG_Printf( DBG_CHN_MESG, "Unhandled type %04x in ENUM field list\n",
type->generic.id );
DEBUG_Printf("Unhandled type %04x in ENUM field list\n",
type->generic.id);
return FALSE;
}
}
@ -1580,8 +1575,8 @@ DEBUG_AddCVType_StructFieldList( unsigned int typeno, unsigned char *list, int l
break;
default:
DEBUG_Printf( DBG_CHN_MESG, "Unhandled type %04x in STRUCT field list\n",
type->generic.id );
DEBUG_Printf("Unhandled type %04x in STRUCT field list\n",
type->generic.id);
return FALSE;
}
}
@ -2570,7 +2565,7 @@ static enum DbgInfoLoad DEBUG_ProcessPDBFile( DBG_MODULE *module,
int header_size = 0;
char *modimage, *file;
DEBUG_Printf( DBG_CHN_TRACE, "Processing PDB file %s\n", filename );
WINE_TRACE("Processing PDB file %s\n", filename);
/*
* Open and map() .PDB file
@ -2578,7 +2573,7 @@ static enum DbgInfoLoad DEBUG_ProcessPDBFile( DBG_MODULE *module,
image = DEBUG_MapDebugInfoFile( filename, 0, 0, &hFile, &hMap );
if ( !image )
{
DEBUG_Printf( DBG_CHN_ERR, "-Unable to peruse .PDB file %s\n", filename );
WINE_ERR("-Unable to peruse .PDB file %s\n", filename);
goto leave;
}
@ -2597,9 +2592,7 @@ static enum DbgInfoLoad DEBUG_ProcessPDBFile( DBG_MODULE *module,
if ( !root )
{
DEBUG_Printf( DBG_CHN_ERR,
"-Unable to get root from .PDB file %s\n",
filename );
WINE_ERR("-Unable to get root from .PDB file %s\n", filename);
goto leave;
}
@ -2615,7 +2608,7 @@ static enum DbgInfoLoad DEBUG_ProcessPDBFile( DBG_MODULE *module,
case 19970604: /* VC 6.0 */
break;
default:
DEBUG_Printf( DBG_CHN_ERR, "-Unknown root block version %ld\n", root->version );
WINE_ERR("-Unknown root block version %ld\n", root->version);
}
switch ( types.version )
@ -2625,7 +2618,7 @@ static enum DbgInfoLoad DEBUG_ProcessPDBFile( DBG_MODULE *module,
case 19961031: /* VC 5.0 / 6.0 */
break;
default:
DEBUG_Printf( DBG_CHN_ERR, "-Unknown type info version %ld\n", types.version );
WINE_ERR("-Unknown type info version %ld\n", types.version);
}
switch ( symbols.version )
@ -2635,7 +2628,7 @@ static enum DbgInfoLoad DEBUG_ProcessPDBFile( DBG_MODULE *module,
case 19970606: /* VC 6.0 */
break;
default:
DEBUG_Printf( DBG_CHN_ERR, "-Unknown symbol info version %ld\n", symbols.version );
WINE_ERR("-Unknown symbol info version %ld\n", symbols.version);
}
@ -2645,8 +2638,8 @@ static enum DbgInfoLoad DEBUG_ProcessPDBFile( DBG_MODULE *module,
if ( root->TimeDateStamp != timestamp )
{
DEBUG_Printf( DBG_CHN_ERR, "-Wrong time stamp of .PDB file %s (0x%08lx, 0x%08lx)\n",
filename, root->TimeDateStamp, timestamp );
WINE_ERR("-Wrong time stamp of .PDB file %s (0x%08lx, 0x%08lx)\n",
filename, root->TimeDateStamp, timestamp );
}
/*
@ -2662,7 +2655,7 @@ static enum DbgInfoLoad DEBUG_ProcessPDBFile( DBG_MODULE *module,
if ( symbols.pdbimport_size )
{
/* FIXME */
DEBUG_Printf(DBG_CHN_ERR, "-Type server .PDB imports ignored!\n" );
WINE_ERR("-Type server .PDB imports ignored!\n");
}
/*
@ -2855,8 +2848,8 @@ static enum DbgInfoLoad DEBUG_ProcessCodeView( DBG_MODULE *module, LPBYTE root )
}
default:
DEBUG_Printf( DBG_CHN_ERR, "Unknown CODEVIEW signature %08lX in module %s\n",
cv->dwSignature, module->module_name );
WINE_ERR("Unknown CODEVIEW signature %08lX in module %s\n",
cv->dwSignature, module->module_name );
break;
}
@ -2909,7 +2902,7 @@ static enum DbgInfoLoad DEBUG_ProcessDebugDirectory( DBG_MODULE *module,
*/
for ( i = 0; i < nDbg; i++ )
if ( dbg[i].Type == IMAGE_DEBUG_TYPE_FPO )
DEBUG_Printf(DBG_CHN_MESG, "This guy has FPO information\n");
DEBUG_Printf("This guy has FPO information\n");
#define FRAME_FPO 0
#define FRAME_TRAP 1
@ -2952,13 +2945,12 @@ static enum DbgInfoLoad DEBUG_ProcessDBGFile( DBG_MODULE *module,
PIMAGE_DEBUG_DIRECTORY dbg;
int nDbg;
DEBUG_Printf( DBG_CHN_TRACE, "Processing DBG file %s\n", filename );
WINE_TRACE("Processing DBG file %s\n", filename);
file_map = DEBUG_MapDebugInfoFile( filename, 0, 0, &hFile, &hMap );
if ( !file_map )
{
DEBUG_Printf( DBG_CHN_ERR, "-Unable to peruse .DBG file %s\n", filename );
WINE_ERR("-Unable to peruse .DBG file %s\n", filename);
goto leave;
}
@ -2966,8 +2958,7 @@ static enum DbgInfoLoad DEBUG_ProcessDBGFile( DBG_MODULE *module,
if ( hdr->TimeDateStamp != timestamp )
{
DEBUG_Printf( DBG_CHN_ERR, "Warning - %s has incorrect internal timestamp\n",
filename );
WINE_ERR("Warning - %s has incorrect internal timestamp\n", filename);
/*
* Well, sometimes this happens to DBG files which ARE REALLY the right .DBG
* files but nonetheless this check fails. Anyway, WINDBG (debugger for
@ -3054,8 +3045,8 @@ enum DbgInfoLoad DEBUG_RegisterMSCDebugInfo( DBG_MODULE *module, HANDLE hFile,
if ( nDbg != 1 || dbg->Type != IMAGE_DEBUG_TYPE_MISC
|| misc->DataType != IMAGE_DEBUG_MISC_EXENAME )
{
DEBUG_Printf( DBG_CHN_ERR, "-Debug info stripped, but no .DBG file in module %s\n",
module->module_name );
WINE_ERR("-Debug info stripped, but no .DBG file in module %s\n",
module->module_name );
goto leave;
}
@ -3141,12 +3132,11 @@ enum DbgInfoLoad DEBUG_RegisterStabsDebugInfo(DBG_MODULE* module, HANDLE hFile,
s1 + stabsize, stabstrsize)) {
dil = DEBUG_ParseStabs(s1, 0, 0, stabsize, stabsize, stabstrsize);
} else {
DEBUG_Printf(DBG_CHN_MESG, "couldn't read data block\n");
DEBUG_Printf("couldn't read data block\n");
}
DBG_free(s1);
} else {
DEBUG_Printf(DBG_CHN_MESG, "couldn't alloc %d bytes\n",
stabsize + stabstrsize);
DEBUG_Printf("couldn't alloc %d bytes\n", stabsize + stabstrsize);
}
} else {
dil = DIL_NOINFO;

View File

@ -88,40 +88,40 @@ static char *DEBUG_Flags( DWORD flag, char *buf )
*/
void DEBUG_InfoRegisters(const CONTEXT* ctx)
{
DEBUG_Printf(DBG_CHN_MESG,"Register dump:\n");
DEBUG_Printf("Register dump:\n");
#ifdef __i386__
/* First get the segment registers out of the way */
DEBUG_Printf( DBG_CHN_MESG," CS:%04x SS:%04x DS:%04x ES:%04x FS:%04x GS:%04x",
(WORD)ctx->SegCs, (WORD)ctx->SegSs,
(WORD)ctx->SegDs, (WORD)ctx->SegEs,
(WORD)ctx->SegFs, (WORD)ctx->SegGs );
DEBUG_Printf(" CS:%04x SS:%04x DS:%04x ES:%04x FS:%04x GS:%04x",
(WORD)ctx->SegCs, (WORD)ctx->SegSs,
(WORD)ctx->SegDs, (WORD)ctx->SegEs,
(WORD)ctx->SegFs, (WORD)ctx->SegGs);
if (DEBUG_CurrThread->dbg_mode != MODE_32)
{
char flag[33];
DEBUG_Printf( DBG_CHN_MESG,"\n IP:%04x SP:%04x BP:%04x FLAGS:%04x(%s)\n",
LOWORD(ctx->Eip), LOWORD(ctx->Esp),
LOWORD(ctx->Ebp), LOWORD(ctx->EFlags),
DEBUG_Flags(LOWORD(ctx->EFlags), flag));
DEBUG_Printf( DBG_CHN_MESG," AX:%04x BX:%04x CX:%04x DX:%04x SI:%04x DI:%04x\n",
LOWORD(ctx->Eax), LOWORD(ctx->Ebx),
LOWORD(ctx->Ecx), LOWORD(ctx->Edx),
LOWORD(ctx->Esi), LOWORD(ctx->Edi) );
DEBUG_Printf("\n IP:%04x SP:%04x BP:%04x FLAGS:%04x(%s)\n",
LOWORD(ctx->Eip), LOWORD(ctx->Esp),
LOWORD(ctx->Ebp), LOWORD(ctx->EFlags),
DEBUG_Flags(LOWORD(ctx->EFlags), flag));
DEBUG_Printf(" AX:%04x BX:%04x CX:%04x DX:%04x SI:%04x DI:%04x\n",
LOWORD(ctx->Eax), LOWORD(ctx->Ebx),
LOWORD(ctx->Ecx), LOWORD(ctx->Edx),
LOWORD(ctx->Esi), LOWORD(ctx->Edi));
}
else /* 32-bit mode */
{
char flag[33];
DEBUG_Printf( DBG_CHN_MESG, "\n EIP:%08lx ESP:%08lx EBP:%08lx EFLAGS:%08lx(%s)\n",
ctx->Eip, ctx->Esp,
ctx->Ebp, ctx->EFlags,
DEBUG_Flags(ctx->EFlags, flag));
DEBUG_Printf( DBG_CHN_MESG, " EAX:%08lx EBX:%08lx ECX:%08lx EDX:%08lx\n",
ctx->Eax, ctx->Ebx,
ctx->Ecx, ctx->Edx );
DEBUG_Printf( DBG_CHN_MESG, " ESI:%08lx EDI:%08lx\n",
ctx->Esi, ctx->Edi );
DEBUG_Printf("\n EIP:%08lx ESP:%08lx EBP:%08lx EFLAGS:%08lx(%s)\n",
ctx->Eip, ctx->Esp,
ctx->Ebp, ctx->EFlags,
DEBUG_Flags(ctx->EFlags, flag));
DEBUG_Printf(" EAX:%08lx EBX:%08lx ECX:%08lx EDX:%08lx\n",
ctx->Eax, ctx->Ebx,
ctx->Ecx, ctx->Edx );
DEBUG_Printf(" ESI:%08lx EDI:%08lx\n",
ctx->Esi, ctx->Edi );
}
#endif
}
@ -145,8 +145,8 @@ BOOL DEBUG_ValidateRegisters(void)
/* Check that a selector is a valid ring-3 LDT selector, or a NULL selector */
#define CHECK_SEG(seg,name) \
if (((seg) & ~3) && ((((seg) & 7) != 7) || !DEBUG_IsSelector(seg))) { \
DEBUG_Printf( DBG_CHN_MESG, "*** Invalid value for %s register: %04x\n", \
(name), (WORD)(seg) ); \
DEBUG_Printf("*** Invalid value for %s register: %04x\n", \
(name), (WORD)(seg) ); \
return FALSE; \
}
@ -164,14 +164,14 @@ BOOL DEBUG_ValidateRegisters(void)
if (!(DEBUG_context.SegCs & ~3))
{
DEBUG_Printf( DBG_CHN_MESG, "*** Invalid value for CS register: %04x\n",
(WORD)DEBUG_context.SegCs );
DEBUG_Printf("*** Invalid value for CS register: %04x\n",
(WORD)DEBUG_context.SegCs );
return FALSE;
}
if (!(DEBUG_context.SegSs & ~3))
{
DEBUG_Printf( DBG_CHN_MESG, "*** Invalid value for SS register: %04x\n",
(WORD)DEBUG_context.SegSs );
DEBUG_Printf("*** Invalid value for SS register: %04x\n",
(WORD)DEBUG_context.SegSs );
return FALSE;
}

View File

@ -68,12 +68,12 @@ DEBUG_ShowDir(void)
{
struct searchlist * sl;
DEBUG_Printf(DBG_CHN_MESG,"Search list :\n");
DEBUG_Printf("Search list :\n");
for(sl = listhead; sl; sl = sl->next)
{
DEBUG_Printf(DBG_CHN_MESG, "\t%s\n", sl->path);
DEBUG_Printf("\t%s\n", sl->path);
}
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
}
void
@ -250,7 +250,7 @@ DEBUG_DisplaySource(char * sourcefile, int start, int end)
ol->nlines = 0;
ol->linelist = NULL;
ofiles = ol;
DEBUG_Printf(DBG_CHN_MESG,"Unable to open file %s\n", tmppath);
DEBUG_Printf("Unable to open file %s\n", tmppath);
return FALSE;
}
}
@ -329,7 +329,7 @@ DEBUG_DisplaySource(char * sourcefile, int start, int end)
memcpy(&buffer, addr + ol->linelist[i],
(ol->linelist[i+1] - ol->linelist[i]) - 1);
}
DEBUG_Printf(DBG_CHN_MESG,"%d\t%s\n", i + 1, buffer);
DEBUG_Printf("%d\t%s\n", i + 1, buffer);
}
DEBUG_UnmapFile(addr, hMap);
@ -355,7 +355,7 @@ DEBUG_List(struct list_id * source1, struct list_id * source2,
&& source2->sourcefile != NULL
&& strcmp(source1->sourcefile, source2->sourcefile) != 0 )
{
DEBUG_Printf(DBG_CHN_MESG, "Ambiguous source file specification.\n");
DEBUG_Printf("Ambiguous source file specification.\n");
return;
}
@ -379,7 +379,7 @@ DEBUG_List(struct list_id * source1, struct list_id * source2,
if( sourcefile == NULL )
{
DEBUG_Printf(DBG_CHN_MESG, "No source file specified.\n");
DEBUG_Printf("No source file specified.\n");
return;
}
@ -442,14 +442,14 @@ BOOL DEBUG_DisassembleInstruction(DBG_ADDR *addr)
BOOL ret = TRUE;
DEBUG_PrintAddress(addr, DEBUG_CurrThread->dbg_mode, TRUE);
DEBUG_Printf(DBG_CHN_MESG, ": ");
DEBUG_Printf(": ");
if (!DEBUG_READ_MEM_VERBOSE((void*)DEBUG_ToLinear(addr), &ch, sizeof(ch))) {
DEBUG_Printf(DBG_CHN_MESG, "-- no code --");
DEBUG_Printf("-- no code --");
ret = FALSE;
} else {
DEBUG_Disasm(addr, TRUE);
}
DEBUG_Printf(DBG_CHN_MESG,"\n");
DEBUG_Printf("\n");
return ret;
}

View File

@ -68,6 +68,11 @@
#endif
#endif
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
WINE_DECLARE_DEBUG_CHANNEL(winedbg_stabs);
#ifndef N_UNDF
#define N_UNDF 0x00
#endif
@ -230,7 +235,7 @@ DEBUG_FileSubNr2StabEnum(int filenr, int subnr)
{
struct datatype** ret;
/* DEBUG_Printf(DBG_CHN_MESG, "creating type id for (%d,%d)\n", filenr, subnr); */
WINE_TRACE_(winedbg_stabs)("creating type id for (%d,%d)\n", filenr, subnr);
/* FIXME: I could perhaps create a dummy include_def for each compilation
* unit which would allow not to handle those two cases separately
@ -261,7 +266,7 @@ DEBUG_FileSubNr2StabEnum(int filenr, int subnr)
}
ret = &idef->vector[subnr];
}
/* DEBUG_Printf(DBG_CHN_MESG,"(%d,%d) is %d\n",filenr,subnr,ret); */
WINE_TRACE_(winedbg_stabs)("(%d,%d) is %p\n",filenr,subnr,ret);
return ret;
}
@ -606,7 +611,7 @@ static int DEBUG_PTS_ReadTypedef(struct ParseTypedefData* ptd, const char* typen
if (*++ptd->ptr == 's') {
ptd->ptr++;
if (DEBUG_PTS_ReadNum(ptd, &sz) == -1) {
DEBUG_Printf(DBG_CHN_MESG, "Not an attribute... NIY\n");
WINE_ERR_(winedbg_stabs)("Not an attribute... NIY\n");
ptd->ptr -= 2;
return -1;
}
@ -664,8 +669,7 @@ static int DEBUG_PTS_ReadTypedef(struct ParseTypedefData* ptd, const char* typen
*DEBUG_FileSubNr2StabEnum(filenr1, subnr1) = new_dt;
} else {
if (DEBUG_GetType(dt1) != DT_STRUCT) {
DEBUG_Printf(DBG_CHN_MESG,
"Forward declaration is not an aggregate\n");
WINE_ERR_(winedbg_stabs)("Forward declaration is not an aggregate\n");
return -1;
}
@ -780,7 +784,7 @@ static int DEBUG_PTS_ReadTypedef(struct ParseTypedefData* ptd, const char* typen
}
break;
default:
DEBUG_Printf(DBG_CHN_MESG, "Unknown type '%c'\n", ptd->ptr[-1]);
WINE_ERR_(winedbg_stabs)("Unknown type '%c'\n", ptd->ptr[-1]);
return -1;
}
}
@ -796,13 +800,11 @@ static int DEBUG_PTS_ReadTypedef(struct ParseTypedefData* ptd, const char* typen
*DEBUG_FileSubNr2StabEnum(filenr1, subnr1) = *ret_dt = new_dt;
#if 0
if (typename) {
DEBUG_Printf(DBG_CHN_MESG, "Adding (%d,%d) %s => ", filenr1, subnr1, typename);
if (typename && WINE_TRACE_ON(winedbg_stabs)) {
DEBUG_Printf("Adding (%d,%d) %s => ", filenr1, subnr1, typename);
DEBUG_PrintTypeCast(new_dt);
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
}
#endif
return 0;
}
@ -836,20 +838,20 @@ static int DEBUG_ParseTypedefStab(char* ptr, const char* typename)
if (ret == -1 || *ptd.ptr) {
#ifdef PTS_DEBUG
int i;
DEBUG_Printf(DBG_CHN_MESG, "Failure on %s\n", ptr);
WINE_TRACE_(winedbg_stabs)("Failure on %s\n", ptr);
if (ret == -1)
{
for (i = 0; i < ptd.err_idx; i++)
{
DEBUG_Printf(DBG_CHN_MESG, "[%d]: line %d => %s\n",
i, ptd.errors[i].line, ptd.errors[i].ptr);
WINE_TRACE_(winedbg_stabs)("[%d]: line %d => %s\n",
i, ptd.errors[i].line, ptd.errors[i].ptr);
}
}
else
DEBUG_Printf(DBG_CHN_MESG, "[0]: => %s\n", ptd.ptr);
WINE_TRACE_(winedbg_stabs)("[0]: => %s\n", ptd.ptr);
#else
DEBUG_Printf(DBG_CHN_MESG, "Failure on %s at %s\n", ptr, ptd.ptr);
WINE_ERR_(winedbg_stabs)("Failure on %s at %s\n", ptr, ptd.ptr);
#endif
return FALSE;
}
@ -988,7 +990,8 @@ enum DbgInfoLoad DEBUG_ParseStabs(char * addr, void *load_offset,
stab_strcpy(symname, sizeof(symname), ptr);
#ifdef __ELF__
new_value.addr.off = 0;
/* EPP used to be: new_value.addr.off = 0; */
new_value.addr.off = (unsigned long)load_offset + stab_ptr->n_value;
curr_sym = DEBUG_AddSymbol( symname, &new_value, currpath,
SYM_WINE | SYM_DATA | SYM_INVALID );
#else
@ -1197,17 +1200,15 @@ enum DbgInfoLoad DEBUG_ParseStabs(char * addr, void *load_offset,
*/
break;
default:
DEBUG_Printf(DBG_CHN_MESG, "Unknown stab type 0x%02x\n", stab_ptr->n_type);
WINE_ERR_(winedbg_stabs)("Unknown stab type 0x%02x\n", stab_ptr->n_type);
break;
}
stabbuff[0] = '\0';
#if 0
DEBUG_Printf(DBG_CHN_MESG, "0x%02x %x %s\n", stab_ptr->n_type,
(unsigned int) stab_ptr->n_value,
strs + (unsigned int) stab_ptr->n_un.n_name);
#endif
WINE_TRACE_(winedbg_stabs)("0x%02x %x %s\n", stab_ptr->n_type,
(unsigned int) stab_ptr->n_value,
strs + (unsigned int) stab_ptr->n_un.n_name);
}
DEBUG_FreeIncludes();
@ -1314,7 +1315,7 @@ enum DbgInfoLoad DEBUG_LoadElfStabs(DBG_MODULE* module)
int stabstrsect;
if (module->type != DMT_ELF || !module->elf_info) {
DEBUG_Printf(DBG_CHN_ERR, "Bad elf module '%s'\n", module->module_name);
WINE_ERR("Bad elf module '%s'\n", module->module_name);
return DIL_ERROR;
}
@ -1354,7 +1355,7 @@ enum DbgInfoLoad DEBUG_LoadElfStabs(DBG_MODULE* module)
}
if (stabsect == -1 || stabstrsect == -1) {
DEBUG_Printf(DBG_CHN_WARN, "No .stab section\n");
WINE_WARN("No .stab section\n");
goto leave;
}
@ -1370,7 +1371,7 @@ enum DbgInfoLoad DEBUG_LoadElfStabs(DBG_MODULE* module)
dil = DIL_LOADED;
} else {
dil = DIL_ERROR;
DEBUG_Printf(DBG_CHN_WARN, "Couldn't read correctly read stabs\n");
WINE_WARN("Couldn't read correctly read stabs\n");
goto leave;
}
@ -1420,7 +1421,7 @@ static enum DbgInfoLoad DEBUG_ProcessElfFile(const char* filename,
DWORD size;
DWORD delta;
DEBUG_Printf(DBG_CHN_TRACE, "Processing elf file '%s'\n", filename);
WINE_TRACE("Processing elf file '%s'\n", filename);
/* check that the file exists, and that the module hasn't been loaded yet */
if (stat(filename, &statbuf) == -1) goto leave;
@ -1486,7 +1487,7 @@ static enum DbgInfoLoad DEBUG_ProcessElfFile(const char* filename,
}
if ((module->elf_info = DBG_alloc(sizeof(ELF_DBG_INFO))) == NULL) {
DEBUG_Printf(DBG_CHN_ERR, "OOM\n");
WINE_ERR("OOM\n");
exit(0);
}
@ -1640,8 +1641,7 @@ enum DbgInfoLoad DEBUG_ReadExecutableDbgInfo(const char* exe_name)
if (dbg_hdr.r_brk) {
DBG_VALUE value;
DEBUG_Printf(DBG_CHN_TRACE, "Setting up a breakpoint on r_brk(%lx)\n",
(unsigned long)dbg_hdr.r_brk);
WINE_TRACE("Setting up a breakpoint on r_brk(%lx)\n", (unsigned long)dbg_hdr.r_brk);
DEBUG_SetBreakpoints(FALSE);
value.type = NULL;

View File

@ -76,7 +76,7 @@ void DEBUG_InfoStack(void)
value.addr.seg = DEBUG_context.SegSs;
value.addr.off = DEBUG_context.Esp;
DEBUG_Printf(DBG_CHN_MESG,"Stack dump:\n");
DEBUG_Printf("Stack dump:\n");
switch (DEBUG_GetSelectorType(value.addr.seg))
{
case MODE_32: /* 32-bit mode */
@ -88,9 +88,9 @@ void DEBUG_InfoStack(void)
DEBUG_ExamineMemory( &value, 24, 'w' );
break;
default:
DEBUG_Printf(DBG_CHN_MESG, "Bad segment (%ld)\n", value.addr.seg);
DEBUG_Printf("Bad segment (%ld)\n", value.addr.seg);
}
DEBUG_Printf(DBG_CHN_MESG,"\n");
DEBUG_Printf("\n");
#endif
}
@ -102,7 +102,7 @@ static void DEBUG_ForceFrame(DBG_ADDR *stack, DBG_ADDR *code, int frameno, enum
frames = (struct bt_info *)DBG_realloc(frames,
nframe*sizeof(struct bt_info));
if (noisy)
DEBUG_Printf(DBG_CHN_MESG,"%s%d ", (theframe == curr_frame ? "=>" : " "),
DEBUG_Printf("%s%d ", (theframe == curr_frame ? "=>" : " "),
frameno);
frames[theframe].cs = code->seg;
frames[theframe].eip = code->off;
@ -115,8 +115,8 @@ static void DEBUG_ForceFrame(DBG_ADDR *stack, DBG_ADDR *code, int frameno, enum
frames[theframe].ss = stack->seg;
frames[theframe].ebp = stack->off;
if (noisy) {
DEBUG_Printf( DBG_CHN_MESG, (mode != MODE_32) ? " (bp=%04lx%s)\n" : " (ebp=%08lx%s)\n",
stack->off, caveat?caveat:"" );
DEBUG_Printf((mode != MODE_32) ? " (bp=%04lx%s)\n" : " (ebp=%08lx%s)\n",
stack->off, caveat ? caveat : "");
}
}
@ -205,7 +205,7 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
int copy_curr_frame = 0;
struct bt_info* copy_frames = NULL;
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "Backtrace:\n" );
if (noisy) DEBUG_Printf("Backtrace:\n");
if (tid == DEBUG_CurrTid)
{
@ -221,7 +221,7 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
if (!thread)
{
DEBUG_Printf( DBG_CHN_MESG, "Unknown thread id (0x%08lx) in current process\n", tid);
DEBUG_Printf("Unknown thread id (0x%08lx) in current process\n", tid);
return;
}
memset(&ctx, 0, sizeof(ctx));
@ -230,7 +230,7 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
if ( SuspendThread( thread->handle ) == -1 ||
!GetThreadContext( thread->handle, &ctx ))
{
DEBUG_Printf( DBG_CHN_MESG, "Can't get context for thread id (0x%08lx) in current process\n", tid);
DEBUG_Printf("Can't get context for thread id (0x%08lx) in current process\n", tid);
return;
}
/* need to avoid trashing stack frame for current thread */
@ -280,7 +280,7 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
is16 = TRUE;
break;
default:
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "Bad segment '%x'\n", ss);
if (noisy) DEBUG_Printf("Bad segment '%x'\n", ss);
return;
}
@ -289,14 +289,14 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
*/
cur_switch = (DWORD)thread->teb + OFFSET_OF(TEB, cur_stack);
if (!DEBUG_READ_MEM((void*)cur_switch, &next_switch, sizeof(next_switch))) {
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "Can't read TEB:cur_stack\n");
if (noisy) DEBUG_Printf("Can't read TEB:cur_stack\n");
return;
}
if (is16) {
if (!DEBUG_READ_MEM((void*)next_switch, &frame32, sizeof(STACK32FRAME))) {
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "Bad stack frame 0x%08lx\n",
(unsigned long)(STACK32FRAME*)next_switch );
if (noisy) DEBUG_Printf("Bad stack frame 0x%08lx\n",
(unsigned long)(STACK32FRAME*)next_switch );
return;
}
cur_switch = (DWORD)frame32.frame16;
@ -308,8 +308,8 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
p = DEBUG_ToLinear(&tmp);
if (!DEBUG_READ_MEM((void*)p, &frame16, sizeof(STACK16FRAME))) {
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "Bad stack frame 0x%08lx\n",
(unsigned long)(STACK16FRAME*)p );
if (noisy) DEBUG_Printf("Bad stack frame 0x%08lx\n",
(unsigned long)(STACK16FRAME*)p );
return;
}
cur_switch = (DWORD)frame16.frame32;
@ -330,8 +330,8 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
if (is16) {
if (!DEBUG_READ_MEM((void*)next_switch, &frame32, sizeof(STACK32FRAME))) {
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "Bad stack frame 0x%08lx\n",
(unsigned long)(STACK32FRAME*)next_switch );
if (noisy) DEBUG_Printf("Bad stack frame 0x%08lx\n",
(unsigned long)(STACK32FRAME*)next_switch );
return;
}
@ -349,8 +349,8 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
p = DEBUG_ToLinear(&tmp);
if (!DEBUG_READ_MEM((void*)p, &frame16, sizeof(STACK16FRAME))) {
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "Bad stack frame 0x%08lx\n",
(unsigned long)(STACK16FRAME*)p );
if (noisy) DEBUG_Printf("Bad stack frame 0x%08lx\n",
(unsigned long)(STACK16FRAME*)p );
return;
}
cur_switch = (DWORD)frame16.frame32;
@ -364,8 +364,8 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
p = DEBUG_ToLinear(&tmp);
if (!DEBUG_READ_MEM((void*)p, &frame16, sizeof(STACK16FRAME))) {
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "Bad stack frame 0x%08lx\n",
(unsigned long)(STACK16FRAME*)p );
if (noisy) DEBUG_Printf("Bad stack frame 0x%08lx\n",
(unsigned long)(STACK16FRAME*)p );
return;
}
@ -379,8 +379,8 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
next_switch = cur_switch;
if (!DEBUG_READ_MEM((void*)next_switch, &frame32, sizeof(STACK32FRAME))) {
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "Bad stack frame 0x%08lx\n",
(unsigned long)(STACK32FRAME*)next_switch );
if (noisy) DEBUG_Printf("Bad stack frame 0x%08lx\n",
(unsigned long)(STACK32FRAME*)next_switch );
return;
}
cur_switch = (DWORD)frame32.frame16;
@ -399,7 +399,7 @@ void DEBUG_BackTrace(DWORD tid, BOOL noisy)
: DEBUG_Frame32( &addr, &cs, ++frameno, noisy);
}
}
if (noisy) DEBUG_Printf( DBG_CHN_MESG, "\n" );
if (noisy) DEBUG_Printf("\n");
if (tid != DEBUG_CurrTid)
{

View File

@ -34,6 +34,9 @@
#endif
#include "debugger.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
#define NR_TYPE_HASH 521
@ -368,8 +371,7 @@ DEBUG_GetExprValue(const DBG_VALUE* _value, const char** format)
case DT_BASIC:
if (value.type->un.basic.basic_size > sizeof(rtn)) {
DEBUG_Printf(DBG_CHN_ERR, "Size too large (%d)\n",
value.type->un.basic.basic_size);
WINE_ERR("Size too large (%d)\n", value.type->un.basic.basic_size);
return 0;
}
/* FIXME: following code implies i386 byte ordering */
@ -576,11 +578,11 @@ int
DEBUG_CopyFieldlist(struct datatype * dt, struct datatype * dt2)
{
if (!(dt->type == dt2->type && ((dt->type == DT_STRUCT) || (dt->type == DT_ENUM)))) {
DEBUG_Printf(DBG_CHN_MESG, "Error: Copyfield list mismatch (%d<>%d): ", dt->type, dt2->type);
DEBUG_Printf("Error: Copyfield list mismatch (%d<>%d): ", dt->type, dt2->type);
DEBUG_PrintTypeCast(dt);
DEBUG_Printf(DBG_CHN_MESG, " ");
DEBUG_Printf(" ");
DEBUG_PrintTypeCast(dt2);
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
return FALSE;
}
@ -750,7 +752,7 @@ int DEBUG_GetObjectSize(struct datatype * dt)
case DT_FUNC:
assert(FALSE);
default:
DEBUG_Printf(DBG_CHN_ERR, "Unknown type???\n");
WINE_ERR("Unknown type???\n");
break;
}
return 0;
@ -814,7 +816,7 @@ DEBUG_Print( const DBG_VALUE *value, int count, char format, int level )
if (count != 1)
{
DEBUG_Printf( DBG_CHN_MESG, "Count other than 1 is meaningless in 'print' command\n" );
DEBUG_Printf("Count other than 1 is meaningless in 'print' command\n");
return;
}
@ -822,8 +824,8 @@ DEBUG_Print( const DBG_VALUE *value, int count, char format, int level )
{
/* No type, just print the addr value */
if (value->addr.seg && (value->addr.seg != 0xffffffff))
DEBUG_nchar += DEBUG_Printf( DBG_CHN_MESG, "0x%04lx: ", value->addr.seg );
DEBUG_nchar += DEBUG_Printf( DBG_CHN_MESG, "0x%08lx", value->addr.off );
DEBUG_nchar += DEBUG_Printf("0x%04lx: ", value->addr.seg);
DEBUG_nchar += DEBUG_Printf("0x%08lx", value->addr.off);
goto leave;
}
@ -834,13 +836,13 @@ DEBUG_Print( const DBG_VALUE *value, int count, char format, int level )
if( DEBUG_nchar > DEBUG_maxchar )
{
DEBUG_Printf(DBG_CHN_MESG, "...");
DEBUG_Printf("...");
goto leave;
}
if( format == 'i' || format == 's' || format == 'w' || format == 'b' || format == 'g')
{
DEBUG_Printf( DBG_CHN_MESG, "Format specifier '%c' is meaningless in 'print' command\n", format );
DEBUG_Printf("Format specifier '%c' is meaningless in 'print' command\n", format);
format = '\0';
}
@ -852,24 +854,24 @@ DEBUG_Print( const DBG_VALUE *value, int count, char format, int level )
DEBUG_PrintBasic(value, 1, format);
break;
case DT_STRUCT:
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "{");
DEBUG_nchar += DEBUG_Printf("{");
for(m = value->type->un.structure.members; m; m = m->next)
{
val1 = *value;
DEBUG_FindStructElement(&val1, m->name, &xval);
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "%s=", m->name);
DEBUG_nchar += DEBUG_Printf("%s=", m->name);
DEBUG_Print(&val1, 1, format, level + 1);
if( m->next != NULL )
{
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, ", ");
DEBUG_nchar += DEBUG_Printf(", ");
}
if( DEBUG_nchar > DEBUG_maxchar )
{
DEBUG_Printf(DBG_CHN_MESG, "...}");
DEBUG_Printf("...}");
goto leave;
}
}
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "}");
DEBUG_nchar += DEBUG_Printf("}");
break;
case DT_ARRAY:
/*
@ -888,47 +890,47 @@ DEBUG_Print( const DBG_VALUE *value, int count, char format, int level )
clen = (DEBUG_nchar + len < DEBUG_maxchar)
? len : (DEBUG_maxchar - DEBUG_nchar);
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "\"");
DEBUG_nchar += DEBUG_Printf("\"");
switch (value->cookie)
{
case DV_TARGET:
DEBUG_nchar += DEBUG_PrintStringA(DBG_CHN_MESG, &value->addr, clen);
DEBUG_nchar += DEBUG_PrintStringA(&value->addr, clen);
break;
case DV_HOST:
DEBUG_OutputA(DBG_CHN_MESG, pnt, clen);
DEBUG_OutputA(pnt, clen);
break;
default: assert(0);
}
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, (len > clen) ? "...\"" : "\"");
DEBUG_nchar += DEBUG_Printf((len > clen) ? "...\"" : "\"");
break;
}
val1 = *value;
val1.type = value->type->un.array.basictype;
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "{");
DEBUG_nchar += DEBUG_Printf("{");
for( i=value->type->un.array.start; i <= value->type->un.array.end; i++ )
{
DEBUG_Print(&val1, 1, format, level + 1);
val1.addr.off += size;
if( i == value->type->un.array.end )
{
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "}");
DEBUG_nchar += DEBUG_Printf("}");
}
else
{
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, ", ");
DEBUG_nchar += DEBUG_Printf(", ");
}
if( DEBUG_nchar > DEBUG_maxchar )
{
DEBUG_Printf(DBG_CHN_MESG, "...}");
DEBUG_Printf("...}");
goto leave;
}
}
break;
case DT_FUNC:
DEBUG_Printf(DBG_CHN_MESG, "Function at ???\n");
DEBUG_Printf("Function at ???\n");
break;
default:
DEBUG_Printf(DBG_CHN_MESG, "Unknown type (%d)\n", value->type->type);
DEBUG_Printf("Unknown type (%d)\n", value->type->type);
assert(FALSE);
break;
}
@ -937,7 +939,7 @@ leave:
if( level == 0 )
{
DEBUG_nchar += DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_nchar += DEBUG_Printf("\n");
}
}
@ -945,58 +947,56 @@ static void DEBUG_DumpAType(struct datatype* dt, BOOL deep)
{
const char* name = (dt->name) ? dt->name : "--none--";
/* EPP DEBUG_Printf(DBG_CHN_MESG, "0x%08lx ", (unsigned long)dt); */
switch (dt->type)
{
case DT_BASIC:
DEBUG_Printf(DBG_CHN_MESG, "BASIC(%s)", name);
DEBUG_Printf("BASIC(%s)", name);
break;
case DT_POINTER:
DEBUG_Printf(DBG_CHN_MESG, "POINTER(%s)<", name);
DEBUG_Printf("POINTER(%s)<", name);
DEBUG_DumpAType(dt->un.pointer.pointsto, FALSE);
DEBUG_Printf(DBG_CHN_MESG, ">");
DEBUG_Printf(">");
break;
case DT_STRUCT:
DEBUG_Printf(DBG_CHN_MESG, "STRUCT(%s) %d {",
DEBUG_Printf("STRUCT(%s) %d {",
name, dt->un.structure.size);
if (dt->un.structure.members != NULL)
{
struct member * m;
for (m = dt->un.structure.members; m; m = m->next)
{
DEBUG_Printf(DBG_CHN_MESG, " %s(%d",
m->name, m->offset / 8);
DEBUG_Printf(" %s(%d", m->name, m->offset / 8);
if (m->offset % 8 != 0)
DEBUG_Printf(DBG_CHN_MESG, ".%d", m->offset / 8);
DEBUG_Printf(DBG_CHN_MESG, "/%d", m->size / 8);
DEBUG_Printf(".%d", m->offset / 8);
DEBUG_Printf("/%d", m->size / 8);
if (m->size % 8 != 0)
DEBUG_Printf(DBG_CHN_MESG, ".%d", m->size % 8);
DEBUG_Printf(DBG_CHN_MESG, ")");
DEBUG_Printf(".%d", m->size % 8);
DEBUG_Printf(")");
}
}
DEBUG_Printf(DBG_CHN_MESG, " }");
DEBUG_Printf(" }");
break;
case DT_ARRAY:
DEBUG_Printf(DBG_CHN_MESG, "ARRAY(%s)[", name);
DEBUG_Printf("ARRAY(%s)[", name);
DEBUG_DumpAType(dt->un.array.basictype, FALSE);
DEBUG_Printf(DBG_CHN_MESG, "]");
DEBUG_Printf("]");
break;
case DT_ENUM:
DEBUG_Printf(DBG_CHN_MESG, "ENUM(%s)", name);
DEBUG_Printf("ENUM(%s)", name);
break;
case DT_BITFIELD:
DEBUG_Printf(DBG_CHN_MESG, "BITFIELD(%s)", name);
DEBUG_Printf("BITFIELD(%s)", name);
break;
case DT_FUNC:
DEBUG_Printf(DBG_CHN_MESG, "FUNC(%s)(", name);
DEBUG_Printf("FUNC(%s)(", name);
DEBUG_DumpAType(dt->un.funct.rettype, FALSE);
DEBUG_Printf(DBG_CHN_MESG, ")");
DEBUG_Printf(")");
break;
default:
DEBUG_Printf(DBG_CHN_ERR, "Unknown type???");
WINE_ERR("Unknown type???");
break;
}
if (deep) DEBUG_Printf(DBG_CHN_MESG, "\n");
if (deep) DEBUG_Printf("\n");
}
int DEBUG_DumpTypes(void)
@ -1051,7 +1051,7 @@ DEBUG_PrintTypeCast(const struct datatype * dt)
if(dt == NULL)
{
DEBUG_Printf(DBG_CHN_MESG, "--invalid--");
DEBUG_Printf("--invalid--");
return FALSE;
}
@ -1063,31 +1063,31 @@ DEBUG_PrintTypeCast(const struct datatype * dt)
switch(dt->type)
{
case DT_BASIC:
DEBUG_Printf(DBG_CHN_MESG, "%s", name);
DEBUG_Printf("%s", name);
break;
case DT_POINTER:
DEBUG_PrintTypeCast(dt->un.pointer.pointsto);
DEBUG_Printf(DBG_CHN_MESG, "*");
DEBUG_Printf("*");
break;
case DT_STRUCT:
DEBUG_Printf(DBG_CHN_MESG, "struct %s", name);
DEBUG_Printf("struct %s", name);
break;
case DT_ARRAY:
DEBUG_Printf(DBG_CHN_MESG, "%s[]", name);
DEBUG_Printf("%s[]", name);
break;
case DT_ENUM:
DEBUG_Printf(DBG_CHN_MESG, "enum %s", name);
DEBUG_Printf("enum %s", name);
break;
case DT_BITFIELD:
DEBUG_Printf(DBG_CHN_MESG, "unsigned %s", name);
DEBUG_Printf("unsigned %s", name);
break;
case DT_FUNC:
DEBUG_PrintTypeCast(dt->un.funct.rettype);
DEBUG_Printf(DBG_CHN_MESG, "(*%s)()", name);
DEBUG_Printf("(*%s)()", name);
break;
default:
DEBUG_Printf(DBG_CHN_ERR, "Unknown type???\n");
break;
WINE_ERR("Unknown type???\n");
break;
}
return TRUE;
@ -1099,11 +1099,11 @@ int DEBUG_PrintType( const DBG_VALUE *value )
if (!value->type)
{
DEBUG_Printf(DBG_CHN_MESG, "Unknown type\n");
DEBUG_Printf("Unknown type\n");
return FALSE;
}
if (!DEBUG_PrintTypeCast(value->type))
return FALSE;
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
return TRUE;
}

View File

@ -38,6 +38,10 @@
#include "wine/library.h"
#include "winnls.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
DBG_PROCESS* DEBUG_CurrProcess = NULL;
DBG_THREAD* DEBUG_CurrThread = NULL;
DWORD DEBUG_CurrTid;
@ -53,15 +57,12 @@ static enum {none_mode = 0, winedbg_mode, automatic_mode, gdb_mode} local_mode;
DBG_INTVAR DEBUG_IntVars[DBG_IV_LAST];
void DEBUG_OutputA(int chn, const char* buffer, int len)
void DEBUG_OutputA(const char* buffer, int len)
{
if (DBG_IVAR(ConChannelMask) & chn)
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buffer, len, NULL, NULL);
if (DBG_IVAR(StdChannelMask) & chn)
fwrite(buffer, len, 1, stderr);
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buffer, len, NULL, NULL);
}
void DEBUG_OutputW(int chn, const WCHAR* buffer, int len)
void DEBUG_OutputW(const WCHAR* buffer, int len)
{
char* ansi = NULL;
int newlen;
@ -97,12 +98,12 @@ void DEBUG_OutputW(int chn, const WCHAR* buffer, int len)
if(ansi)
{
DEBUG_OutputA(chn, ansi, newlen);
DEBUG_OutputA(ansi, newlen);
DBG_free(ansi);
}
}
int DEBUG_Printf(int chn, const char* format, ...)
int DEBUG_Printf(const char* format, ...)
{
static char buf[4*1024];
va_list valist;
@ -117,7 +118,7 @@ static char buf[4*1024];
buf[len] = 0;
buf[len - 1] = buf[len - 2] = buf[len - 3] = '.';
}
DEBUG_OutputA(chn, buf, len);
DEBUG_OutputA(buf, len);
return len;
}
@ -140,9 +141,7 @@ static BOOL DEBUG_IntVarsRW(int read)
}
if (RegCreateKeyA(HKEY_CURRENT_USER, "Software\\Wine\\WineDbg", &hkey)) {
/* since the IVars are not yet setup, DEBUG_Printf doesn't work,
* so don't use it */
fprintf(stderr, "Cannot create WineDbg key in registry\n");
WINE_ERR("Cannot create WineDbg key in registry\n");
return FALSE;
}
@ -195,7 +194,7 @@ DBG_PROCESS* DEBUG_AddProcess(DWORD pid, HANDLE h, const char* imageName)
{
if (p->handle != 0)
{
DEBUG_Printf(DBG_CHN_ERR, "Process (%lu) is already defined\n", pid);
WINE_ERR("Process (%lu) is already defined\n", pid);
}
else
{
@ -362,7 +361,7 @@ BOOL DEBUG_Attach(DWORD pid, BOOL cofe, BOOL wfe)
if (!(DEBUG_CurrProcess = DEBUG_AddProcess(pid, 0, NULL))) return FALSE;
if (!DebugActiveProcess(pid)) {
DEBUG_Printf(DBG_CHN_MESG, "Can't attach process %lx: error %ld\n", pid, GetLastError());
DEBUG_Printf("Can't attach process %lx: error %ld\n", pid, GetLastError());
DEBUG_DelProcess(DEBUG_CurrProcess);
return FALSE;
}
@ -409,7 +408,7 @@ static BOOL DEBUG_FetchContext(void)
;
if (!GetThreadContext(DEBUG_CurrThread->handle, &DEBUG_context))
{
DEBUG_Printf(DBG_CHN_WARN, "Can't get thread's context\n");
WINE_WARN("Can't get thread's context\n");
return FALSE;
}
return TRUE;
@ -427,27 +426,32 @@ static BOOL DEBUG_ExceptionProlog(BOOL is_debug, BOOL force, DWORD code)
if (!is_debug)
{
if (!addr.seg)
DEBUG_Printf(DBG_CHN_MESG, " in 32-bit code (0x%08lx)", addr.off);
DEBUG_Printf(" in 32-bit code (0x%08lx)", addr.off);
else
switch(DEBUG_GetSelectorType(addr.seg))
switch (DEBUG_GetSelectorType(addr.seg))
{
case MODE_32:
DEBUG_Printf(DBG_CHN_MESG, " in 32-bit code (%04lx:%08lx)", addr.seg, addr.off);
DEBUG_Printf(" in 32-bit code (%04lx:%08lx)", addr.seg, addr.off);
break;
case MODE_16:
DEBUG_Printf(DBG_CHN_MESG, " in 16-bit code (%04lx:%04lx)", addr.seg, addr.off);
DEBUG_Printf(" in 16-bit code (%04lx:%04lx)", addr.seg, addr.off);
break;
case MODE_VM86:
DEBUG_Printf(DBG_CHN_MESG, " in vm86 code (%04lx:%04lx)", addr.seg, addr.off);
DEBUG_Printf(" in vm86 code (%04lx:%04lx)", addr.seg, addr.off);
break;
case MODE_INVALID:
DEBUG_Printf(DBG_CHN_MESG, " bad CS (%lx)", addr.seg);
DEBUG_Printf(" bad CS (%lx)", addr.seg);
break;
}
DEBUG_Printf(DBG_CHN_MESG, ".\n");
DEBUG_Printf(".\n");
}
DEBUG_LoadEntryPoints("Loading new modules symbols:\n");
/*
* Do a quiet backtrace so that we have an idea of what the situation
* is WRT the source files.
*/
DEBUG_BackTrace(DEBUG_CurrTid, FALSE);
if (!force && is_debug &&
DEBUG_ShouldContinue(&addr, code,
@ -458,19 +462,13 @@ static BOOL DEBUG_ExceptionProlog(BOOL is_debug, BOOL force, DWORD code)
if (newmode != DEBUG_CurrThread->dbg_mode)
{
static const char * const names[] = { "???", "16-bit", "32-bit", "vm86" };
DEBUG_Printf(DBG_CHN_MESG,"In %s mode.\n", names[newmode] );
DEBUG_Printf("In %s mode.\n", names[newmode] );
DEBUG_CurrThread->dbg_mode = newmode;
}
DEBUG_DoDisplay();
if (is_debug || force) {
/*
* Do a quiet backtrace so that we have an idea of what the situation
* is WRT the source files.
*/
DEBUG_BackTrace(DEBUG_CurrTid, FALSE);
} else {
if (!is_debug && !force) {
/* This is a real crash, dump some info */
DEBUG_InfoRegisters(&DEBUG_context);
DEBUG_InfoStack();
@ -538,9 +536,8 @@ static DWORD DEBUG_HandleException(EXCEPTION_RECORD *rec, BOOL first_chance, BOO
if (ReadProcessMemory(DEBUG_CurrThread->process->handle, pThreadName->szName,
pThread->name, 9, NULL))
DEBUG_Printf (DBG_CHN_MESG,
"Thread ID=0x%lx renamed using MS VC6 extension (name==\"%s\")\n",
pThread->tid, pThread->name);
DEBUG_Printf("Thread ID=0x%lx renamed using MS VC6 extension (name==\"%s\")\n",
pThread->tid, pThread->name);
return DBG_CONTINUE;
}
@ -553,44 +550,44 @@ static DWORD DEBUG_HandleException(EXCEPTION_RECORD *rec, BOOL first_chance, BOO
if (!is_debug)
{
/* print some infos */
DEBUG_Printf(DBG_CHN_MESG, "%s: ",
first_chance ? "First chance exception" : "Unhandled exception");
DEBUG_Printf("%s: ",
first_chance ? "First chance exception" : "Unhandled exception");
switch (rec->ExceptionCode)
{
case EXCEPTION_INT_DIVIDE_BY_ZERO:
DEBUG_Printf(DBG_CHN_MESG, "divide by zero");
DEBUG_Printf("divide by zero");
break;
case EXCEPTION_INT_OVERFLOW:
DEBUG_Printf(DBG_CHN_MESG, "overflow");
DEBUG_Printf("overflow");
break;
case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
DEBUG_Printf(DBG_CHN_MESG, "array bounds ");
DEBUG_Printf("array bounds");
break;
case EXCEPTION_ILLEGAL_INSTRUCTION:
DEBUG_Printf(DBG_CHN_MESG, "illegal instruction");
DEBUG_Printf("illegal instruction");
break;
case EXCEPTION_STACK_OVERFLOW:
DEBUG_Printf(DBG_CHN_MESG, "stack overflow");
DEBUG_Printf("stack overflow");
break;
case EXCEPTION_PRIV_INSTRUCTION:
DEBUG_Printf(DBG_CHN_MESG, "privileged instruction");
DEBUG_Printf("privileged instruction");
break;
case EXCEPTION_ACCESS_VIOLATION:
if (rec->NumberParameters == 2)
DEBUG_Printf(DBG_CHN_MESG, "page fault on %s access to 0x%08lx",
rec->ExceptionInformation[0] ? "write" : "read",
rec->ExceptionInformation[1]);
DEBUG_Printf("page fault on %s access to 0x%08lx",
rec->ExceptionInformation[0] ? "write" : "read",
rec->ExceptionInformation[1]);
else
DEBUG_Printf(DBG_CHN_MESG, "page fault");
DEBUG_Printf("page fault");
break;
case EXCEPTION_DATATYPE_MISALIGNMENT:
DEBUG_Printf(DBG_CHN_MESG, "Alignment");
DEBUG_Printf("Alignment");
break;
case DBG_CONTROL_C:
DEBUG_Printf(DBG_CHN_MESG, "^C");
DEBUG_Printf("^C");
break;
case CONTROL_C_EXIT:
DEBUG_Printf(DBG_CHN_MESG, "^C");
DEBUG_Printf("^C");
break;
case STATUS_POSSIBLE_DEADLOCK:
{
@ -599,12 +596,12 @@ static DWORD DEBUG_HandleException(EXCEPTION_RECORD *rec, BOOL first_chance, BOO
addr.seg = 0;
addr.off = rec->ExceptionInformation[0];
DEBUG_Printf(DBG_CHN_MESG, "wait failed on critical section ");
DEBUG_Printf("wait failed on critical section ");
DEBUG_PrintAddress(&addr, DEBUG_CurrThread->dbg_mode, FALSE);
}
if (!DBG_IVAR(BreakOnCritSectTimeOut))
{
DEBUG_Printf(DBG_CHN_MESG, "\n");
DEBUG_Printf("\n");
return DBG_EXCEPTION_NOT_HANDLED;
}
break;
@ -615,45 +612,45 @@ static DWORD DEBUG_HandleException(EXCEPTION_RECORD *rec, BOOL first_chance, BOO
(char *)rec->ExceptionInformation[0] );
DEBUG_ProcessGetString( name, sizeof(name), DEBUG_CurrThread->process->handle,
(char *)rec->ExceptionInformation[1] );
DEBUG_Printf(DBG_CHN_MESG, "unimplemented function %s.%s called", dll, name );
DEBUG_Printf("unimplemented function %s.%s called", dll, name );
}
break;
case EXCEPTION_WINE_ASSERTION:
DEBUG_Printf(DBG_CHN_MESG, "assertion failed");
DEBUG_Printf("assertion failed");
break;
case EXCEPTION_VM86_INTx:
DEBUG_Printf(DBG_CHN_MESG, "interrupt %02lx in vm86 mode",
DEBUG_Printf("interrupt %02lx in vm86 mode",
rec->ExceptionInformation[0]);
break;
case EXCEPTION_VM86_STI:
DEBUG_Printf(DBG_CHN_MESG, "sti in vm86 mode");
DEBUG_Printf("sti in vm86 mode");
break;
case EXCEPTION_VM86_PICRETURN:
DEBUG_Printf(DBG_CHN_MESG, "PIC return in vm86 mode");
DEBUG_Printf("PIC return in vm86 mode");
break;
case EXCEPTION_FLT_DENORMAL_OPERAND:
DEBUG_Printf(DBG_CHN_MESG, "denormal float operand");
DEBUG_Printf("denormal float operand");
break;
case EXCEPTION_FLT_DIVIDE_BY_ZERO:
DEBUG_Printf(DBG_CHN_MESG, "divide by zero");
DEBUG_Printf("divide by zero");
break;
case EXCEPTION_FLT_INEXACT_RESULT:
DEBUG_Printf(DBG_CHN_MESG, "inexact float result");
DEBUG_Printf("inexact float result");
break;
case EXCEPTION_FLT_INVALID_OPERATION:
DEBUG_Printf(DBG_CHN_MESG, "invalid float operation");
DEBUG_Printf("invalid float operation");
break;
case EXCEPTION_FLT_OVERFLOW:
DEBUG_Printf(DBG_CHN_MESG, "floating pointer overflow");
DEBUG_Printf("floating pointer overflow");
break;
case EXCEPTION_FLT_UNDERFLOW:
DEBUG_Printf(DBG_CHN_MESG, "floating pointer underflow");
DEBUG_Printf("floating pointer underflow");
break;
case EXCEPTION_FLT_STACK_CHECK:
DEBUG_Printf(DBG_CHN_MESG, "floating point stack check");
DEBUG_Printf("floating point stack check");
break;
default:
DEBUG_Printf(DBG_CHN_MESG, "%08lx", rec->ExceptionCode);
DEBUG_Printf("%08lx", rec->ExceptionCode);
break;
}
}
@ -693,14 +690,14 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
case EXCEPTION_DEBUG_EVENT:
if (!DEBUG_CurrThread)
{
DEBUG_Printf(DBG_CHN_ERR, "%08lx:%08lx: not a registered process or thread (perhaps a 16 bit one ?)\n",
de->dwProcessId, de->dwThreadId);
WINE_ERR("%08lx:%08lx: not a registered process or thread (perhaps a 16 bit one ?)\n",
de->dwProcessId, de->dwThreadId);
break;
}
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: exception code=%08lx\n",
de->dwProcessId, de->dwThreadId,
de->u.Exception.ExceptionRecord.ExceptionCode);
WINE_TRACE("%08lx:%08lx: exception code=%08lx\n",
de->dwProcessId, de->dwThreadId,
de->u.Exception.ExceptionRecord.ExceptionCode);
if (DEBUG_CurrProcess->continue_on_first_exception)
{
@ -722,17 +719,17 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
break;
case CREATE_THREAD_DEBUG_EVENT:
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: create thread D @%08lx\n", de->dwProcessId, de->dwThreadId,
(unsigned long)(LPVOID)de->u.CreateThread.lpStartAddress);
WINE_TRACE("%08lx:%08lx: create thread D @%08lx\n", de->dwProcessId, de->dwThreadId,
(unsigned long)(LPVOID)de->u.CreateThread.lpStartAddress);
if (DEBUG_CurrProcess == NULL)
{
DEBUG_Printf(DBG_CHN_ERR, "Unknown process\n");
WINE_ERR("Unknown process\n");
break;
}
if (DEBUG_GetThread(DEBUG_CurrProcess, de->dwThreadId) != NULL)
{
DEBUG_Printf(DBG_CHN_TRACE, "Thread already listed, skipping\n");
WINE_TRACE("Thread already listed, skipping\n");
break;
}
@ -743,7 +740,7 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
de->u.CreateThread.lpThreadLocalBase);
if (!DEBUG_CurrThread)
{
DEBUG_Printf(DBG_CHN_ERR, "Couldn't create thread\n");
WINE_ERR("Couldn't create thread\n");
break;
}
DEBUG_InitCurrThread();
@ -755,25 +752,25 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
de->u.CreateProcessInfo.lpImageName,
de->u.CreateProcessInfo.fUnicode);
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: create process '%s'/%p @%08lx (%ld<%ld>)\n",
de->dwProcessId, de->dwThreadId,
buffer, de->u.CreateProcessInfo.lpImageName,
(unsigned long)(LPVOID)de->u.CreateProcessInfo.lpStartAddress,
de->u.CreateProcessInfo.dwDebugInfoFileOffset,
de->u.CreateProcessInfo.nDebugInfoSize);
WINE_TRACE("%08lx:%08lx: create process '%s'/%p @%08lx (%ld<%ld>)\n",
de->dwProcessId, de->dwThreadId,
buffer, de->u.CreateProcessInfo.lpImageName,
(unsigned long)(LPVOID)de->u.CreateProcessInfo.lpStartAddress,
de->u.CreateProcessInfo.dwDebugInfoFileOffset,
de->u.CreateProcessInfo.nDebugInfoSize);
DEBUG_CurrProcess = DEBUG_AddProcess(de->dwProcessId,
de->u.CreateProcessInfo.hProcess,
buffer[0] ? buffer : "<Debugged Process>");
if (DEBUG_CurrProcess == NULL)
{
DEBUG_Printf(DBG_CHN_ERR, "Couldn't create process\n");
WINE_ERR("Couldn't create process\n");
break;
}
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: create thread I @%08lx\n",
de->dwProcessId, de->dwThreadId,
(unsigned long)(LPVOID)de->u.CreateProcessInfo.lpStartAddress);
WINE_TRACE("%08lx:%08lx: create thread I @%08lx\n",
de->dwProcessId, de->dwThreadId,
(unsigned long)(LPVOID)de->u.CreateProcessInfo.lpStartAddress);
DEBUG_CurrThread = DEBUG_AddThread(DEBUG_CurrProcess,
de->dwThreadId,
@ -782,7 +779,7 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
de->u.CreateProcessInfo.lpThreadLocalBase);
if (!DEBUG_CurrThread)
{
DEBUG_Printf(DBG_CHN_ERR, "Couldn't create thread\n");
WINE_ERR("Couldn't create thread\n");
break;
}
@ -806,12 +803,12 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
break;
case EXIT_THREAD_DEBUG_EVENT:
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: exit thread (%ld)\n",
de->dwProcessId, de->dwThreadId, de->u.ExitThread.dwExitCode);
WINE_TRACE("%08lx:%08lx: exit thread (%ld)\n",
de->dwProcessId, de->dwThreadId, de->u.ExitThread.dwExitCode);
if (DEBUG_CurrThread == NULL)
{
DEBUG_Printf(DBG_CHN_ERR, "Unknown thread\n");
WINE_ERR("Unknown thread\n");
break;
}
/* FIXME: remove break point set on thread startup */
@ -819,12 +816,12 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
break;
case EXIT_PROCESS_DEBUG_EVENT:
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: exit process (%ld)\n",
de->dwProcessId, de->dwThreadId, de->u.ExitProcess.dwExitCode);
WINE_TRACE("%08lx:%08lx: exit process (%ld)\n",
de->dwProcessId, de->dwThreadId, de->u.ExitProcess.dwExitCode);
if (DEBUG_CurrProcess == NULL)
{
DEBUG_Printf(DBG_CHN_ERR, "Unknown process\n");
WINE_ERR("Unknown process\n");
break;
}
/* just in case */
@ -833,13 +830,13 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
DEBUG_DelThread(DEBUG_CurrProcess->threads);
DEBUG_DelProcess(DEBUG_CurrProcess);
DEBUG_Printf(DBG_CHN_MESG, "Process of pid=%08lx has terminated\n", DEBUG_CurrPid);
DEBUG_Printf("Process of pid=%08lx has terminated\n", DEBUG_CurrPid);
break;
case LOAD_DLL_DEBUG_EVENT:
if (DEBUG_CurrThread == NULL)
{
DEBUG_Printf(DBG_CHN_ERR, "Unknown thread\n");
WINE_ERR("Unknown thread\n");
break;
}
DEBUG_ProcessGetStringIndirect(buffer, sizeof(buffer),
@ -847,31 +844,31 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
de->u.LoadDll.lpImageName,
de->u.LoadDll.fUnicode);
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: loads DLL %s @%08lx (%ld<%ld>)\n",
de->dwProcessId, de->dwThreadId,
buffer, (unsigned long)de->u.LoadDll.lpBaseOfDll,
de->u.LoadDll.dwDebugInfoFileOffset,
de->u.LoadDll.nDebugInfoSize);
WINE_TRACE("%08lx:%08lx: loads DLL %s @%08lx (%ld<%ld>)\n",
de->dwProcessId, de->dwThreadId,
buffer, (unsigned long)de->u.LoadDll.lpBaseOfDll,
de->u.LoadDll.dwDebugInfoFileOffset,
de->u.LoadDll.nDebugInfoSize);
_strupr(buffer);
DEBUG_LoadModule32(buffer, de->u.LoadDll.hFile, de->u.LoadDll.lpBaseOfDll);
DEBUG_CheckDelayedBP();
if (DBG_IVAR(BreakOnDllLoad))
{
DEBUG_Printf(DBG_CHN_MESG, "Stopping on DLL %s loading at %08lx\n",
DEBUG_Printf("Stopping on DLL %s loading at %08lx\n",
buffer, (unsigned long)de->u.LoadDll.lpBaseOfDll);
if (DEBUG_FetchContext()) cont = 0;
}
break;
case UNLOAD_DLL_DEBUG_EVENT:
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: unload DLL @%08lx\n", de->dwProcessId, de->dwThreadId,
(unsigned long)de->u.UnloadDll.lpBaseOfDll);
WINE_TRACE("%08lx:%08lx: unload DLL @%08lx\n", de->dwProcessId, de->dwThreadId,
(unsigned long)de->u.UnloadDll.lpBaseOfDll);
break;
case OUTPUT_DEBUG_STRING_EVENT:
if (DEBUG_CurrThread == NULL)
{
DEBUG_Printf(DBG_CHN_ERR, "Unknown thread\n");
WINE_ERR("Unknown thread\n");
break;
}
@ -880,19 +877,19 @@ static BOOL DEBUG_HandleDebugEvent(DEBUG_EVENT* de)
de->u.DebugString.lpDebugStringData);
/* FIXME unicode de->u.DebugString.fUnicode ? */
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: output debug string (%s)\n",
de->dwProcessId, de->dwThreadId, buffer);
WINE_TRACE("%08lx:%08lx: output debug string (%s)\n",
de->dwProcessId, de->dwThreadId, buffer);
break;
case RIP_EVENT:
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: rip error=%ld type=%ld\n",
de->dwProcessId, de->dwThreadId, de->u.RipInfo.dwError,
de->u.RipInfo.dwType);
WINE_TRACE("%08lx:%08lx: rip error=%ld type=%ld\n",
de->dwProcessId, de->dwThreadId, de->u.RipInfo.dwError,
de->u.RipInfo.dwType);
break;
default:
DEBUG_Printf(DBG_CHN_TRACE, "%08lx:%08lx: unknown event (%ld)\n",
de->dwProcessId, de->dwThreadId, de->dwDebugEventCode);
WINE_TRACE("%08lx:%08lx: unknown event (%ld)\n",
de->dwProcessId, de->dwThreadId, de->dwDebugEventCode);
}
if (!cont) return TRUE; /* stop execution */
ContinueDebugEvent(de->dwProcessId, de->dwThreadId, cont);
@ -904,27 +901,25 @@ static void DEBUG_ResumeDebuggee(DWORD cont)
if (DEBUG_InException)
{
DEBUG_ExceptionEpilog();
#if 1
DEBUG_Printf(DBG_CHN_TRACE,
"Exiting debugger PC=%lx EFL=%08lx mode=%d count=%d\n",
#ifdef __i386__
DEBUG_context.Eip, DEBUG_context.EFlags,
WINE_TRACE("Exiting debugger PC=%lx EFL=%08lx mode=%d count=%d\n",
DEBUG_context.Eip, DEBUG_context.EFlags,
DEBUG_CurrThread->exec_mode, DEBUG_CurrThread->exec_count);
#else
0L, 0L,
#endif
DEBUG_CurrThread->exec_mode, DEBUG_CurrThread->exec_count);
WINE_TRACE("Exiting debugger PC=%lx EFL=%08lx mode=%d count=%d\n",
0L, 0L,
DEBUG_CurrThread->exec_mode, DEBUG_CurrThread->exec_count);
#endif
if (DEBUG_CurrThread)
{
if (!SetThreadContext(DEBUG_CurrThread->handle, &DEBUG_context))
DEBUG_Printf(DBG_CHN_MESG, "Cannot set ctx on %lu\n", DEBUG_CurrTid);
DEBUG_Printf("Cannot set ctx on %lu\n", DEBUG_CurrTid);
DEBUG_CurrThread->wait_for_first_exception = 0;
}
}
DEBUG_InteractiveP = FALSE;
if (!ContinueDebugEvent(DEBUG_CurrPid, DEBUG_CurrTid, cont))
DEBUG_Printf(DBG_CHN_MESG, "Cannot continue on %lu (%lu)\n",
DEBUG_CurrTid, cont);
DEBUG_Printf("Cannot continue on %lu (%lu)\n", DEBUG_CurrTid, cont);
}
void DEBUG_WaitNextException(DWORD cont, int count, int mode)
@ -944,15 +939,14 @@ void DEBUG_WaitNextException(DWORD cont, int count, i
}
if (!DEBUG_CurrProcess) return;
DEBUG_InteractiveP = TRUE;
#if 1
DEBUG_Printf(DBG_CHN_TRACE,
"Entering debugger PC=%lx EFL=%08lx mode=%d count=%d\n",
#ifdef __i386__
DEBUG_context.Eip, DEBUG_context.EFlags,
WINE_TRACE("Entering debugger PC=%lx EFL=%08lx mode=%d count=%d\n",
DEBUG_context.Eip, DEBUG_context.EFlags,
DEBUG_CurrThread->exec_mode, DEBUG_CurrThread->exec_count);
#else
0L, 0L,
#endif
DEBUG_CurrThread->exec_mode, DEBUG_CurrThread->exec_count);
WINE_TRACE("Entering debugger PC=%lx EFL=%08lx mode=%d count=%d\n",
0L, 0L,
DEBUG_CurrThread->exec_mode, DEBUG_CurrThread->exec_count);
#endif
}
@ -960,7 +954,7 @@ static DWORD DEBUG_MainLoop(void)
{
DEBUG_EVENT de;
DEBUG_Printf(DBG_CHN_MESG, "WineDbg starting on pid %lx\n", DEBUG_CurrPid);
DEBUG_Printf("WineDbg starting on pid %lx\n", DEBUG_CurrPid);
/* wait for first exception */
while (WaitForDebugEvent(&de, INFINITE))
@ -970,9 +964,9 @@ static DWORD DEBUG_MainLoop(void)
if (local_mode == automatic_mode)
{
/* print some extra information */
DEBUG_Printf(DBG_CHN_MESG, "Modules:\n");
DEBUG_Printf("Modules:\n");
DEBUG_WalkModules();
DEBUG_Printf(DBG_CHN_MESG, "Threads:\n");
DEBUG_Printf("Threads:\n");
DEBUG_WalkThreads();
}
else
@ -980,7 +974,7 @@ static DWORD DEBUG_MainLoop(void)
DEBUG_InteractiveP = TRUE;
DEBUG_Parser(NULL);
}
DEBUG_Printf(DBG_CHN_MESG, "WineDbg terminated on pid %lx\n", DEBUG_CurrPid);
DEBUG_Printf("WineDbg terminated on pid %lx\n", DEBUG_CurrPid);
return 0;
}
@ -1002,7 +996,7 @@ static BOOL DEBUG_Start(LPSTR cmdLine)
FALSE, DEBUG_PROCESS|DEBUG_ONLY_THIS_PROCESS|CREATE_NEW_CONSOLE,
NULL, NULL, &startup, &info))
{
DEBUG_Printf(DBG_CHN_MESG, "Couldn't start process '%s'\n", cmdLine);
DEBUG_Printf("Couldn't start process '%s'\n", cmdLine);
return FALSE;
}
DEBUG_CurrPid = info.dwProcessId;
@ -1017,10 +1011,10 @@ void DEBUG_Run(const char* args)
const char* pgm = (wmod) ? wmod->module_name : "none";
if (args) {
DEBUG_Printf(DBG_CHN_MESG, "Run (%s) with '%s'\n", pgm, args);
DEBUG_Printf("Run (%s) with '%s'\n", pgm, args);
} else {
if (!DEBUG_LastCmdLine) {
DEBUG_Printf(DBG_CHN_MESG, "Cannot find previously used command line.\n");
DEBUG_Printf("Cannot find previously used command line.\n");
return;
}
DEBUG_Start(DEBUG_LastCmdLine);
@ -1029,11 +1023,13 @@ void DEBUG_Run(const char* args)
BOOL DEBUG_InterruptDebuggee(void)
{
DEBUG_Printf(DBG_CHN_MESG, "Ctrl-C: stopping debuggee\n");
DEBUG_Printf("Ctrl-C: stopping debuggee\n");
/* FIXME: since we likely have a single process, signal the first process
* in list
*/
return DEBUG_ProcessList && DebugBreakProcess(DEBUG_ProcessList->handle);
if (!DEBUG_ProcessList) return FALSE;
DEBUG_ProcessList->continue_on_first_exception = FALSE;
return DebugBreakProcess(DEBUG_ProcessList->handle);
}
static BOOL WINAPI DEBUG_CtrlCHandler(DWORD dwCtrlType)
@ -1056,7 +1052,7 @@ static void DEBUG_InitConsole(void)
static int DEBUG_Usage(void)
{
DEBUG_Printf(DBG_CHN_MESG, "Usage: winedbg [--debugmsg dbgoptions] [--auto] [--gdb] cmdline\n" );
DEBUG_Printf("Usage: winedbg [--debugmsg dbgoptions] [--auto] [--gdb] cmdline\n" );
return 1;
}
@ -1081,8 +1077,6 @@ int main(int argc, char** argv)
local_mode = automatic_mode;
/* force some internal variables */
DBG_IVAR(BreakOnDllLoad) = 0;
DBG_IVAR(ConChannelMask) = 0;
DBG_IVAR(StdChannelMask) = DBG_CHN_MESG;
argc--; argv++;
continue;
}
@ -1146,7 +1140,7 @@ int main(int argc, char** argv)
}
if (!SetEvent(hEvent))
{
DEBUG_Printf(DBG_CHN_ERR, "Invalid event handle: %p\n", hEvent);
WINE_ERR("Invalid event handle: %p\n", hEvent);
goto leave;
}
CloseHandle(hEvent);
@ -1173,7 +1167,7 @@ int main(int argc, char** argv)
if (!DEBUG_Start(cmdLine))
{
DEBUG_Printf(DBG_CHN_MESG, "Couldn't start process '%s'\n", cmdLine);
DEBUG_Printf("Couldn't start process '%s'\n", cmdLine);
goto leave;
}
DBG_free(DEBUG_LastCmdLine);
@ -1193,6 +1187,6 @@ int main(int argc, char** argv)
return retv;
oom_leave:
DEBUG_Printf(DBG_CHN_MESG, "Out of memory\n");
DEBUG_Printf("Out of memory\n");
goto leave;
}