[
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