This is the mail archive of the cygwin 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]
Other format: [Raw text]

Re: Cygwin shell eats Windows exceptions?


On 2016-10-13 11:56, Bill Smith wrote:
On 2016-10-13 08:35, Bill Smith wrote:
I'm trying to run my Windows C++ application which has a call to
DebugBreak() to bring up the popup asking if you want to debug this
application or terminate it. If I run the program within Cygwin, the
program just exits.
If I run the application from a Windows command prompt, I get the
Windows popup that I'm expecting. It seems that the Cygwin shell is
eating exceptions (sigsegv or similar signals?). Is there a way for me
to disable this behavior?

Not giving us much info to go on here - is this a Cygwin, curses, Cygwin/X, or
Windows native app, and what kind of popup is used?
If a Windows native app, is it a console app, or do you run it with cygstart
from Cygwin?
If a Cygwin or X app, have you tried running strace, gdb (or a GUI FE) on it?
If the latter, please post or attach the results, and attach the output from
cygcheck -svr in a reply.
[Bill Smith]
Sorry for the lack of info.  This is a Windows native console application.  Here's the source code:
#include <windows.h>
int main()
{
  DebugBreak();
}
Compiled it with Visual Studio 2010:
cl debug.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.
debug.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.
/out:debug.exe
debug.obj
When you run the application from a Windows command prompt, you get a popup similar to:
http://imgur.com/a/VCgeW
It says "debug.exe has stopped working" and it gives you the option of closing the program, checking online for a solution, or to debug the program.
From a Cygwin shell, nothing happens.
Another example is to do an access violation (segv) with a program like this:
int main() {
 int* f = 0;
  *f = 1234;
}
In Cygwin, It'll say "Segmentation Fault" and fail.  In Windows command prompt, I get the same popup with the other program which gives me the option to bring up the debugger.
Our product is built using the Visual Studio compiler and we do the build & test from within a Cygwin shell (c:\cygwin\bin\sh.exe).
I attached the cygcheck -svr output to this email.

As it pops up a Windows msgbox, and the process is being run under a pty (pseudo-tty) without any window available, that will just fail.
Why not just trap and report any exceptions console style and return an error?

If you need to do interactive debugging, run it under cmd or with cygstart.
If you need the best of both worlds, you can translate your scripts from bash to cmd and have the option.

--
--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


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