[PATCH] Improve strace to log most Windows debug events
Wed Jun 10 18:47:00 GMT 2015
On 10/06/2015 18:23, Corinna Vinschen wrote:
> On Jun 10 17:44, Corinna Vinschen wrote:
>> On Jun 10 16:18, Corinna Vinschen wrote:
>>> On Jun 10 16:11, Corinna Vinschen wrote:
>>>> Hi Jon,
>>>> On Jun 10 13:05, Jon TURNEY wrote:
>>>>> Not sure if this is wanted, but on a couple of occasions recently I have been
>>>>> presented with strace output which contains an exception at an address in an
>>>>> unknown module (i.e. not in the cygwin DLL or the main executable), so here is a
>>>>> patch which adds some more information, including DLL load addresses, to help
>>>>> interpret such straces.
>>>> That's a nice addition. Two points, though:
>>>> - Do we *always* want that output or do we want a way to switch it on
>>>> and off? If the latter, we can simply add another _STRACE_foo option
>>>> for it.
I'm not sure it makes much sense to use a _STRACE_foo flag, since those
form a mask applied to a set of flags emitted by the cygwin DLL.
I added a command line option to turn this additional logging off.
>>>> - The GetFileNameFromHandle function could be much simpler. Rather than
>>>> opening a mapping object for ev.u.LoadDll.hFile, just use the existing
>>>> mapping object from ev.u.LoadDll.lpBaseOfDll.
>>> ...with the process handle taken from get_child(ev.dwProcessId).
>> And since I'm generally fuzzy and unclear in my first reply:
>> Of course, ev.u.LoadDll.lpBaseOfDll is not the mapping *object*, but the
>> mapping *address*. So you neither have to call CreateFileMapping nor
>> MapViewOfFile. Just call GetMappedFileNameW (get_child (ev.dwProcessId),
>> ev.u.LoadDll.lpBaseOfDll, ...)
> This works for me resulting in Win32 pathnames. These are only the
> affected diff hunks, I omited the rest. Does that work for you?
> Btw., I don't like using MAX_PATH as maximum path length, but I think
> DLL paths can't be longer anyway, so that should be ok...
> diff --git a/winsup/utils/strace.cc b/winsup/utils/strace.cc
> index 73096ab..0661e17 100644
> --- a/winsup/utils/strace.cc
> +++ b/winsup/utils/strace.cc
Yes, that seems to work.
More information about the Cygwin-patches