PE文件:IMAGE_DEBUG_TYPE_VC_FEATURE类型的调试目录

时间:2018-02-10 16:53:30

标签: visual-studio visual-studio-2015 executable portable-executable debug-symbols

我使用Visual Studio 2015编译了一个vanilla exe文件。除了IMAGE_DEBUG_TYPE_CODEVIEW类型的预期调试目录之外,我还发现了第二个类型IMAGE_DEBUG_TYPE_VC_FEATURE

我找不到有关它包含哪些数据及其用途的信息。任何人都可以解释或指向我解释它的消息来源吗?

1 个答案:

答案 0 :(得分:2)

使用/ GL编译或链接时间代码生成编译器晚于vc 2010会发出一个包含vcfeature的额外调试目录,这些存储了一些pre-vc 110 / GS计数/ sdl计数和guardN计数

dumpbin / headers将显示此功能的详细信息0xc

:\>dir /b
printf.cpp

:\>cat printf.cpp
#include <stdio.h>
void main (void) {
    printf("%x\n%d\n%u\n%f\n%g\n%s\n%c\n",256,100,-1,2.2,45.87,"hi",97);
}

:\>cl /Zi /W4 /GL /Ox /analyze /nologo printf.cpp
printf.cpp

Generating code
Finished generating code

:\>dumpbin /headers printf.exe | grep -A 10 "Debug Directories"
  Debug Directories

        Time Type        Size      RVA  Pointer
    -------- ------- -------- -------- --------
    5A7F2A78 cv            3C 0004529C    43E9C    Format: RSDS, xxx59}, 1, printf.pdb
    5A7F2A78 feat          14 000452D8    43ED8    Counts: Pre-VC++ 11.00=0, C/C++=194, /GS=194, /sd
l=0, guardN=193  <<<<<<<<<<<<<
    5A7F2A78 coffgrp      28C 000452EC    43EEC    4C544347 (LTCG)

对于初学者来说,这些都是在Windows标题中定义的

13 id == coffgrp已经显示由lint时间代码生成

创建 如果您执行增量链接 / LINK / LTCG:INCREMENTAL

,则会创建

14

这是一个虚拟调试目录

Debug Directories(4)
Type       Size     Address  Pointer
cv           53       463cc    457cc    
(    12)      14       46420    45820
(    13)     29c       46434    45834
(    14)       0           0        0

dumpbin / headers pogo_vcfeature.exe | grep -A 8&#34;调试目录&#34;

 Debug Directories

        Time Type        Size      RVA  Pointer
    -------- ------- -------- -------- --------
    5AD58258 cv            53 000463CC    457CC    
    5AD58258 feat          14 00046420    45820    
    Counts: Pre-VC++ 11.00=0, C/C++=202, /GS=202, /sdl=0, guardN=201
    5AD58258 coffgrp      29C 00046434    45834    
    4C544347 (LTCG)
    5AD58258 iltcg          0 00000000        0

Windows标题

:\>echo %cd%
C:\Program Files\Windows Kits\10\Include\10.0.16299.0

:\>grep -ir -B 12 -A 4 IMAGE_DEBUG_TYPE_VC_FEATURE *
xxxxxxxxxxxxxx
km/ntimage.h:#define IMAGE_DEBUG_TYPE_VC_FEATURE       12
km/ntimage.h-#define IMAGE_DEBUG_TYPE_POGO             13
km/ntimage.h-#define IMAGE_DEBUG_TYPE_ILTCG            14
km/ntimage.h-#define IMAGE_DEBUG_TYPE_MPX              15
km/ntimage.h-#define IMAGE_DEBUG_TYPE_REPRO            16
--
xxxxxxxxxxxxxxxxx
um/winnt.h:#define IMAGE_DEBUG_TYPE_VC_FEATURE       12
um/winnt.h-#define IMAGE_DEBUG_TYPE_POGO             13
um/winnt.h-#define IMAGE_DEBUG_TYPE_ILTCG            14
um/winnt.h-#define IMAGE_DEBUG_TYPE_MPX              15
um/winnt.h-#define IMAGE_DEBUG_TYPE_REPRO            16

:\>