Używam lldb wewnątrz Xcode, a jedna z moich zmiennych zawiera ogromną porcję danych JSON. Używanie po myVar
nie jest zbyt pomocne w analizowaniu tych danych, ponieważ będzie wyprowadzane w maleńkiej konsoli do debugowania Xcode.Przekierowanie wyjścia lldb do pliku
Czy istnieje sposób przekierowania wyjścia Lldb do pliku?
Widziałem here, że taka funkcja wydaje się być dostępny na gdb jak:
(gdb) set logging on
(gdb) set logging file /tmp/mem.txt
(gdb) x/512bx 0xbffff3c0
(gdb) set logging off
i "przetłumaczone" w lldb jak:
(lldb) memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0
(lldb) me r -o/tmp/mem.txt -c512 0xbffff3c0
(lldb) x/512bx -o/tmp/mem.txt 0xbffff3c0
Jednak komenda memory read
nie będzie pomoc w moim przypadku i --outfile
nie wydają się być dostępne dla polecenia print
.
Ulepszenia tutaj: dlaczego nie zrobić polecenie argument - wtedy możesz powiedzieć "print_to_file po self"? Ponadto, nie sprawdziłem, czy LLDB automagicznie resetuje uchwyty dla ciebie, ale dobrym rozwiązaniem byłoby zresetowanie uchwytu pliku wyjściowego :) Wreszcie, możesz po prostu pobrać obiekt SBCommandReturnObject dla "gorszego polecenia" (po self w przykład) i zapisz go w pliku zamiast przejąć kontrolę nad stdoutem Lldb. Generalnie bym się starał grać z stdin/stdout, jeśli w ogóle można tego uniknąć. –
Czy istnieje sposób przekierowania * wszystkich * danych wyjściowych debuggera do pliku? Próbowałem powyższego skryptu bez linii 'HandleCommand' i to nie działało. – blackwing
Enrico, czy mógłbyś pokazać swój własny przykład/odpowiedź, który ulepszy ten? Podoba mi się brzmienie twojego podejścia, ale nie mam wystarczających informacji, aby go przetestować. – insitusec