У меня есть часть программного обеспечения, которая скомпилирована с несколькими общими библиотеками.Мой код вызывает функцию внутри общего объекта и сбой внутри.Я считаю, что моя проблема в том, как строятся параметры для этой функции.Я хочу проверить это, просмотрев, что происходит внутри .so, так что я могу внести правильные изменения в то, как я строю параметры.
Проблема, с которой я сталкиваюсь, заключается в невозможности разрешить локальные переменные в общем объекте.Например, GDB выведет:
0x<addr> in <function>(int const* , int, int const*)
Исходя из этого, я знаю, где я нахожусь внутри .so.Когда я перехожу сюда и пытаюсь найти, какие разные переменные устанавливаются для gdb, жалуется на:
No symbol <var> in current context.
Теперь я точно знаю, где я нахожусь в коде.Кроме того, я проверил, чтобы .so был скомпилирован с символами, и я также убедился, что gdb загружает эти символы.
Может кто-нибудь сообщить мне, почему gdb не может видеть эти локальные переменные?
Как примечание - я давно не использовал gdb, и не до этого уровня отладки, поэтому заранее прошу прощения за то, что это всего лишь ограничение gdb, о котором я не знаю.
GDB Версия: 7.7.1
Редактировать для комментария:
Да. Так был скомпилирован с символами.Я проверил это с помощью:
file <.so>
Это говорит мне, что оно было динамически связано и не удалено.
Что касается команд, я просто пытаюсь напечатать переменные.
В целом, я не уверен, почему GDB не может разрешить исходную / точную функцию .so, когда я явно загрузил ее и убедился, что .so был скомпилирован с символами.