.TH WINEDBG 1 "October 2005" "@PACKAGE_STRING@" "Wine Developers Manual"
.SH NAME
winedbg \- Wine debugger
.SH SYNOPSIS
.BR "winedbg "
.RI "[" " options " "] ["
.BI "program name"
.RI "[ program arguments ] |"
.BI "pid"
.RI "]"
.PP
.BR "winedbg "
.BI "--gdb"
.RI "[" " options " "] ["
.BI "program name"
.RI "[ program arguments ] |"
.BI "pid"
.RI "]"
.PP
.BR "winedbg "
.BI "--auto "
.BI "pid"
.PP
.BR "winedbg "
.BI "--minidump "
.RI "[ file.mdmp ]"
.BI "pid"
.PP
.BR "winedbg"
.BI "file.mdmp"
.SH DESCRIPTION
.B winedbg
is a debugger for Wine. It allows:
.RS 4
.nf
+ debugging native Win32 applications
+ debugging Winelib applications
+ being a drop-in replacement for Dr Watson
.fi
.RE
.PP

.SH MODES
\fBwinedbg\fR can be used in five modes.  The first argument to the
program determines the mode winedbg will run in.
.IP \fBdefault\fR
Without any explicit mode, this is standard \fBwinedbg\fR operating
mode. \fBwinedbg\fR will act as the front end for the user.
.IP \fB--gdb\fR
\fBwinedbg\fR will be used as a proxy for \fBgdb\fR. \fBgdb\fR will be
the front end for command handling, and \fBwinedbg\fR will proxy all
debugging requests from \fBgdb\fR to the Win32 APIs.
.IP \fB--auto\fR
This mode is used when \fBwinedbg\fR is set up in \fIAeDebug\fR
registry entry as the default debugger. \fBwinedbg\fR will then
display basic information about a crash. This is useful for users
who don't want to debug a crash, but rather gather relevant
information about the crash to be sent to developers.
.IP \fB--minidump\fR
This mode is similar to the \fB--auto\fR one, except that instead of
printing the information on the screen (as \fB--auto\fR does), it's
saved into a minidump file. The name of the file is either passed on
the command line, or generated by \fBWineDbg\fR when none is given.
This file could later on be reloaded into \fBwinedbg\fR for further
examination.
.IP \fBfile.mdmp\fR
In this mode \fBwinedbg\fR reloads the state of a debuggee which
has been saved into a minidump file. See either the \fBminidump\fR
command below, or the \fB--minidump mode\fR.

.SH OPTIONS
When in \fBdefault\fR mode, the following options are available:
.PP
.IP \fB--command\ \fIstring\fR
\fBwinedbg\fR will execute the command \fIstring\fR as if it was keyed on
winedbg command line, and then will exit. This can be handy for
getting the pid of running processes (winedbg --command "info proc").
.IP \fB--file\ \fIfilename\fR
\fBwinedbg\fR will execute the list of commands contained in file
filename as if they were keyed on winedbg command line, and then
will exit.
.PP
When in \fBgdb\fR proxy mode, the following options are available:
.PP
.IP \fB--no-start\fR
\fBgdb\fR will not be automatically
started. Relevant information for starting \fBgdb\fR are printed on
screen. This is somehow useful when not directly using \fBgdb\fR but
some graphical front-ends, like \fBddd\fR or \fBkgbd\fR. 
.IP \fB--with-xterm\fR
This will run \fBgdb\fR in its own xterm instead of using the current
Unix console for textual display.
.PP
In all modes, the rest of the command line, when passed, is used to 
identify which programs, if any, has to debugged:
.IP \fBprogram\ name\fR
This is the name of an executable to start for a debugging
session.  \fBwinedbg\fR will actually create a process with this
executable. If \fBprograms arguments\fR are also given, they will be
used as arguments for creating the process to be debugged.
.IP \fBpid\fR
\fBwinedbg\fR will attach to the process which pid is \fBpid\fR (pids
refer to Win32 pids, not Unix pids). Use the \fIinfo proc\fR
\fBwinedbg\fR command to list running processes and their Win32 pids.
.IP \fBdefault\fR
If nothing is specified, you will enter the debugger without any run
nor attached process. You'll have to do the job yourself.

