c++ - c ++ gdb如何使用未使用的运算符*打印*shared_ptr
问题描述
这是我正在尝试测试的简单代码。
int main()
{
shared_ptr<int> pa = make_shared<int>(3);
return 0;
}
我正在使用 gdb 在 VScode 中进行调试,如下所示。(断点在return 0
)
-exec p *pa
Could not find operator*.
我认为这可能是因为 shared_ptr 的函数 operator* 没有定义。因此,我尝试在 ;*pa
之前调用 main 中的 * return 0
,结果证明是可行的。
-exec p *pa
$1 = (std::__shared_ptr_access<int, (__gnu_cxx::_Lock_policy)2, false, false>::element_type &) @0x24354c31930: 3
我想知道如果我没有使用过*,我可以在调试期间使用它吗?经过一番搜索,我通过在开头实例化模板来尝试以下代码。
template class shared_ptr<int>;
int main()
{
shared_ptr<int> pa = make_shared<int>(3);
return 0;
}
但是它仍然不起作用,我猜它可能是由链接器引起的?我不太确定编译和链接。那么我如何在调试期间使用 * 而不使用它 main,如果有人能解释它会非常好,谢谢!
我将 x86_64-w64-mingw32 与 gcc 版本 10.2.0、GNU gdb (GDB) 10.1 和 g++ 使用 args 编译"-o", "-g", "-Wall", "-Wextra", "-static-libgcc", "-fexec-charset=GBK", "-std=c++11", "-D__USE_MINGW_ANSI_STDIO=1"
解决方案
推荐阅读
- tensorflow - 如何将卷积层与 lstm 层连接到 seq2seq 任务中?
- tableau-api - 如何更改 Tableau 日期范围筛选器滑块的日期字体大小?
- sql-update - 如何更新 teradata 中的前 1 条记录
- r - 将列表中的向量绑定到单个矩阵列表
- sql - 案例陈述未将所有值相加
- android - 条形图未显示提供的数据
- docker - Windows 服务器上的 Docker 是“免费的”吗?
- java - jdbcConnection 是否有 ExceptionListener 支持,类似于 jmsConnection?
- html - 将革命 HTML 滑块导入到 wordpress
- android - RecyclerView 将数据库条目显示为空字符串