web-dev-qa-db-ja.com

po Swift文字列 "未解決の識別子"

デバッグに問題がありますSwift Strings

func stringTest() {

    let test1:String =   "test1";
    let test2:NSString = "test2";

    // <-- Breakpoint here

    println(test1);
    println(test2);
}

これらの行の後にブレークポイントを設定してtest1を出力しようとすると、次のエラーが発生します。

po test1
error: <REPL>:1:1: error: use of unresolved identifier 'test1'
test1
^

しかし、test2を正常に印刷できます。

po test2
test2
18
Errortype520

これは、デバッグ情報出力のバグである可能性があります。これを確認するには、たとえばregister read pcからPCを取得し、次の手順を実行します。

(lldb) image lookup -va <PC VALUE>

たくさんのものが出力されますが、最後のエントリは、デバッガーに現在表示されているすべての変数と、それらが存在する場所(レジスターまたはメモリー内)になります。変数が表示されない場合は、デバッグ情報に次の情報が含まれている必要があります。変数が現在ライブではないことをlldbに伝えました。

利用できるサンプルコードでこれを再現できる場合は、bugreporter.Apple.comにバグを報告してください。

8
Jim Ingham

ベータ版のバグです。 Xcode6-Beta5にはまだこのバグがあります。 Swiftの変数のデバッグ情報のみを取得できますが、Swiftの定数のデバッグ情報は取得できません。一時的にlet test1var test1に変更すると、デバッグ情報が得られます。これがリリースバージョンで修正されることを願っています。デバッグの幸運;)

編集:残念ながら、Xcodeバージョン6.0.1(6A317)の最初のリリースでも同じ問題が発生しています。

let test1:String  -> debug info is unavailable
var test1:String  -> debug info is available

EDIT2:はい、確認しました。 OS XYosemiteの最新のXcode6.1のiOSアプリでも修正されています。

17
slamor