[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