Linux 上objdump --dwarf=decodedline
のファイル内の各オフセットのソースの場所を見つけるために使用してきました。.so
残念ながら Mac-OS X では、.bundle
(共有ライブラリとして使用される) ファイルはこの方法ではクエリできないようです。
これらのバンドル内のコードを正しくデバッグしてステップスルーできるので、私にできることがあると楽観的ですgdb
— 誰かがそれが何をしているのか知っていますか?
さらに詳しい情報:
このdwarfdump
ユーティリティは、.bundle ファイルに DWARF データは含まれていないが、STABS データは含まれていると主張しています。ただしobjdump --stabs
、スタブデータも見つかりません。
(質問への回答が簡単になる場合は、実際にはすべてのオフセットは必要ありません。特定のオフセットのソースの場所を照会できれば十分です)。
これをテストしてきたバンドル ファイルは、次を使用して生成されました。
cc -dynamic -bundle -undefined suppress -flat_namespace -g -o c_location.bundle c_location.o -L. -L/Users/User/.rvm/rubies/ruby-1.8.7-p357/lib -L. -lruby -ldl -lobjc
元の c_location.o ファイルには、 が機能するために必要な情報が含まれていますobjdump --dwarf=decodedline
。