Stack traces in own program in cygwin
Bas Vodde
basv@odd-e.com
Wed Aug 1 22:45:00 GMT 2007
Hi Brian,
Thanks for the reply. Where can I find the cygwin code that unwinds the
stack? I might have a look at it anyway :)
The problem I have with dbghelp is not whether the DLL is available, but
whether the WinSDK is... It would require a header file (which is
possible to fake) and a .lib. I'm not sure how to call the dbghelp calls
without linking to the library. (though this should be possible, I just
don't know how and where to find info about how to do it). If you for an
idea about this, then that also could help me forward :)
Thanks!
Bas
Brian Dessent wrote:
> Bas Vodde wrote:
>
>> I'm working on some unit testing framework and was thinking of building
>> in some functionality for stack traces. I checked what functionality is
>> available and found glibc contains execinfo.h with backtrace which can
>> be used (for linux).
>
> Yes, that's glibc-specific functionality which is not applicable
> elsewhere.
>
>> For Windows, I use gcc and cygwin. I cannot find the execlib.h in cygwin
>> at all, so I'll need to find a different way. In Windows I can probably
>> use the MS dbghelp.dll, but that would create a dependency on Win SDK,
>> which I prefer not having.
>
> There is rudimentary code in Cygwin for trying to unwind the stack, but
> it's only used in fatal error conditions such as when a SEGV fault
> occurs and the <foo>.exe.stackdump file is written. And this just shows
> the raw memory addresses of the call chain, it does not attempt to
> resolve them into symbolic functions, so it would be quite useless for a
> user.
>
> It is possible to write code that uses the dbghelp library that does not
> need anything third party tools installed, as the library is included as
> part of the operating system since Win2k. However, the bundled version
> may be quite old, so it might not have all the functionality of a newer
> one. See e.g. <http://msdn2.microsoft.com/en-us/library/ms679294.aspx>
>
> You could also bundle a copy of gdb, and then attach-backtrace-detach,
> but that's probably not the kind of answer you're looking for.
>
> Brian
>
> --
> Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
> Problem reports: http://cygwin.com/problems.html
> Documentation: http://cygwin.com/docs.html
> FAQ: http://cygwin.com/faq/
>
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
More information about the Cygwin
mailing list