.TH WINEDBG 1 "October 2005" "@PACKAGE_STRING@" "Wine Developers Manual"
.SH NAME
winedbg \- Wine debugger
.SH SYNOPSIS
.B winedbg
.RI "[ " options " ] [ " program_name " [ " program_arguments " ] | " wpid " ]"
.PP
.B winedbg --gdb
.RI "[ " options " ] [ " program_name " [ " program_arguments " ] | " wpid " ]"
.PP
.BI "winedbg --auto " wpid
.PP
.B winedbg --minidump
.RI "[ " file.mdmp " ] " wpid
.PP
.BI "winedbg " 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 \fIprogram_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 \fIprograms_arguments\fR are also given, they will be
used as arguments for creating the process to be debugged.
.IP \fIwpid\fR
\fBwinedbg\fR will attach to the process which Windows pid is \fIwpid\fR.
Use the \fBinfo proc\fR command within \fBwinedbg\fR to list running processes
and their Windows 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 Windows 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
.BI "minidump " file.mdmp
saves the debugging context of the debuggee into a minidump file called 
\fIfile.mdmp\fR.
.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 Windows 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. "gdb"
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 .
