問題タブ [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.

0 投票する
1 に答える
3495 参照

macos - 基本的なOSXアセンブリとMach-Oフォーマット

x86-64MacOSXプラットフォームでのアセンブリのプログラミングに興味があります。248B Mach-Oプログラムの作成についてこのページに出くわし、Apple独自のMach-Oフォーマットリファレンスにたどり着きました。その後、Xcodeで同じ単純なCプログラムを作成し、生成されたアセンブリを確認すると思いました。

これはコードでした:

しかし、生成されたアセンブリは334行で、(248Bモデルに基づいて)多くの余分なコンテンツが含まれていました。

まず、C実行可能ファイルのリリースビルドに多くのDWARFデバッグ情報が含まれているのはなぜですか?次に、Mach-Oヘッダーデータが4回含まれていることに気付きました(異なるDWARF関連sections)。なぜこれが必要なのですか?最後に、Xcodeアセンブリには次のものが含まれます。

しかし、248Bプログラムでは、これらはすべてどこにも見られません。代わりに、プログラムはで始まります_start。定義上、すべてのプログラムがで始まる場合、それはどのように可能mainですか?


完全なXcodeアセンブリ:

0 投票する
1 に答える
413 参照

python - Mac System Python のデバッグ情報 - 行番号を取得する方法

MacOSX ライブラリ (この場合、私は主に Python に興味があります) を含むクラッシュ レポートがある場合、それに関する詳細情報を取得するにはどうすればよいですか? ライブラリにはデバッグ情報が含まれていないため、クラッシュ レポートには行番号やその他の有用な情報が含まれていません。他の場所でデバッグ情報を取得して、行番号を再構築できますか?

0 投票する
1 に答える
108 参照

gcc - DWARF を使用したタイプ セーフなリンク

DWARF形式に必要なすべての型情報が含まれているのに、GCCとGNU ldが型チェックリンクをサポートしないのはなぜですか? 私たちは、Ada と C が安全に通信できるようにするために会社に多くの時間を費やしています。問題は、これらのバインディングが同期されていることを保証するためのコンパイラやリンクがないことです。

0 投票する
3 に答える
5541 参照

c++ - Gcc 4.8 DWARF4 対 DWARF2

GCC 4.8 は DWARF4 をサポートします。ユーザーの観点から見たDWARF4とDWARF2の違いは何だろうと思っています。

GDB の観点から見てみましょう。DWARF4 に切り替えた場合、ユーザーにとって違いはありますか?

私はドワーフのホームページを見つけましたが、私が見る限り、ユーザー POV との違いに関する Web 情報はどこにもありません。

それらの違いを教えていただけますか?

0 投票する
2 に答える
7759 参照

debugging - コンパイル ユニットの DWARF バージョンを確認する

ファイルの DWARF バージョンを確認するツールはありますか? このようなもの:

0 投票する
1 に答える
661 参照

c++ - C++ dwarf タグの番号付け形式

次のドワーフ コードのサンプルを考えてみましょう -

私は dwarf ファイルを解析するプログラムに取り組んでいますが、その一部について確信が持てません。お気付きのように、各タグの左側に追加の番号があります (このサンプルでは、​​<0>、<1>、および <2> があります)。それが何であるか本当にわかりません。<0> はプログラム全体に与えられ、<1> は最上位クラスに与えられ、<2> はそのメンバー変数に与えられるので、ある種のスタック レベルか何かだと思います。ただし、ドキュメントには何も見つかりませんでした。参考までに、元のプログラムは次のとおりです。

0 投票する
1 に答える
1174 参照

elf - Libdwarf - ELF ファイルから変数のサイズと型を抽出する方法

入力として与えられた変数に関する情報を抽出できる libdwarf ライブラリを使用して、Windows で C でプログラムを作成したいと考えています。プログラムは、変数のバイト単位のサイズと型 (unsigned、signed、float) を出力する必要があります。

これまでのところ、Windows でライブラリをコンパイルできましたが、すべてのライブラリ関数を理解するのに苦労しています。必要なのは、文字列 (変数の名前) を受け取り、DIE オフセットを出力する関数です。その後、他の関数を使用して、指定された DIE オフセットで型属性を抽出できます。

そのような機能は存在しますか?

0 投票する
2 に答える
951 参照

c++ - ドワーフを使用して非メンバー関数のローカル静的変数を決定する方法

dwarf を使用して 2 つの C++ ファイルを比較しようとしていますが、非メンバー関数のローカル変数に到達すると問題が発生します。次のコードを検討してください -

修飾子なしでコンパイルするとstatic、次のドワーフ情報が得られます-

しかし、修飾子を付けてコンパイルすると、次のようになります-static

現在、私が知る限り、これらのファイルには 1 つの違いしかありませんDW_AT_location。変数 j の属性のバイト ブロック サイズが異なります (DW_AT_sibling関数 f のタグの属性が異なるのはこのためです。 )。これはどういうわけか静的を意味すると思いますが、その方法はわかりません。