デバッグに問題があります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
これは、デバッグ情報出力のバグである可能性があります。これを確認するには、たとえばregister read pc
からPCを取得し、次の手順を実行します。
(lldb) image lookup -va <PC VALUE>
たくさんのものが出力されますが、最後のエントリは、デバッガーに現在表示されているすべての変数と、それらが存在する場所(レジスターまたはメモリー内)になります。変数が表示されない場合は、デバッグ情報に次の情報が含まれている必要があります。変数が現在ライブではないことをlldbに伝えました。
利用できるサンプルコードでこれを再現できる場合は、bugreporter.Apple.comにバグを報告してください。
ベータ版のバグです。 Xcode6-Beta5にはまだこのバグがあります。 Swiftの変数のデバッグ情報のみを取得できますが、Swiftの定数のデバッグ情報は取得できません。一時的にlet test1をvar 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アプリでも修正されています。