如何解决为什么 lldb 漂亮的打印机不适用于 MacOS 上的 GNU GCC 编译程序?
有人知道,为什么 lldb 漂亮的打印机对 MacOS 上的 GNU GCC 编译程序不起作用?
我有一个简单的 C++ 程序,我使用 GCC 10.2(来自 Homebrew)和以下 CXX_FLAGS
:--std=c++17 -g -O0
#include <vector>
int main() {
std::vector<int> v = {1,2,3};
std::cout << v[0];
return 0;
}
当我尝试检查变量 v
时,我得到以下结果:
(vector<int,allocator<int> >) $0 = {
_Vector_base<int,allocator<int> > = {
_M_impl = {
_Vector_base<int,allocator<int> >::_Vector_impl_data = {
_M_start = 0x00000001005062a0
_M_finish = 0x00000001005062ac
_M_end_of_storage = 0x00000001005062ac
}
}
}
}
在 std::
之前没有 vector
前缀,因此没有为该类型添加漂亮的打印机(默认情况下它处理 "^(std::__1::)vector<.+>$"
)。
AFAIU,默认情况下,LLDB 中的漂亮打印机为 libc++
启用,而 GCC 使用 libstdc++
。
有人知道如何解决这个问题并使漂亮的打印机为 LLDB 中的 GNU GCC 编译程序工作吗?
解决方法
-gdwarf-3
选项解决了调试过程中缺少 std::
前缀的原始问题,因此使用该标志漂亮的打印机可以正常工作。
附言-gdwarf-4
也让漂亮的打印机正常工作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。