申し訳ありませんが、私はここで私のコメントを追加しますスタックオーバーフローのコメントは書式設定をサポートしていないため、答えます。
間違いなくlldbの問題です。
v = (const std::__1::vector<int, std::__1::allocator<int> > &) size=1
size=1
間違っています:あなたの写真には、完全なVの記述が含まれていません。 lldbコンソール印刷物の印刷コマンドに加え v
正しく:
(lldb) p v
(const std::__1::vector<int, std::__1::allocator<int> >) $1 = size=3 {
[0] = 1
[1] = 2
[2] = 3
}
Xcodeの変数を表示するには、lldb frame var
コマンドを使用していそうです。これは、Xcodeので表示され、まったく同じ出力が表示さ:
(lldb) frame variable -T
(int) argc = 1
(const char **) argv = 0x00007fff5fbff710
(const std::__1::vector<int, std::__1::allocator<int> > &) v = size=1: {
(std::__1::__vector_base<int, std::__1::allocator<int> >) std::__1::__vector_base<int, std::__1::allocator<int> > = {
(std::__1::__vector_base<int, std::__1::allocator<int> >::pointer) __begin_ = 0x000000010103fa40
(std::__1::__vector_base<int, std::__1::allocator<int> >::pointer) __end_ = 0x000000010103fa4c
(std::__1::__compressed_pair<int *, std::__1::allocator<int> >) __end_cap_ = {
(std::__1::__libcpp_compressed_pair_imp<int *, std::__1::allocator<int>, 2>) std::__1::__libcpp_compressed_pair_imp<int *, std::__1::allocator<int>, 2> = {
(int *) __first_ = 0x000000010103fa4c
}
}
}
}
を私はこのように、ベクターに関するいくつかの情報が未知である、問題は変数v
が最初に別のスタックフレームで作成され、初期化されたという事実から来ていると思います関数呼び出しの結果として初期ベクトルが渡されたときの下位スタックフレーム。
2つの間の唯一の明白な違いは、完全にSTL型であることです。つまり、intへの一意なポインタのベクトルです。 2つ目は、カスタムまたはサードパーティのライブラリタイプです。おそらくXCodeが "Imxr :: MxrLinked [List?]"型を解析する方法を知らない場合、それは一意のptr/vectorを完全に解析することをやめますか? – jwimberley
これは問題ではないことをより明確にするために質問を編集しました。編集が助けになったら教えてください。 –
どの最適化をコンパイルしますか? – Niall