C++ 模板中的断点被忽略,是否有解决方法?

C++ 模板中的断点被忽略,是否有解决方法?,c++,qt-creator,qt5.3,msvc12,C++,Qt Creator,Qt5.3,Msvc12,每当我在模板中设置断点时,它都会被忽略。有解决办法吗? 示例:忽略if(list.size()..处的断点 template <typename ObjectType, typename ContainerType> ContainerType CListModelBase<ObjectType, ContainerType>:: sortListByColumn(const ContainerType &list, int

每当我在模板中设置断点时,它都会被忽略。有解决办法吗? 示例:忽略
if(list.size()..
处的断点

template <typename ObjectType, typename ContainerType> 
ContainerType CListModelBase<ObjectType, ContainerType>::
                  sortListByColumn(const ContainerType &list, int column,
                                   Qt::SortOrder order)
{
   if (list.size() < 2) return list; // nothing to do
   // ... 
}
模板
ContainerType CListModelBase::
sortListByColumn(常量容器类型和列表,int列,
Qt::排序器顺序)
{
if(list.size()<2)返回list;//无需执行任何操作
// ... 
}
PS:对于gdb,描述了这样一种解决方法


环境Win7、VC2013、QtCreator 3.1.1

这是由内联和其他各种优化导致的,这些优化使调试器更难知道代码的地址

如果您不介意重新编译,则始终可以强制在生成的代码中放置断点:

#include <intrin.h>

...

__debugbreak();
#包括
...
__debugbreak();

来源:[

我使用的一种解决方法是:编写自己的断言

我有一个版本的assert,从boost assert简化而来

a) 可以显示信息,甚至与断言无关

b) 可以在一个简单的延迟循环中旋转

--允许用户附加调试器并进行调查、回溯等

c) 只能打印或退出或打印后退出

d) 允许用户手动恢复程序,就像什么都没有发生一样(除了大延迟)


对于完全优化和未优化,这样的断言可以减轻您的负担。

或者_asmint3;