Я прикрепляю gdb
к исполняемому файлу, который был скомпилирован с флагами отладки. gdb
зависает при __read_nocancel
звонке. Если я запустил исполняемый файл без подключения gdb
, тогда все в порядке, и приложение завершится нормально с ожидаемым результатом.
Я немного погуглил, но не могу найти ничего конкретного. Может ли кто-нибудь предложить какое-либо решение или обходной путь? Это известная проблема?
Изменить:
Оказывается, та библиотека, которую я использую, использует вилки и Python в фоновом режиме. После того, как я переключаюсь на inferior 1
и продолжаю, программа зависает.
Reading symbols from /usr/bin/python2.7...
[Attaching after process 13040 fork to child process 13041]
[New inferior 3 (process 13041)]
process 13041 is executing new program: /usr/bin/uname
[Inferior 3 (process 13041) exited normally]
(gdb) inferior 1
[Switching to inferior 1 [process 12455] (/usr/bin/python2.7)]
[Switching to thread 1.1 (Thread 0x7fec1cee5740 (LWP 12455))]
#0 0x00007fec1bc8cf42 in fork () from /lib64/libc.so.6
(gdb) c
Continuing.
^C
Thread 1.1 "python" received signal SIGINT, Interrupt.
0x00007fec1bcb6f70 in __read_nocancel () from /lib64/libc.so.6
(gdb) where
#0 0x00007ffff6db2f70 in __read_nocancel () from /lib64/libc.so.6
#1 0x00007ffff6d3fb14 in __GI__IO_file_underflow () from /lib64/libc.so.6
#2 0x00007ffff6d41063 in _IO_default_xsgetn () from /lib64/libc.so.6
#3 0x00007ffff6d32fdf in fread () from /lib64/libc.so.6
#4 0x00007ffff7a364ca in file_read (f=0x7fffeac4f8a0, args=<optimized out>) at Objects/fileobject.c:1084
#5 0x00007ffff7ac6345 in call_function (oparg=<optimized out>, pp_stack=0x7ffffffef5e0) at Python/ceval.c:4352
[Attaching after process 18291 fork to child process 18293]
[New inferior 3 (process 18293)]
process 18293 is executing new program: /usr/bin/uname
[Inferior 3 (process 18293) exited normally]
(gdb) info inferiors
Num Description Executable
1 process 18271 /opt/cpp_stuff/tests/test
2 process 18291 /usr/bin/bash
* 3 <null> /usr/bin/uname
(gdb)