2


タイトルはすでに私の問題を説明しています。この投稿
を見つけましたが、私の質問に対する完全な回答ではありませんでした。 それの助けを借りて、私はnmからこの出力を得ました...

$nm -C -g -D ./libLoggingHandler.so 

000000cc A _DYNAMIC
...
000042e0 T write_str(char*, char const*, int*)
00005a78 T RingBuffer::WriteUnlock()
...
00005918 T TraceLines::GetItemSize()
...
         U SharedMemory::attach(int, void const*, int)
...
00003810 T TraceProfile::FindLineNr(int, int)
...
00002d40 T LoggingHandler::getLogLevel()
...
         U SharedResource::getSharedResourceKey(char const*, int)
...

エクスポートされた関数はどれですか? この投稿で、「T」がエクスポートされていることを示すヒントをすでに見つけました。しかし、ここでnm マニュアルを確認すると、
T - シンボルはテキスト (コード) セクションにある とだけ表示されます。
私の質問は次のとおりです。この出力から、どの関数がエクスポートされた関数 (または変数) であるかという情報が得られますか?
そうでない場合、どうすれば入手できますか?

はじめまして、ピングー

4

2 に答える 2

0

エクスポートされたすべての関数と変数を確認できるIDAを使用して、自分で確認しようとしました。nm 出力行が「T」または「B」でマークされている場合、それはエクスポートされた関数のようです。
これがすべての .so ファイルで機能するかどうかはわかりませんが、他の誰もより良い解決策を持っていない限り...
私が間違っている場合は修正してください。

あいさつピングー

于 2012-11-26T10:08:40.240 に答える