web-dev-qa-db-ja.com

Clionのデバッガーで、int配列の内容全体を表示する方法

現時点では、配列の最初の要素のみが表示されていますが、配列内のすべての要素のビジュアルが必要です。 ClionはGDBを使用していると思います。

編集:私は特にヒープ上の配列に言及しています。スタック上の配列を視覚化できます。

19
Embedded_Mugs

残念ながら、CLionは現在このような機能をサポートしていません。 JetBrainsの従業員による のように、回避策を使用できます。 [評価/ウォッチ]ウィンドウで、次の式を使用します。

(MyType[128])myArray

任意の配列サイズを使用できます。あなたのために働くものは何でも。

配列がvoid *変数に格納されている場合、もっとトリッキーなことをする必要があります。

(MyType[128])*(char*)myArray

この問題 に賛成票を投じて、実際の解決策を得る機会を増やしてください。これを行うには、ページの右側にある小さな親指のアイコンをクリックします。

23
cubuspl42

cubuspl42 による答えはGDBで機能します。ただし、デバッガーとしてLLDBを使用しているMacの場合、正しい方法は

(MyType(*)[128])myArray

お役に立てれば!

32

テンプレートとリファレンスを使用できます:

template<int N>
void foo1(int (&arr)[N])
{
    ...
}

配列を他の関数に渡したい場合は、渡された関数も配列のテンプレートと参照を使用する必要があります。

template<int N>
void foo2(int (&arr)[N])
{
    ...
}
template<int N>
void foo1(int (&arr)[N])
{
    foo2(arr);
}

このメソッドを使用すると、int配列の内容全体をclionで見ることができます

1
陳 力

基礎となるデバッガーが理解する構文は、実際に機能するはずです。たとえば、GDBの場合、*array@sizeを使用できます。ここで、arrayは任意のポインター式、sizeは任意の(正の)整数式で、両方に含めることができます変数、関数呼び出し、レジスター、GDBが理解できるもの。たとえば、次のようなものが有効です。

*((int*)$rsp - 0x100)@get_size(data)
1
EvgEnZh