使用 lldb 打印带换行符的字符串
Print string with newlines with lldb
我想打印一个字符串,const char*
或 std::string
,使用 lldb 以便它是人类可读的。最重要的是,\n
将作为换行符打印。有谁知道如何做到这一点?我尝试了 this post 中针对 gdb 的建议,但它似乎不适用于 lldb。
编辑:我知道您可以发出 print myString
命令来打印字符串,但它不会格式化换行符(至少默认情况下不会):
大多数时候您希望看到字符串的文字内容,因此 lldb 的默认打印行为是正确的。但是,以与标准库处理字符串相同的方式为 "render" 输出设置格式选项会很有用。这基本上就是 gdb "printf" 命令的内容。请向 lldb.llvm.org 错误报告者提交错误请求。
就像使用 gdb 一样,您可以获得标准库来为您呈现文本:
(lldb) expr (void) printf("Some text\nMore text\nEven more text\n")
Some text
More text
Even more text
(lldb)
在这种情况下,我将其转换为 void,因为我不关心 return 值,这使得文本更难看清。
正如在您提到的 post 中指出的那样,如果您的输出不在某个地方的终端,那是没有帮助的,所以一些明确的 "render the output" 选项将是一个很好的选择想法也是如此。但这只有在您附加到调试器中的程序而不是 运行 时才会发生。
我想打印一个字符串,const char*
或 std::string
,使用 lldb 以便它是人类可读的。最重要的是,\n
将作为换行符打印。有谁知道如何做到这一点?我尝试了 this post 中针对 gdb 的建议,但它似乎不适用于 lldb。
编辑:我知道您可以发出 print myString
命令来打印字符串,但它不会格式化换行符(至少默认情况下不会):
大多数时候您希望看到字符串的文字内容,因此 lldb 的默认打印行为是正确的。但是,以与标准库处理字符串相同的方式为 "render" 输出设置格式选项会很有用。这基本上就是 gdb "printf" 命令的内容。请向 lldb.llvm.org 错误报告者提交错误请求。
就像使用 gdb 一样,您可以获得标准库来为您呈现文本:
(lldb) expr (void) printf("Some text\nMore text\nEven more text\n")
Some text
More text
Even more text
(lldb)
在这种情况下,我将其转换为 void,因为我不关心 return 值,这使得文本更难看清。
正如在您提到的 post 中指出的那样,如果您的输出不在某个地方的终端,那是没有帮助的,所以一些明确的 "render the output" 选项将是一个很好的选择想法也是如此。但这只有在您附加到调试器中的程序而不是 运行 时才会发生。