Esko Woudenberg wrote:
I found info on WINEDEBUG and am currently running it set to +relay This results in 300+ Megabyte debug file. (Ran system out of memory trying to loot at it with Konq) I have then been using "tail" to grab just the last few thousand lines of it... It always ends with hundreds/thousands of calls to ntdll.RtlEnterCriticalSection and ntdll.RtsLeaveCriticalSection
Wonderful tool, that WINEDEBUG! I'm very much a newbie too, and the WINEDEBUG stuff really helps me getting just a little bit of understanding about what is going on. Love it.
In the manual here: http://www.winehq.com/docs/wine-user.html#CONFIG-FILE-HOW
I've found that you can exclude those CriticalSection messages which you probably don't care about. That should give you a much smaller file and faster execution times, which is always nice when you're debugging.
You need to put the following key/value somewhere in your registry - the manual and winehq pages are, ahem, not very explicit about where to put them, but supposedly somewhere under key named 'Debug'...:
"RelayExclude" = "RtlEnterCriticalSection;RtlLeaveCriticalSection"
followed by err:seh:setup_exception stack overflow ### bytes in thread #### eip ###### esp ###### stack 0x##### - 0x####
Found a bit in a wine debugging tutorial: http://wiki.winehq.org/Debugging_%27Wild_Metal_Country'
Which explains nicely that what you see is an infinite loop, I think somewhere in Wine's exception handling code, and that you should debug with +seh to see what's going on.
I am planning on using the HKLM\Software\Wine\Wine existence to let the app know it is running on wine...
Sounds hackish :-).
The app itself also has a "debug mode" that logs events to a file while running - is there a way to send these messages to the same log as WINEDEBUG? That way I would be able to see what method or function of the app resulted in the thousands of calls into the WIN32 API...
Quah? Mebbe. Easiest thing would probably be to make your app write to stderr instead of that file it's using?
There's also a hack in the manual (see first link) that will send WINEDEBUG messages to a file, but then again so will 2> ...