2017-10-22 12 views
0

LLDBでは、カスタムの書式設定が可能です。クラステンプレートのカスタムサマリー(C++)

class Foo { ... }; 

を持つたとえば、私は

type summary add -T Foo 

を行い、その後、カスタムの概要をPythonスクリプトを提供することができます。その後

Foo f; 

を持つ私はLLDBにカスタム書式を使用することができます

frame variable f 

しかし、どのように一般的な方法で行うには?

template<typename T> class Foo { ... }; 

は私が

type summary add -P Foo<int> ... 
type summary add -P Foo<double> .... 

のような具体的な種類の要約を定義することができますが、それはすべてのタイプのためにそれを行うことが可能である持って? 私は

type summary add -P Foo<T> ... 

それとも、それを行うための別の方法があるようなものを持っていると思います。

答えて

0

DWARFデバッグ情報には個々の具体的なインスタンシエーションに関する情報しか記録されていないため、lldb(および一般的なデバッガ)では抽象的なテンプレートをよく理解していません。

現在、タイプサマリーマッチングのテンプレートを処理する方法は、type summary addに-xオプションを使用することです。これは、型名を正規表現として扱うようにlldbに指示します。テンプレートの型名に一致するように正規表現を作るのはそれほど難しいことではありません。ここでLLVMデータ型のタイプの要約でこれを使用する例があります。

http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lldbDataFormatters.py?view=markup

これはhttp://lldb.llvm.org/varformats.html

セクション REGULAR EXPRESSION TYPENAMESで議論されています
関連する問題