Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-dev] target unexpectedly stops on a SIGINT while setting breakpoint on running target

I'm encountering an intermittent problem setting a breakpoint while the target is running on mingw/gdb 7.0. The target ends up becoming unexpectedly suspended because of a SIGINT.

The target program is in the middle of a Win32 Sleep() call when I try to set the breakpoint. The next thing I expect to happen is that the breakpoint is hit. Instead, the target stops in an unexpected location. Interestingly enough, gdb seems to warn the debugger that this is going to happen (see bold/red trace line below). Any gdb experts out there know why this is happening?

Command 103 is when I hit resume in the debugger. The target program moves on to the Sleep() call.
Command 104 is when I tell the debugger to set a breakpoint (while the target is running). The debugger has, of course, silently interrupted GDB in order to do so
Command 105 is when the debugger silently resumes the target after having set the breakpoint

Note that the foreboding response to 103 only happens after 104.

John

103-exec-continue
103^running
*running,thread-id="all"
(gdb)
=thread-created,id="2",group-id="3828"
~"[New Thread 3828.0x12ac]\n"
[New Thread 3828.0x12ac]
~"[Switching to Thread 3828.0x12ac]\n"
[Switching to Thread 3828.0x12ac]
*stopped,frame={addr="0x7c810856",func="KERNEL32!CreateThread",args=[],from="C:\\WINDOWS\\system32\\kernel32.dll"},thread-id="2",stopped-threads="all"
104-break-insert c_simple_mingw.c:5
103^error,msg="Quit (expect signal SIGINT when the program is resumed)"
=thread-selected,id="2"
(gdb)
104^done,bkpt={number="3",type="breakpoint",disp="keep",enabled="y",addr="0x00401310",func="main",file="../src/c_simple_mingw.c",fullname="C:/eclipse_3.6M5/runtime-New_configuration/c_simple_mingw/.settings/../src/c_simple_mingw.c",line="5",times="0",original-location="c_simple_mingw.c:5"}
(gdb)
105-exec-continue
105^running
*running,thread-id="all"
(gdb)
*stopped,reason="signal-received",signal-name="SIGINT",signal-meaning="Interrupt",frame={addr="0x7c874fed",func="KERNEL32!GetConsoleCharType",args=[],from="C:\\WINDOWS\\system32\\kernel32.dll"},thread-id="2",stopped-threads="all"
(gdb)

Back to the top