无论模板参数如何,哪些std :: map方法都相同(并且可能共享符号)?

Asa*_*saf 5 c++ stl visual-studio-2010 debug-symbols visual-c++

我有一个崩溃转储,我正在尝试分析(VC++ 2010).

然后我有一个看起来像这样的callstack(为了便于阅读,我在这里修剪了很多):

myapp.exe!std::_Tree<std::_Tmap_traits<unsigned int,StructB,std::less<unsigned int> ... >::_Erase(...)
myapp.exe!std::_Tree<std::_Tmap_traits<unsigned int,StructA,std::less<unsigned int>,... >::clear() 
Run Code Online (Sandbox Code Playgroud)

(clear()调用_Erase())

请注意值的模板参数(StructA与StructB)之间的差异.现在,我知道具有完全相同二进制文件的不同方法可以在PDB中具有相同的符号,即使它们实际上使用不同的代码.我假设这是这里的情况(std :: map :: _ Erase是相同的,无论值类型).

但我怎么知道呢?是否有适用的stl方法列表(对于此MS实现)?这可能是某种错误吗?

更新:

查看PDB(在文本编辑器中),我看到很多std :: map <...> :: _ Erase,特别是我看到它们同时用于StructA和StructB.我不知道它是否意味着折叠.

另外,std :: map的反汇编代码显示了对地址的调用,该地址被解释为std :: map.我想这意味着代码折叠......

Asa*_*saf 0

好吧,我最终通过创建地图文件进行了重建。在映射文件中,我可以看到两种方法(StructA 的 _Erase 和 StructB 的 _Erase)具有相同的地址。所以这不是一个错误。