【问题标题】:Is there a way to Data Watch the Uses of a shared_ptr in visual studio?有没有办法在 Visual Studio 中观察 shared_ptr 的使用情况?
【发布时间】:2019-11-14 15:30:57
【问题描述】:

有东西在持有一个 shared_ptr。我想知道是否有一种方法可以在所述 shared_ptr 的使用上设置数据观察断点,以便我可以看到使用增量和减量。我正在使用的代码库非常大,而且由于我们使用 QT 信号和插槽,我不能 100% 确定如何跟踪获得共享所有权的内容。

我试过用谷歌搜索这个问题,但还没有真正找到任何人试图这样做。我的 google fu 不是很强大,所以我可能会错过它。我也尝试将数据监视断点的变量名称输入为

ptr->_Rep->_Uses

无济于事。我只是得到一个永不中断的空数据监视断点。

【问题讨论】:

    标签: visual-studio c++11 shared-ptr smart-pointers


    【解决方案1】:

    我正在使用 Visual Studio 2019。我找到了一种方法来做到这一点。

    第 1 步:在 'std::shared_ptr' 初始化后添加一个普通断点。

    第二步:右击红点图标,选择“条件”。

    第 3 步:输入共享指针的名称,并在其前加“*”

    第 4 步:选择“已更改”选项。

    Finally look like this

    即使我这样做也很好用:

        std::shared_ptr<int> p(new int(0));
        int* raw_ptr = &*p;
        while (true)             //Break point here, when "*p" "Has Changed"
        {
            (*raw_ptr)++;
        }
    

    希望对你有帮助。

    【讨论】:

    • 我想我已经找到了问题所在,对于遗漏了相关信息,我深表歉意。这是一个 std::shared_ptr 所以断点中的 *pPointer 不起作用。该类型被 using 隐藏了,所以我在写初始帖子时错过了它。
    猜你喜欢
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    相关资源
    最近更新 更多