是别人问我的,自己水平有限,不是很确定。实际上是2个问题,
1. dump文件中有没有模块的调试符号信息?
2. 如果没有,那加载调试符号时是根据哪个系统来的。举个例子,一个程序在windows 2000上跑宕机了,然后在win7上分析这个Dump,这时windbg加载符号加载的是2000还是win7的符号?
1. 简略回答,没有。如果要精确回答,那么要看情况。dump文件是内存的投影,如果当时内存中的目标模块中包含调试符号(比如Borland编译器产生的调试版本DLL),那么这些信息也可能会dump到文件中。因为VC编译器都是把符号单独存放,一般不会加载,也就不大会出现在dump文件中。
2. 根据目标系统,WinDBG会根据dump文件中的模块信息,先找模块,再根据模块中的符号GUID找PDB文件...