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.我想这意味着代码折叠......
好吧,我最终通过创建地图文件进行了重建。在映射文件中,我可以看到两种方法(StructA 的 _Erase 和 StructB 的 _Erase)具有相同的地址。所以这不是一个错误。
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |