Z jakiegoś powodu LLDB nie pokazuje mi zawartości zmiennych podczas przechodzenia przez mój kod Swift. Rzeczywista egzekucja działa dobrze, ale bez względu na to, co próbuję, nie widzę zawartości moich napisów!Xcode 6 beta 2 debugger nie pokazuje zmienną zawartość po wywołaniu String.componentsSeparatedByString
Oto, co widzę na liście zmiennej:
W tym momencie type
zawiera "nazwa" i value
zawiera "Logan". Ale nie byłbyś w stanie powiedzieć tego patrząc tutaj. Jeśli używam przycisku "szybki wygląd", oznacza to, że wartość to "(Brak)".
I dostać ten rodzaj bełkotu, gdy próbuję po
String z konsoli:
(lldb) po space
error: <REPL>:1:1: error: non-nominal type '$__lldb_context' cannot be extended
extension $__lldb_context {
^
<REPL>:11:5: error: 'Space.Type' does not have a member named '$__lldb_wrapped_expr_0'
$__lldb_injected_self.$__lldb_wrapped_expr_0(
^
Jednak to zależy. Czasami dostaję coś takiego:
class name = __NSAtom
lub
Printing description of [0]:
(String) [0] = {
core = {
_baseAddress = Builtin.RawPointer = 0x00000001004016f0
_countAndFlags = -4611686018427387894
_owner = Some {
Some = (instance_type = Builtin.RawPointer = 0x0000000100401820 -> 0x00007fff7b3d5390 (void *)0x00007fff7b3d5340: __NSCFString)
}
}
}
lub
Printing description of declaration:
(String) declaration = <DW_OP_piece for offset 8: top of stack is not a piece>
... ale nigdy rzeczywistej zawartości łańcucha!
Aktualizacja:
Zauważyłem ten problem wydaje się tylko raz, aby rozpocząć występujące wykonany jest wywołanie componentsSeparatedByString()
w funkcji. (Zdarza się to na samej górze, tak jakbym był krokiem, nie zauważyłem, że debugger faktycznie pokazuje wartość do tego momentu.) Więc coś dziwnego dzieje się z tą funkcją. Zaktualizowałem tytuł pytania, aby odzwierciedlić te nowe informacje.
Co ciekawe, wydaje się, że po tym, jak ciąg został "uszkodzony" przez to połączenie, nie można go wyświetlić nigdzie indziej, nawet po przekazaniu do innej funkcji. i nie można wyświetlić żadnych zwykłych zmiennych łańcuchowych. Zdecydowanie błąd, ale zastanawiam się, czy istnieje obejście. Naprawdę trudno jest debugować mój program!
LOL nie próbuj 'expr println (target)'! XD – devios1