Commit 109fb9c5 authored by Tony Lambregts's avatar Tony Lambregts Committed by Alexandre Julliard

Update the debugger documentation for current usage.

parent 5926cea7
...@@ -271,8 +271,9 @@ winedbg "hl.exe -windowed" ...@@ -271,8 +271,9 @@ winedbg "hl.exe -windowed"
<para> <para>
This file describes where to start debugging Wine. If at any This file describes where to start debugging Wine. If at any
point you get stuck and want to ask for help, please read the point you get stuck and want to ask for help, please read the
file <filename>documentation/bugreports</filename> for <emphasis>How to Report A Bug</emphasis> section of the
information on how to write useful bug reports. <emphasis>Wine Users Guide</emphasis> for information on how to write
useful bug reports.
</para> </para>
<sect2> <sect2>
...@@ -311,8 +312,7 @@ winedbg "hl.exe -windowed" ...@@ -311,8 +312,7 @@ winedbg "hl.exe -windowed"
<para> <para>
Steps to debug a crash. You may stop at any step, but please Steps to debug a crash. You may stop at any step, but please
report the bug and provide as much of the information report the bug and provide as much of the information
gathered to the newsgroup or the relevant developer as gathered to the bug report as feasible.
feasible.
</para> </para>
<orderedlist> <orderedlist>
...@@ -362,17 +362,26 @@ winedbg "hl.exe -windowed" ...@@ -362,17 +362,26 @@ winedbg "hl.exe -windowed"
If you have found a misbehaving function, try to find out If you have found a misbehaving function, try to find out
why it misbehaves. Find the function in the source code. why it misbehaves. Find the function in the source code.
Try to make sense of the arguments passed. Usually there is Try to make sense of the arguments passed. Usually there is
a <function>TRACE(&lt;channel>,"(...)\n");</function> at a <function>WINE_DEFAULT_DEBUG_CHANNEL(&lt;channel>);</function>
the beginning of the function. Rerun wine with at the beginning of the file. Rerun wine with
<parameter>-debugmsg +xyz,+relay</parameter> added to the <parameter>-debugmsg +xyz,+relay</parameter> added to the
commandline. commandline.
</para> </para>
<para>
Occasionally there are additional debug channels defined at the
begining of the file in the form.
<function>WINE_DECLARE_DEBUG_CHANNEL(&lt;channel>);</function>
If so the offending fuction may also uses one of these alternate
channels. Look through the the function for
<function>TRACE_(&lt;channel>)(" ... /n");</function> and add any
additional channels to the commandline.
</para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Additional information on how to debug using the internal Additional information on how to debug using the internal
debugger can be found in debugger can be found in
<filename>debugger/README</filename>. <filename>programs/winedbg/README</filename>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
...@@ -386,29 +395,25 @@ winedbg "hl.exe -windowed" ...@@ -386,29 +395,25 @@ winedbg "hl.exe -windowed"
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
If even that isn't enough, add more debug output for If even that isn't enough, add more debug output for yourself
yourself into the functions you find relevant. See into the functions you find relevant. See The section on Debug
<filename>documentation/debug-msgs</filename>. You might Logging in this guide for more information. You might
also try to run the program in <command>gdb</command> also try to run the program in <command>gdb</command>
instead of using the WINE-debugger. If you do that, use instead of using the WINE-debugger. If you do that, use
<parameter>handle SIGSEGV nostop noprint</parameter> to <parameter>handle SIGSEGV nostop noprint</parameter> to
disable the handling of seg faults inside disable the handling of seg faults inside
<command>gdb</command> (needed for Win16). If you don't use <command>gdb</command> (needed for Win16).
the <parameter>--desktop</parameter> or
<parameter>--managed</parameter> option, start the WINE
process with <parameter>--sync</parameter>, or chances are
good to get X into an unusable state.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
You can also set a breakpoint for that function. Start wine You can also set a breakpoint for that function. Start wine
with the <parameter>--debug</parameter> option added to the useing <command>winedbg</command> instead of
commandline. After loading the executable wine will enter <command>wine</command>. Once the debugger is is running enter
the internal debugger. Use <parameter>break <command>break</command> <parameter>KERNEL_LSTRLEN</parameter>
KERNEL_LSTRLEN</parameter> (replace by function you want (replace by function you want to debug, CASE IS RELEVANT)
to debug, CASE IS RELEVANT) to set a breakpoint. Then use to set a breakpoint. Then
<command>continue</command> to start normal use <command>continue</command> to start normal
program-execution. Wine will stop if it reaches the program-execution. Wine will stop if it reaches the
breakpoint. If the program isn't yet at the crashing call breakpoint. If the program isn't yet at the crashing call
of that function, use <command>continue</command> again of that function, use <command>continue</command> again
...@@ -425,6 +430,7 @@ winedbg "hl.exe -windowed" ...@@ -425,6 +430,7 @@ winedbg "hl.exe -windowed"
<title>Program hangs, nothing happens</title> <title>Program hangs, nothing happens</title>
<para> <para>
<emphasis>Fix me - this is out of date </emphasis>
Switch to UNIX shell, get the process-ID using <command>ps -a | Switch to UNIX shell, get the process-ID using <command>ps -a |
grep wine</command>, and do a <command>kill -HUP grep wine</command>, and do a <command>kill -HUP
&lt;pid></command> (without the &lt; and >). Wine will &lt;pid></command> (without the &lt; and >). Wine will
...@@ -449,8 +455,7 @@ winedbg "hl.exe -windowed" ...@@ -449,8 +455,7 @@ winedbg "hl.exe -windowed"
</para> </para>
<para> <para>
Since the failure happens usually directly before setting up Since the failure happens usually directly before setting up
the Messagebox you can start wine with the Messagebox you can start winedbg and set a
<parameter>--debug</parameter> added to the commandline, set a
breakpoint at <function>MessageBoxA</function> (called by win16 breakpoint at <function>MessageBoxA</function> (called by win16
and win32 programs) and proceed with and win32 programs) and proceed with
<command>continue</command>. With <parameter>--debugmsg <command>continue</command>. With <parameter>--debugmsg
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment