2015-02-05 2 views
1

Я пытаюсь запустить приложение в gdb, но похоже, что у меня проблема с debbuger. Я не могу загружать разделяемые библиотеки всеми способами, которые я пытался.Не удается загрузить общие библиотеки в gdb

библиотеки хранятся в /usr/local/lib64 и окружающей среды в порядке:

echo $LD_LIBRARY_PATH 
/usr/local/lib64:/home/user/lib 

Когда я бегу appllication в gdb, происходит следующее:

(gdb) set solib-search-path /usr/local/lib64 
(gdb) show solib-search-path The search path for loading non-absolute 
shared library symbol files is /usr/local/lib64. 
(gdb) info sharedlibrary No shared libraries loaded at this time. 

и я не могу установить любую точку останова для отладки мой приложение, но в то же время приложение работает нормально в gdb, а символы отладки читаются из двоичных файлов!

Я думаю, проблема связана с разрешениями, но не знает точно, где она находится.

Чтобы избежать недоразумений, я должен заметить, что мое приложение работает хорошо, и у меня нет проблем с доступом к общим библиотекам.

ответ

3

Когда я бегу appllication в ГПБ, происходит следующее:

Вы на самом деле не запустить приложение еще, так что «не разделяемые библиотеки, загруженные в данный момент» не является правильным и ожидалось.

Необходимо выполнить команду GDB run.

Update:

Я могу выполнить команду запуска, и это странно.

Нет, это не странно. У вас нет проблем, все работает так, как ожидалось.

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

gdb /path/to/app 
(gdb) start 

# Application stops at main. 
# You can now set any breakpoint you want. 
(gdb) break foo.c:123 
+0

Я могу выполнить команду запуска, и это странно. – mortalland

+0

@mortalland Вы плохо работаете, объясняя, какова ваша настоящая проблема. Ответ обновляется с моей текущей догадки о том, что это может быть. –

+0

Да, Как сказал @EmployedRussian, выполнение команды запуска совсем не странно. Ваши общие библиотеки (файлы .so) будут загружены при выполнении и запуске приложения. –

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