2015-09-24 2 views
2

Мой проект загружает libray (скомпилированный в режиме отладки) динамически в пределах основного потока с dlopen, а затем без проблем использует dlsym. Однако при запуске в режиме отладки с gdb 7.7.1 + dfsg-5 он сработает. Я вижу из журналов ядра эту ошибку:dlopen вызывает segfault при работе в gdb

gdb[8814]: segfault at 7fff4e019fa0 ip 0000000000718b95 sp 00007fff4e019f90 error 6 in gdb[400000+574000 

Это приводит к тому, что я не могу использовать отладчик. Ужасно!

Что я могу сделать, чтобы исправить это?

Мой проект имеет эту сложную структуру. Я знаю, что он имеет редкую структуру, но мне говорят использовать внешнюю библиотеку.

MAIN RUNNABLE (compiled with S1.so) 
| 
- SHARED_1 (S1.so) (compiled with s1.a, s2.a, s3.a) 
    | - STATIC_1 (s1.a) 
     | - dlopen S2.so and call functions from S2.so 
    | - STATIC_2 (s2.a) 
    | - STATIC_3 (s3.a) 
- DYNAMICALLY_LOADING_1 (S2.so) (compiled with s1.a, s2.a, s3.a) 
    | - STATIC_1 (s1.a) 
    | - STATIC_2 (s2.a) 
    | - STATIC_3 (s3.a) 
+0

Минимальный пример, чтобы воспроизвести проблему? –

+0

:(Из такого огромного проекта я не мог извлечь какую-либо вещь. –

+0

Да, вы можете ... –

ответ

2

Done! Это ошибка GDB 7.7.1+dfsg-5. Я установил GDB 7.10.1, и теперь он работает!

Смежные вопросы