![]() ![]() GDBの自家製バージョンをMac OS Xで動作させるにはどうすればよいですか? (1)
それは名前のmanglingのためです。 名前はGCCとClang(同じような仕組みをしばしば共有している)と同じようにmangledされています。 名前マングリングにより、同じ名前のC / C ++メソッドとアセンブリプロシージャを使用できるようになります。 Cの定義がどうなるか見てみましょう。
シンボルのバイナリ名を見るには
nm を使います。 nm --demangle 名を表示するには、 nm --demangle を使用します。 .. 0000000000000000 T _myfunc ..他のシンボルの数は、デバッグレベルによって異なります。-Oと-gオプションのGCCマンページを参照してください。 我々が見るように、数字があります。 それは16進数です。 32ビットマシンでは8桁、64ビットマシンでは16桁です(nビットCPUとはnビットがポインタを表すためシンボルは実際にバイナリファイル内のポインタです)。 それから、シンボル型があります。 T はC / C ++ / ..メソッド、 t はアセンブラプロシージャです。 次のアセンブリコードをコンパイルするとどうなるか見てみましょう:
So I installed GDB (The GNU Debugger) for following among a book I am currently reading ('Hacking: The Art of Exploitation'), which only explains how to use GDB, so I can't use LLDB. I installed it using Homebrew (brew install gdb), and everything worked fine. Until I used it. 数行続けます。 Googleが「gdb bfd unknown load command」を検索すると、ソリューションなしで多数のサイトが表示されますが、それらはすべて、非リンゴバージョンのgdbとMac OS X 10.8+の間に競合が存在する可能性があるようです。 どんな洞察もトンを助けるだろう!.
GCCとClangはAssemblyをコンパイルするときにデバッグシンボルを押してはいけません。nm出力はおそらく次のようになります:
アセンブリプロシージャ名はマングリングされません。 C ++は、非常に不思議なことに、混乱しています。
: や、のような文字は、シンボル名には使用できません。 このC ++ソースをコンパイルする:
我々は出力を参照してください:
そして、メインのメソッド名は決してmangledされません。 我々がこのようにしているならば:
2番目の名前だけがマングリングされます。 私はこれが問題かもしれないと思う。 そして、これらの警告は何も意味しません。 これは、システムが低いデバッグシンボル数で再コンパイルされたことを意味します。
私はgdbを使用してEclipseでC ++プログラムをデバッグしようとしています。 私はそれが私の
main() 関数でうまくいくと思いますが、変数の値を調べようとすると警告が表示されます。
インターネットを精査した後、私はこのエラーの意味を理解したり、問題を解決する方法を見つけるのに苦労しています。 Stack Overflowの周りに浮かんでいるいくつかの同様の質問( hereとhere )がありhere 。
AppleのXcodeコマンドラインツールは古くなっているので( gccとgdb問題を参照)、自作の自作バージョンを使用する必要がありました。 私が見逃した可能性があるこれらのツールの設定に何かがあるかどうかはわかりません。
私はコマンドラインからgdbを使ってデバッグすることができ、同じエラーが発生します:
'Could not find the frame base for 'Class::method()' ので、Eclipseの問題ではないと確信しています。
誰もがこの問題を引き起こしているかもしれません。
Jun 24, 2020 Google no longer provides support for older versions than Mac OS X Yosemite 10.10. FAQ Can you install Google Chrome on a Mac? Yes, you can. If you want to use Chrome as your default browser, you will need to manually set it to the default browser on your PC as Mac comes out with the Safari web browser pre-installed. This computer will no longer receive Google Chrome updates because Mac OS X 10.6 - 10.9 are no longer supported. This computer will no longer receive Google Chrome updates because Mac OS X 10.6. Download google for mac os x.
更新:
私はまたラインを見ている:
いくつかの警告が続く:
数行続けます。 Googleが「gdb bfd unknown load command」を検索すると、ソリューションなしで多数のサイトが表示されますが、それらはすべて、非リンゴバージョンのgdbとMac OS X 10.8+の間に競合が存在する可能性があるようです。
How To Use Gdb Debugger
どんな洞察もトンを助けるだろう!
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |