シンボル ファイルがないアプリケーションをデバッグしたい。必要なデバッグ情報が不足している場合は、アセンブリ レベルでデバッグする必要があることがわかりました。デバッグ シンボルがないため、メソッド名にブレークポイントを直接設定することはできませんが、アドレスにブレークポイントを設定することはできます。
だから私は単にエントリアドレスにブレークポイントを設定しようとしました.これは私がしたことです:
user@MacBookAir$ gdb
(gdb) file someexecutable
(gdb) info file
最後のコマンドは、次のエントリ ポイントを返しました。
住所を聞いた後、私は簡単に言いました:
(gdb) break *0x0000000100119ec8
(gdb) run
残念ながら、ターゲット アプリケーションはエントリ ポイントで中断せずに起動したので、もう一度試してみましたが、今回はエントリ ポイント アドレスに続くいくつかのアドレスにブレークポイントを設定しましたが、成功しませんでした。
次の試みは、Igor Skochinskyがこの質問 ( GDB の最初のマシン コード命令で停止) に投稿したソリューションを試して、次のようにブレークポイントを設定することでした。
(gdb) b _start
(gdb) b start
ただし、これらのコマンドは両方とも同じエラーになりました。
シンボル テーブルは読み込まれません。「ファイル」コマンドを使用します。
ええ、明らかに、これが機能するためにはデバッグ シンボルが必要です。次に、おそらく間違ったエントリ ポイント アドレスが表示されただけだと思ったので、次のコマンドで確認しました。
user@MacBookAir$ otool -l someexecutable
そして、次の出力を受け取りました。
したがって、GDB が返したエントリ ポイントと同じように見えます。そして今、私は他に何を試すことができるかわかりません。:) おそらく、皆さんは私が他に何を試すことができるかについて考えを持っています. どんな助けでも大歓迎です。不明な点がある場合、または重要な情報を見逃した場合は、短いコメントを残してください。