delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2007/08/01/11:51:11

X-Spam-Check-By: sourceware.org
Message-ID: <46B0ABD2.E4F926E9@dessent.net>
Date: Wed, 01 Aug 2007 08:50:42 -0700
From: Brian Dessent <brian AT dessent DOT net>
X-Mailer: Mozilla 4.79 [en] (Windows NT 5.0; U)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: Stack traces in own program in cygwin
References: <46B07604 DOT 9000605 AT odd-e DOT com>
X-IsSubscribed: yes
Reply-To: cygwin AT cygwin DOT com
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019