This is the mail archive of the cygwin@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Creating core dumps and gdb tracing...


Consider a simple program like so:

int main()
{
    char * foo = 0;
    crashme(foo);
}

int crashme(char * cp);
{
    strcpy(cp, "KABOOM!!");
}

Compiling and linking it under W2K using cygwin produces an executable that
does not produce a core file when it crashes.  One way around this would be
to run it via gdb (ie: gdb crashme.exe) which will allow me to catch the
offending statement.  However, I would really prefer a core file to work
with as I don't have to "recreate" the situation in order to see what is
going on.

Regardless, when I use gdb to catch the seg fault... the stack window isn't
providing me with any useful information.  When I open up the gdb console
and try "backtrace" I get something to the effect of:

"Error: #0  0x61070850 in _size_of_stack_reserve__ ()
Cannot access memory at address 0x2000000"

Normally I would expect the backtrace to produce something meaningful like
it does under Solaris like so:

#0  0xef6a4644 in strcpy () from /usr/lib/libc.so.1
#1  0x10598 in crashme (cp=0x0) at test.c:9
#2  0x10574 in main () at test.c:4

So my questions are:

1)  How do I have executables automatically create a core file?
2)  Why can't I see the stack frames in gdb?

Could anyone explain this to me outright or point me towards a FAQ?

Regards,

Shelby Cain



--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]