给定.so文件和函数名称,是否有通过bash查找函数签名的简单方法?
返回示例:
@_ZN9CCSPlayer10SwitchTeamEi
谢谢。
答案 0 :(得分:9)
我的编译器会破坏你的东西(OSX g ++),但是将你的前导@改为下划线并将结果传递给c ++ filt会给我一些我认为你想要的结果:
bash> echo __ZN9CCSPlayer10SwitchTeamEi | c++filt
CCSPlayer::SwitchTeam(int)
由于CCSPlayer可能是命名空间或类(并且我怀疑它们受到不同的破坏),所以反过来比较棘手。但是,因为你有.so你可以这样做:
bash> nm library.so | c++filt | grep CCSPlayer::SwitchTeam
000ca120 S CCSPlayer::SwitchTeam
bash> nm library.so | grep 000ca120
000ca120 S __ZN9CCSPlayer10SwitchTeamEi
虽然你可能需要小心一些额外的结果。 (有时这些.so文件中有一些有趣的符号)
答案 1 :(得分:2)
nm有一个有用的--demangle标志,可以一次性解码你的.so
nm --demangle library.so
答案 2 :(得分:0)
尝试
strings <library.so>
答案 3 :(得分:0)
nm -D library.so | grep FuncName