問題タブ [dwarf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - 基本的なOSXアセンブリとMach-Oフォーマット
x86-64
MacOSXプラットフォームでのアセンブリのプログラミングに興味があります。248B Mach-Oプログラムの作成についてこのページに出くわし、Apple独自のMach-Oフォーマットリファレンスにたどり着きました。その後、Xcodeで同じ単純なCプログラムを作成し、生成されたアセンブリを確認すると思いました。
これはコードでした:
しかし、生成されたアセンブリは334行で、(248Bモデルに基づいて)多くの余分なコンテンツが含まれていました。
まず、C実行可能ファイルのリリースビルドに多くのDWARFデバッグ情報が含まれているのはなぜですか?次に、Mach-Oヘッダーデータが4回含まれていることに気付きました(異なるDWARF関連sections
)。なぜこれが必要なのですか?最後に、Xcodeアセンブリには次のものが含まれます。
しかし、248Bプログラムでは、これらはすべてどこにも見られません。代わりに、プログラムはで始まります_start
。定義上、すべてのプログラムがで始まる場合、それはどのように可能main
ですか?
完全なXcodeアセンブリ:
python - Mac System Python のデバッグ情報 - 行番号を取得する方法
MacOSX ライブラリ (この場合、私は主に Python に興味があります) を含むクラッシュ レポートがある場合、それに関する詳細情報を取得するにはどうすればよいですか? ライブラリにはデバッグ情報が含まれていないため、クラッシュ レポートには行番号やその他の有用な情報が含まれていません。他の場所でデバッグ情報を取得して、行番号を再構築できますか?
gcc - DWARF を使用したタイプ セーフなリンク
DWARF形式に必要なすべての型情報が含まれているのに、GCCとGNU ldが型チェックリンクをサポートしないのはなぜですか? 私たちは、Ada と C が安全に通信できるようにするために会社に多くの時間を費やしています。問題は、これらのバインディングが同期されていることを保証するためのコンパイラやリンクがないことです。
c++ - Gcc 4.8 DWARF4 対 DWARF2
GCC 4.8 は DWARF4 をサポートします。ユーザーの観点から見たDWARF4とDWARF2の違いは何だろうと思っています。
GDB の観点から見てみましょう。DWARF4 に切り替えた場合、ユーザーにとって違いはありますか?
私はドワーフのホームページを見つけましたが、私が見る限り、ユーザー POV との違いに関する Web 情報はどこにもありません。
それらの違いを教えていただけますか?
debugging - コンパイル ユニットの DWARF バージョンを確認する
ファイルの DWARF バージョンを確認するツールはありますか? このようなもの:
c++ - C++ dwarf タグの番号付け形式
次のドワーフ コードのサンプルを考えてみましょう -
私は dwarf ファイルを解析するプログラムに取り組んでいますが、その一部について確信が持てません。お気付きのように、各タグの左側に追加の番号があります (このサンプルでは、<0>、<1>、および <2> があります)。それが何であるか本当にわかりません。<0> はプログラム全体に与えられ、<1> は最上位クラスに与えられ、<2> はそのメンバー変数に与えられるので、ある種のスタック レベルか何かだと思います。ただし、ドキュメントには何も見つかりませんでした。参考までに、元のプログラムは次のとおりです。
elf - Libdwarf - ELF ファイルから変数のサイズと型を抽出する方法
入力として与えられた変数に関する情報を抽出できる libdwarf ライブラリを使用して、Windows で C でプログラムを作成したいと考えています。プログラムは、変数のバイト単位のサイズと型 (unsigned、signed、float) を出力する必要があります。
これまでのところ、Windows でライブラリをコンパイルできましたが、すべてのライブラリ関数を理解するのに苦労しています。必要なのは、文字列 (変数の名前) を受け取り、DIE オフセットを出力する関数です。その後、他の関数を使用して、指定された DIE オフセットで型属性を抽出できます。
そのような機能は存在しますか?
c++ - ドワーフを使用して非メンバー関数のローカル静的変数を決定する方法
dwarf を使用して 2 つの C++ ファイルを比較しようとしていますが、非メンバー関数のローカル変数に到達すると問題が発生します。次のコードを検討してください -
修飾子なしでコンパイルするとstatic
、次のドワーフ情報が得られます-
しかし、修飾子を付けてコンパイルすると、次のようになります-static
現在、私が知る限り、これらのファイルには 1 つの違いしかありませんDW_AT_location
。変数 j の属性のバイト ブロック サイズが異なります (DW_AT_sibling
関数 f のタグの属性が異なるのはこのためです。 )。これはどういうわけか静的を意味すると思いますが、その方法はわかりません。