У меня есть процесс Solaris, который представляет собой приложение C ++, загружаемое ld
с несколькими .so
библиотеки. В этом приложении есть функция, которая получает адрес возврата в вызывающей функции, а затем пытается определить имя указанной вызывающей функции.
Если я использую для этого dladdr (3)
, это не всегда поместите то, что я ожидаю увидеть в Dl_info :: dli_sname. Похоже, он возвращает имя функции, которая не является ближайшей ниже или в значении указателя. Если я возьму значение указателя и посмотрю на результат нм
, я смогу сопоставить значение с точной функцией, которую я ожидаю.
Мне интересно, есть ли способ получить символ map для процесса и позвольте ему искать имя функции без использования dladdr (3)
. Мне особенно интересно получить карту символов не только для самого исполняемого файла, но и для всех .so
библиотек, которые он загрузил.
Я работаю на Solaris10 / SPARC и использую gcc 4.2.x.
Спасибо!