【发布时间】:2013-09-25 14:00:18
【问题描述】:
我的 Xcode 工作区中的递归 git 子模块存在问题。我认为 llvm 选择了错误的 .m 文件。
我想通过显示对象二进制文件中可用的方法来确认这一点。
我知道我可以使用ar -t myarchive.a 在静态库中显示.o 文件。有什么方法可以深入挖掘并显示特定 .o 上可用的方法符号?
【问题讨论】:
标签: ios objective-c unix llvm-clang
我的 Xcode 工作区中的递归 git 子模块存在问题。我认为 llvm 选择了错误的 .m 文件。
我想通过显示对象二进制文件中可用的方法来确认这一点。
我知道我可以使用ar -t myarchive.a 在静态库中显示.o 文件。有什么方法可以深入挖掘并显示特定 .o 上可用的方法符号?
【问题讨论】:
标签: ios objective-c unix llvm-clang
使用可以使用nm 命令来显示.o 或.a 文件中的符号。详情请见nmmanpage。
$ nm build/IoEvent.o
(剪辑)
---------------- T __ZN9ChessCore18ChessCoreExceptionC1EPKcz
---------------- T __ZN9ChessCore18ChessCoreExceptionD0Ev
---------------- T __ZN9ChessCore18ChessCoreExceptionD1Ev
---------------- D __ZN9ChessCore7IoEvent11m_classnameE
---------------- T __ZN9ChessCore7IoEvent3setEv
---------------- T __ZN9ChessCore7IoEvent5resetEv
---------------- T __ZN9ChessCore7IoEventC1Ei
---------------- T __ZN9ChessCore7IoEventC1Ev
---------------- T __ZN9ChessCore7IoEventC2Ei
---------------- T __ZN9ChessCore7IoEventC2Ev
---------------- T __ZN9ChessCore7IoEventD0Ev
---------------- T __ZN9ChessCore7IoEventD1Ev
---------------- T __ZN9ChessCore7IoEventD2Ev
---------------- T __ZNK9ChessCore18ChessCoreException4whatEv
如果您使用的是 C++(我知道您不是),那么您可以使用 c++filt 来解开这些符号名称:
$ c++filt __ZN9ChessCore7IoEvent5resetEv
ChessCore::IoEvent::reset()
【讨论】: