Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] DSF: cannot pause a program

At 09:41 AM 7/7/2009, Doug Schaefer wrote:
On Tue, Jul 7, 2009 at 9:59 AM, Dmitry Smirnov <divis1969@xxxxxxxxx> wrote:
2009/7/6 Doug Schaefer <cdtdoug@xxxxxxxxx>:
> Now from what I remember this is handled by using Windows Events to send a
> "signal" from the spawner.dll native to the starter.exe process which
> launches gdb. The starter does the CTRL_C_EVENT to itself to interrupt gdb.
> I think...

I had built starter.exe with debug info and tried to debug it. It
seems to work as expected: it tries to execute "kill -SIGINT pid",
where pid is the process ID, in my case of GDB (it does this because
it was detected as cygwin process).

I tried to do this manually: I started my Test.exe in gdb console and
tried both CTRL-C and kill -SIGINT.
CTRL-C pressed in console works good, whereas kill does not work!

I verified kill -SIGINT with few cygwin utilities (like python, top) -
it works: these processes terminate upon receiving this signal.
Also, GDB seems to receive it when there is no program running: it shows
(gdb) Quit
(gdb)

I believe my memories about working suspend are related to GDB 6.6
that I was before 6.8.

Cygwin is a moving target as well. We had to add the kill thing when they changed how they handled the Windows events and broke the integration. Cygwin tries as hard as possible to hide the fact you're on Windows, which messes up the CDT which needs to work with non-cygwin environments too.

The fix I'm working on involves actually sending a SIGKILL to the cygwin process when Spawner.kill() is called. Currently, calling Spawner.kill() and Spawner.terminate() do exactly the same thing--send a SIGTERM, which seems wrong to me.

John

Back to the top