Visual studio 2010 从.pdb获取函数的增量链接thunk?

Visual studio 2010 从.pdb获取函数的增量链接thunk?,visual-studio-2010,pdb-files,dia-sdk,Visual Studio 2010,Pdb Files,Dia Sdk,我正在尝试使用.pdb和DiaSDK确定.exe的静态调用图。不幸的是,当以增量方式链接时,函数调用的增量蹦床thunks在使用dia2dump示例时不会显示 如果在启用调试和增量链接的情况下运行并链接示例(或简单示例),则对wprintf或printf的调用不会显示在任何函数的符号转储中。但是,如果禁用增量链接,它们会禁用 有没有办法通过DIA获得函数使用的增量蹦床?或者我应该破解.obj和.lib文件吗?您如何链接到CRT?静态还是动态 我在VS2010中编译了这个示例(使用dynamic/

我正在尝试使用.pdb和DiaSDK确定.exe的静态调用图。不幸的是,当以增量方式链接时,函数调用的增量蹦床thunks在使用dia2dump示例时不会显示

如果在启用调试和增量链接的情况下运行并链接示例(或简单示例),则对
wprintf
printf
的调用不会显示在任何函数的符号转储中。但是,如果禁用增量链接,它们会禁用


有没有办法通过DIA获得函数使用的增量蹦床?或者我应该破解.obj和.lib文件吗?

您如何链接到CRT?静态还是动态

我在VS2010中编译了这个示例(使用dynamic/dll CRT),并将生成的.exe加载到IDA Pro中。以
Fatal
函数(来自示例)为例,它的所有
printf
调用直接编译为该函数的.exe导入项的引用(即
\uu imp\uu printf
)。所以这可能就是为什么你没有看到他们出现在你的垃圾堆里。如果我使用到CRT的静态链接(增量打开),它将调用ILT。如果禁用增量,它将直接调用
printf
(因为它没有导入)

使用动态CRT时,printf函数的间接(调用导入)和ILT(调用间接;我相信是您的“蹦床”)版本仍然存在于incremental.exe中,但没有对它们的代码引用

该示例正确地转储了自身的ILT(下面的printf示例),因此我认为它能够在函数symbol dump中正确地转储这些ILT,而实际上它们是被调用的。然而,我对DIA的经验是有限的,所以到目前为止,我或多或少是在胡说八道

0x00011799 (PublicSymbol) @ILT+1940(_printf)