可能重复:
为什么两个函数打印相同的地址?
我正在为一个处理它们的应用程序(通过DbgHelp API(处理PDB符号文件。我遇到了一个奇怪的问题,一个PDB文件将包含同一地址的多个不同的公共符号条目!
例如,在Windows 7(x64(上使用kernel32.dll(wow64(的最新Microsoft PDB文件,我们可以转储以下信息,并看到相同地址0x10b1a6e的31个不同条目:
C:Program Files (x86)Windows Kits8.0Debuggersx86>dbh.exe c:symbolswkernel32.pdbD08F1E131D1F4D97B4AB2F64E00CFC8B2wkernel32.pdb m 10b1a6e
index address name
7a 10b1a6e : MFInitAttributesFromBlob
179 10b1a6e : MFCreateSourceReaderFromURL
2fc 10b1a6e : MFCreateASFMediaSinkActivate
5b6 10b1a6e : MFCreateWMVEncoderActivate
61d 10b1a6e : MFAddPeriodicCallback
64c 10b1a6e : MFPutWorkItem
825 10b1a6e : MFCreateAlignedMemoryBuffer
c12 10b1a6e : MFGetAttributesAsBlob
d26 10b1a6e : MFCreateMFVideoFormatFromMFMediaType
f1a 10b1a6e : MFFrameRateToAverageTimePerFrame
1129 10b1a6e : MFCreateProxyLocator
1277 10b1a6e : MFSerializeAttributesToStream
12b3 10b1a6e : MFEnumDeviceSources
146d 10b1a6e : MFCreateWMAEncoderActivate
164c 10b1a6e : MFBeginUnregisterWorkQueueWithMMCSS
1bfc 10b1a6e : MFCreateSourceReaderFromMediaSource
1d25 10b1a6e : MFInitMediaTypeFromWaveFormatEx
1d72 10b1a6e : MFGetStrideForBitmapInfoHeader
1efb 10b1a6e : CopyPropertyStore
1f8d 10b1a6e : MFDeserializePresentationDescriptor
1fb5 10b1a6e : MFCreateSampleGrabberSinkActivate
1fe4 10b1a6e : MFCreateASFStreamingMediaSinkActivate
23a3 10b1a6e : MFDeserializeAttributesFromStream
24c0 10b1a6e : MFConvertFromFP16Array
26f7 10b1a6e : MFSerializePresentationDescriptor
2877 10b1a6e : MFCreatePresentationDescriptor
2ab7 10b1a6e : MFCreateSourceReaderFromByteStream
2b4a 10b1a6e : MFGetWorkQueueMMCSSClass
2e08 10b1a6e : MFInitMediaTypeFromMFVideoFormat
2ef0 10b1a6e : MFCreateSinkWriterFromMediaSink
2eff 10b1a6e : MFConvertToFP16Array
上面的例子是许多包含重复的地址之一。通常在任何地址都有一个符号条目。为同一地址AFAIK设置多个符号条目根本没有意义!!
有人能告诉我:
为什么会发生这种情况?
这些重复的条目可以解析到唯一的位置吗?
谢谢。
同一地址有多个符号,因为所有函数都相同。在你的情况下,它们都是去的功能
HRESULT MFBlahBlahBlah(...)
{
return E_NOTIMPL;
}