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

标签 c++ visual-studio-2010 visual-c++ stl debug-symbols

我有一个正在尝试分析的故障转储 (VC++ 2010)。

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

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() 

(clear() 调用 _Erase() )

注意值的模板参数的区别(StructA 与 StructB)。 现在,我知 Prop 有完全相同二进制文件的不同方法在 PDB 中可以具有相同的符号,即使它们实际上使用不同的代码也是如此。 我假设这里就是这种情况(无论值类型如何,std::map::_Erase 都是相同的)。

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

更新:

查看 PDB(在文本编辑器中),我看到许多 std::map<...>::_Erase,特别是 StructA 和 StructB。我不知道折叠是否意味着什么。

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

最佳答案

您可以使用/OPT:NOICF 来禁用代码折叠行为。

http://msdn.microsoft.com/en-us/library/bxwfs976%28v=vs.80%29.aspx

关于c++ - 无论模板参数如何,哪些 std::map 方法是相同的(并且可能共享符号)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427124/

相关文章:

c# - HANDLE (IntPtr) 已过时,kernel32.dll,SafeFileHandle 到 IntPtr

c++ - windows api创建快捷方式并将应用程序放入开始菜单

c++ - 如何使用 Visual C++ 2010 Express 设置 SAPI?

C++ VS2010 编译器不使用 'push' 进行简单的函数调用

c++ - 有什么方法可以用 MSVS2015 模拟编译时双常量吗?

java - 如何加速分布式图算法的性能?

c++ - 如何使用客户端调用堆栈中的地址从 PDB 检索文件/函数/行号?

c++ - 使用 C++ WRL 打开 UsbDevice - ERROR_INVALID_HANDLE

c++ - VC++ 15 为 lambda 捕获调用了错误的复制构造函数?

c++ - std::vector - 如何释放 vector 中 char* 元素的内存?