Я использую lldb внутри Xcode, и одна из моих переменных содержит огромный кусок данных JSON. Использование po myVar
не очень полезно для анализа этих данных, поскольку оно будет выводиться в крошечной консоли отладки Xcode.Перенаправить вывод lldb в файл
Есть ли способ перенаправить вывод lldb в файл?
Я видел here, что такая особенность, кажется, будет доступна на БГД как:
(gdb) set logging on
(gdb) set logging file /tmp/mem.txt
(gdb) x/512bx 0xbffff3c0
(gdb) set logging off
и "переводится" в lldb как:
(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
Однако команда memory read
не будет в моем случае, и --outfile
, похоже, не доступны для команды print
.
Улучшения здесь: почему бы не сделать команду аргумент - то вы могли бы сказать «print_to_file po self»? Кроме того, я не проверял, автоматически ли LLDB сбрасывает дескрипторы для вас, но было бы неплохо сбросить дескриптор выходного файла. Наконец, вы могли бы просто извлечь SBCommandReturnObject для «нижней команды» (po self в пример) и записать его в файл вместо захвата stldout lldb. Я, как правило, опасаюсь пытаться играть со stdin/stdout, если вообще избежать. –
Есть ли способ перенаправить вывод * all * debugger в файл? Я попробовал вышеуказанный скрипт без строки 'HandleCommand', и это не сработало. – blackwing
Enrico, не могли бы вы предложить пример/ответ, который улучшится после этого? Мне нравится звук вашего подхода, но у меня недостаточно информации, чтобы проверить его. – insitusec