[Wine] Re: debugging an app
Duane Clark
fpga at pacbell.net
Wed May 23 12:13:05 CDT 2007
Henry Gomersall wrote:
> I'm trying to debug a program that page faults on me, and I'm actually
> quite keen to have a go at fixing it myself.
>
> Unfortunately, I seem to have fallen at the first hurdle: I can't make
> good use of the debug messages.
>
> Background:
> The program I am attempting to run is TrackLogs
> ( http://www.tracklogs.co.uk ). Installation went fine and on first run
> I got the licence key dialogue, which I filled and it was after that It
> crashed. On restart, it prompts me to accept that I have so many days
> left on the licence, and then it crashes as I continue. Attached are the
> various dubugging dumps (so I get a single dialogue screen before the
> crash).
>
> Debugging:
> If I set the windows version (within winecfg) to XP or 2000, I end up
> getting the same calls repeated as long as I can be bothered to wait.
> Running "WINEDEBUG=+relay wine TrackLogsV3.exe"...
You mean you are letting the messages print to your terminal? That will
likely slow things down too much to be useful. Better to redirect to a file:
WINEDEBUG=+relay wine TrackLogsV3.exe &> wine.log
That will still be slower than without debugging, but should be fast
enough to be useful. The file can sometimes be vary large (>1GB) though
since it apparently is failing early, probably it will not be so big.
After the log is written to a file, I generally find it easier to chop
into pieces:
split --bytes=20m wine.log
That will create files named xaa, xab ...
If you are going through the relay traces, there is a tool in the wine
tree that makes them easier to read (at least for me):
wine/tools/examine-relay xaa -f > xaa2
Now the file xaa2 will have the relay traces nicely indented.
> I get the following
> calls repeated:
> 0009:Call KERNEL32.TlsGetValue(00000001) ret=7c34964c
> 0009:Ret KERNEL32.TlsGetValue() retval=00db00f8 ret=7c34964c
> 0009:Call KERNEL32.SetLastError(0000007a) ret=7c3496a2
> 0009:Ret KERNEL32.SetLastError() retval=0000007a ret=7c3496a2
> 0009:Call KERNEL32.GetLastError() ret=7c34963e
> 0009:Ret KERNEL32.GetLastError() retval=0000007a ret=7c34963e
In your ~/.wine/user.reg, there is a registry key:
[Software\\Wine\\Debug] 1147111116
"RelayExclude"="ntdll.RtlEnterCriticalSection;ntdll.RtlLeaveCriticalSection;kernel32.97;kernel32.98"
Try adding kernel32.TlsGetValue etc to it.
> If I set the windows version to 98, I get as the final few lines:
Does the program run under Win98? In any case, I wouldn't bother trying
to run it that way.
More information about the wine-users
mailing list