5.4. Variable Tracking at Assignments


Variable Tracking at Assignments (VTA) は、最適化時の変数追跡を改善するために使用される GCC に組み込まれた新規のインフラストラクチャーです。これにより、GCC は GDB、SystemTap および他のデバッグツール用の詳細で、意味のある役に立つデバッグ情報を生成できます。
GCC が最適化を有効にしてコードをコンパイルする場合、変数の名前が変更されるか、変数が移動するか、またはすべて一緒に削除されます。そのため、最適化されたコンパイルにより、デバッガーは一部の変数が <optimized out> されていることを報告します。 VTA を有効にすると、最適化されたコードには内部で注釈が付けられ、変数が移動されているか、または削除されるかどうかにかかわらず、それぞれの変数の値を透過的に追跡するために最適化が渡されることを確認できます。この結果、最適化された (gcc -O2 -g でビルドされた) コードの場合でもより多くのパラメーターと変数値を利用できるようになります。さらに、表示される <optimized out> メッセージがより少なくなります。
VTA の利点は、アプリケーションをインライン関数でデバッグする場合にさらに明らかになります。VTA を使用しないと、最適化によりインライン関数の一部の引数が完全に削除され、デバッガーがその値を検査できなくなる可能性があります。VTA を使用すると最適化が実行され、さらに欠落した引数についての適切なデバッグ情報が生成されます。
VTA は、コードを最適化でコンパイルし、デバッグ情報を有効にする (つまり、gcc -O -g またはより一般的には gcc -O2 -g) 場合にデフォルトで有効になります。このビルド時に VTA を無効にするには、-fno-var-tracking-assignments を追加します。さらに、VTA インフラストラクチャーには、新規の gcc オプション -fcompare-debug が含まれます。このオプションは、デバッグ情報を使った場合とデバッグ情報を使わなかった場合の GCC でコンパイルされたコードをテストします。テストはこれら 2 つのバイナリーが同一である場合にパスします。このテストにより、実行可能コードがいずれのデバッグオプションによっても影響されず、かつデバッグコードには隠されたバグがないことを確認できます。-fcompare-debug はコンパイル時に多くのコストを追加することに注意してください。このオプションについての詳細は、man gcc を参照してください。
VTA のインフラストラクチャーおよび開発についての詳細は、以下のリンクから閲覧可能な 『A Plan to Fix Local Variable Debug Information in GCC』 を参照してください。
このホワイトペーパーのスライド資料のバージョンは、http://people.redhat.com/aoliva/papers/vta/slides.pdf にあります。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.