此问题在此处已有答案:
10年前关闭了。
可能重复:
Why two functions print the same address?
我正在为一个处理PDB符号文件的应用程序工作(通过DbgHelp API)。我遇到了一个奇怪的问题,PDB文件将包含同一地址的多个不同的公共符号条目!
例如,在Windows 7(x64)上使用最新的Microsoft PDB文件kernel32.dll(wow 64),我们可以转储以下信息,并看到相同地址0x 10 b1 a6 e的31个不同条目:
C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86>dbh.exe c:\symbols\wkernel32.pdb\D08F1E131D1F4D97B4AB2F64E00CFC8B2\wkernel32.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!!有多个符号条目是没有意义的。
有没有人能告诉我:
- 为什么会发生这种情况?
- 这些重复的条目能否被解析到唯一的位置?
谢谢。
1条答案
按热度按时间1mrurvl11#
因为all the functions are the same,所以同一地址有多个符号。在您的示例中,它们都是