Search code examples
gdbeclipse-cdt

How to prevent Eclipse CDT/GDB from breaking on signals (select system call)?


Eclipse CDT is constantly breaking in select system call. And this makes debugging very difficult - another process depends on timeout. At the beginning Eclipse has shown "Can't find a source file" dialog:

Can't find a source file at "/build/glibc-OTsEL5/glibc-2.27/misc/../sysdeps/unix/sysv/linux /select.c" Locate the file or edit the source lookup path to include its location.

In preferences I switched option "Show source not found editor" to "Never" - it stoped opening editor but continue to break. How to stop breaking in such places (in files that do not belong to project)?


Solution

  • This is because of signal received by program and it's possible to skip break. It stops not because of absent source file, in my case - absent file is coincident only and only because of absent file debugger will not stop. In Debugger console I noticed following:

    Program received signal SIG34, Real-time event 34.
    0x00007ffff78f2ff7 in __GI___select (nfds=7,  at ../sysdeps/unix/sysv/linux/select.c:41      in ../sysdeps/unix/sysv/linux/select.c
    

    This break is because of signal. Documentation says that it's possible to skip breaking on signals using handle command. I used following gdb command:

    (gdb) handle SIG34 nostop
    

    Now program is not interrupted (there is notice in console about each signal).