.SH COMMANDS
.SS Default mode, and while reloading a minidump file:
.PP
Most of commands used in \fBwinedbg\fR are similar to the ones from
\fBgdb\fR. Please refer to the \fBgdb\fR documentations for some more
details. See the \fIgdb\ differences\fR section later on to get a list
of variations from \fBgdb\fR commands.
.PP
\fIMisc. commands\fR
.IP \fBabort\fR
Aborts the debugger.
.IP \fBquit\fR
Exits the debugger.
.IP \fBattach\ \fIN\fR
Attach to a Wine process (\fIN\fR is its ID, numeric or hexadecimal).
IDs can be obtained using the \fBinfo\ process\fR command.  Note the
\fBinfo\ process\fR command returns hexadecimal values
.IP 
.IP \fBdetach\fR
Detach from a Wine-process.
.PP
\fIHelp commands\fR
.IP \fBhelp\fR
Prints some help on the commands.
.IP \fBhelp\ info\fR
Prints some help on info commands
.PP
\fIFlow control commands\fR
.IP \fBcont\fR
Continue execution until next breakpoint or exception.
.IP \fBpass\fR
Pass the exception event up to the filter chain.
.IP \fBstep\fR
Continue execution until next C line of code (enters function call)
.IP \fBnext\fR
Continue execution until next C line of code (doesn't enter function
call)
.IP \fBstepi\fR
Execute next assembly instruction (enters function call)
.IP \fBnexti\fR
Execute next assembly instruction (doesn't enter function call)
.IP \fBfinish\fR
Execute until return of current function is reached.
.PP
\fBcont\fR, \fBstep\fR, \fBnext\fR, \fBstepi\fR, \fBnexti\fR can be
postfixed by a number (N), meaning that the command must be executed N
times before control is returned to the user.
.PP
\fIBreakpoints, watchpoints
.IP \fBenable\ \fIN\fR
Enables (break|watch)-point \fIN\fR
.IP \fBdisable\ \fIN\fR
Disables (break|watch)-point \fIN\fR
.IP \fBdelete\ \fIN\fR
Deletes (break|watch)-point \fIN\fR
.IP \fBcond\ \fIN\fR
Removes any existing condition to (break|watch)-point \fIN\fR
.IP \fBcond\ \fIN\ expr\fR
Adds condition \fIexpr\fR to (break|watch)-point
\fIN\fR. \fIexpr\fR will be evaluated each time the
(break|watch)-point is hit. If the result is a zero value, the
breakpoint isn't triggered.
.IP \fBbreak\ *\ \fIN\fR
Adds a breakpoint at address \fIN\fR
.IP \fBbreak\ \fIid\fR
Adds a breakpoint at the address of symbol \fIid\fR
.IP \fBbreak\ \fIid\ N\fR
Adds a breakpoint at the line \fIN\fR inside symbol \fIid\fR.
.IP \fBbreak\ \fIN\fR
Adds a breakpoint at line \fIN\fR of current source file.
.IP \fBbreak\fR
Adds a breakpoint at current \f$PC\fR address.
.IP \fBwatch\ *\ \fIN\fR
Adds a watch command (on write) at address \fIN\fR (on 4 bytes).
.IP \fBwatch\ \fIid\fR
Adds a watch command (on write) at the address of symbol
\fIid\fR. Size depends on size of \fIid\fR.
.IP \fBrwatch\ *\ \fIN\fR
Adds a watch command (on read) at address \fIN\fR (on 4 bytes).
.IP \fBrwatch\ \fIid\fR
Adds a watch command (on read) at the address of symbol
\fIid\fR. Size depends on size of \fIid\fR.
.IP \fBinfo\ break\fR
Lists all (break|watch)-points (with their state).
.PP
You can use the symbol \fBEntryPoint\fR to stand for the entry point of the Dll.
.PP
When setting a (break|watch)-point by \fIid\fR, if the symbol cannot
be found (for example, the symbol is contained in a not yet loaded
module), \fBwinedbg\fR will recall the name of the symbol and will try
to set the breakpoint each time a new module is loaded (until it succeeds). 
.PP
\fIStack manipulation\fR
.IP \fBbt\fR
Print calling stack of current thread.
.IP \fBbt\ \fIN\fR
Print calling stack of thread of ID \fIN\fR. Note: this doesn't change
the position of the current frame as manipulated by the \fBup\fR &
\fBdn\fR commands).
.IP \fBup\fR
Goes up one frame in current thread's stack
.IP \fBup\ \fIN\fR
Goes up \fIN\fR frames in current thread's stack
.IP \fBdn\fR
Goes down one frame in current thread's stack
.IP \fBdn\ \fIN\fR
Goes down \fIN\fR frames in current thread's stack
.IP \fBframe\ \fIN\fR
Sets \fIN\fR as the current frame for current thread's stack.
.IP \fBinfo\ locals\fR
Prints information on local variables for current function frame.
.PP
\fIDirectory & source file manipulation\fR
.IP \fBshow\ dir\fR
Prints the list of dirs where source files are looked for.
.IP \fBdir\ \fIpathname\fR
Adds \fIpathname\fR to the list of dirs where to look for source
files
.IP \fBdir\fR
Deletes the list of dirs where to look for source files
.IP \fBsymbolfile\ \fIpathname\fR
Loads external symbol definition file \fIpathname\fR
.IP \fBsymbolfile\ \fIpathname\ N\fR
Loads external symbol definition file \fIpathname\fR (applying
an offset of \fIN\fR to addresses)
.IP \fBlist\fR
Lists 10 source lines forwards from current position.
.IP \fBlist\ -\fR
Lists 10 source lines backwards from current position
.IP \fBlist\ \fIN\fR
Lists 10 source lines from line \fIN\fR in current file
.IP \fBlist\ \fIpathname\fB:\fIN\fR
Lists 10 source lines from line \fIN\fR in file \fIpathname\fR
.IP \fBlist\ \fIid\fR
Lists 10 source lines of function \fIid\fR
.IP \fBlist\ *\ \fIN\fR
Lists 10 source lines from address \fIN\fR
.PP
You can specify the end target (to change the 10 lines value) using
the ',' separator. For example:
.IP \fBlist\ 123,\ 234\fR
lists source lines from line 123 up to line 234 in current file
.IP \fBlist\ foo.c:1,56\fR
lists source lines from line 1 up to 56 in file foo.c
.PP
\fIDisplaying\fR
.PP
A display is an expression that's evaluated and printed after the
execution of any \fBwinedbg\fR command.
.IP \fBdisplay\fR
.IP \fBinfo\ display\fR
Lists the active displays
.IP \fBdisplay\ \fIexpr\fR
Adds a display for expression \fIexpr\fR
.IP \fBdisplay\ /\fIfmt\ \fIexpr\fR
Adds a display for expression \fIexpr\fR. Printing evaluated
\fIexpr\fR is done using the given format (see \fBprint\ command\fR
for more on formats)
.IP \fBdel\ display\ \fIN\fR
.IP \fBundisplay\ \fIN\fR
Deletes display \fIN\fR
.PP
\fIDisassembly\fR
.IP \fBdisas\fR
Disassemble from current position
.IP \fBdisas\ \fIexpr\fR
Disassemble from address \fIexpr\fR
.IP \fBdisas\ \fIexpr\fB,\fIexpr\fR
Disassembles code between addresses specified by the two expressions
.PP
\fIMemory\ (reading,\ writing,\ typing)\fR
.IP \fBx\ \fIexpr\fR
Examines memory at address \fIexpr\fR
.IP \fBx\ /\fIfmt\ expr\fR
Examines memory at address \fIexpr\fR using format \fIfmt\fR
.IP \fBprint\ \fIexpr\fR
Prints the value of \fIexpr\fR (possibly using its type)
.IP \fBprint\ /\fIfmt\ expr\fR
Prints the value of \fIexpr\fR (possibly using its type)
.IP \fBset\ \fIvar\fB\ =\ \fIexpr\fR
Writes the value of \fIexpr\fR in \fIvar\fR variable
.IP \fBwhatis\ \fIexpr\fR
Prints the C type of expression \fIexpr\fR
.PP
.IP \fIfmt\fR
is either \fIletter\fR or \fIcount letter\fR, where \fIletter\fR
can be:
.RS 4
.IP s
an ASCII string
.IP u
a UTF16 Unicode string
.IP i
instructions (disassemble)
.IP x
32-bit unsigned hexadecimal integer
.IP d
32-bit signed decimal integer
.IP w
16-bit unsigned hexadecimal integer
.IP c
character (only printable 0x20-0x7f are actually printed)
.IP b
8-bit unsigned hexadecimal integer
.IP g
Win32 GUID
.RE
.PP
\fIExpressions\fR
.PP
Expressions in Wine Debugger are mostly written in a C form. However,
there are a few discrepancies:
.PP
.RS 4
Identifiers can take a '!' in their names. This allows mainly to
specify a module where to look the ID from, e.g. \fIUSER32!CreateWindowExA\fR.
.PP
In a cast operation, when specifying a structure or a union, you must
use the struct or union keyword (even if your program uses a typedef).
.RE
.PP
When specifying an identifier, if several symbols with
this name exist, the debugger will prompt for the symbol you want to
use. Pick up the one you want from its number.
.PP
\fIMisc.\fR
.PP
.IP \fBminidump\ file.mdmp\fR
saves the debugging context of the debuggee into a minidump file called 
file.mdmp
.PP
\fIInformation on Wine internals\fR
.IP \fBinfo\ class\fR
Lists all Windows classes registered in Wine
.IP \fBinfo\ class\ \fIid\fR
Prints information on Windows class \fIid\fR
.IP \fBinfo\ share\fR
Lists all the dynamic libraries loaded in the debugged program
(including .so files, NE and PE DLLs)
.IP \fBinfo\ share\ \fIN\fR
Prints information on module at address \fIN\fR
.IP \fBinfo\ regs\fR
Prints the value of the CPU registers
.IP \fBinfo\ all-regs\fR
Prints the value of the CPU and Floating Point registers
.IP \fBinfo\ segment\fR
Lists all allocated segments (i386 only)
.IP \fBinfo\ segment\ \fIN\fR
Prints information on segment \fIN\fR (i386 only)
.IP \fBinfo\ stack\fR
Prints the values on top of the stack
.IP \fBinfo\ map\fR
Lists all virtual mappings used by the debugged program
.IP \fBinfo\ map\ \fIN\fR
Lists all virtual mappings used by the program of pid \fIN\fR
.IP \fBinfo\ wnd\fR
Displays the window hierarchy starting from the desktop window
.IP \fBinfo\ wnd\ \fIN\fR
Prints information of Window of handle \fIN\fR
.IP \fBinfo\ process\fR
Lists all w-processes in Wine session
.IP \fBinfo\ thread\fR
Lists all w-threads in Wine session
.IP \fBinfo\ frame\fR
Lists the exception frames (starting from current stack frame). You
can also pass, as optional argument, a thread id (instead of current
thread) to examine its exception frames.
.PP
Debug messages can be turned on and off as you are debugging using
the \fBset\fR command, but only for channels initialized with the
\fIWINEDEBUG\fR environment variable.
.IP \fBset\ warn\ +\ \fIwin\fR
Turns on warn on \fIwin\fR channel
.IP \fBset\ +\ \fIwin\fR
Turns on warn/fixme/err/trace on \fIwin\fR channel
.IP \fBset\ -\ \fIwin\fR
Turns off warn/fixme/err/trace on \fIwin\fR channel
.IP \fBset\ fixme\ -\ all\fR
Turns off fixme class on all channels
.PP
.SS Gdb mode:
.PP
See the \fBgdb\fR documentation for all the \fBgdb\fR commands.
.PP
However, a few Wine extensions are available, through the
\fBmonitor\fR command:
.IP \fBmonitor\ wnd\fR
Lists all windows in the Wine session
.IP \fBmonitor\ proc\fR
Lists all processes in the Wine session
.IP \fBmonitor\ mem\fR
Displays memory mapping of debugged process
.PP
.SS Auto and minidump modes:
.PP
Since no user input is possible, no commands are available.

.SH ENVIRONMENT
.IP \fBWINE_GDB\fR
When used in \fBgdb\fR proxy mode, \fBWINE_GDB\fR specifies the name
(and the path) of the executable to be used for \fBgdb\fR. \fB"gdb"\fR
is used by default.
.SH AUTHORS
The first version was written by Eric Youngdale.
.PP
See Wine developers list for the rest of contributors.
.SH BUGS
Bugs can be reported on the
.UR http://bugs.winehq.org
.B Wine bug tracker
.UE .
.SH AVAILABILITY
.B winedbg
is part of the Wine distribution, which is available through WineHQ,
the
.UR http://www.winehq.org/
.B Wine development headquarters
.UE .
.SH "SEE ALSO"
.BR wine (1),
.br
.UR http://www.winehq.org/help
.B Wine documentation and support
.UE .
