Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio PE文件:类型为IMAGE\u Debug\u type\u VC\u功能的调试目录_Visual Studio_Visual Studio 2015_Executable_Portable Executable_Debug Symbols - Fatal编程技术网

Visual studio PE文件:类型为IMAGE\u Debug\u type\u VC\u功能的调试目录

Visual studio PE文件:类型为IMAGE\u Debug\u type\u VC\u功能的调试目录,visual-studio,visual-studio-2015,executable,portable-executable,debug-symbols,Visual Studio,Visual Studio 2015,Executable,Portable Executable,Debug Symbols,我使用Visual Studio 2015编译了一个香草exe。除了类型为IMAGE\u debug\u type\u CODEVIEW的预期调试目录外,我还找到了类型为IMAGE\u debug\u type\u VC\u FEATURE的第二个调试目录 我找不到有关它包含哪些数据以及它的用途的信息。有人能给我解释一下或给我指出一个解释它的源代码吗?当你使用/GL或链接时编译时,vc 2010之后的代码生成编译器会发出一个额外的调试目录,其中包含vcfeature。这些目录存储一些vc 110

我使用Visual Studio 2015编译了一个香草exe。除了类型为
IMAGE\u debug\u type\u CODEVIEW
的预期调试目录外,我还找到了类型为
IMAGE\u debug\u type\u VC\u FEATURE
的第二个调试目录


我找不到有关它包含哪些数据以及它的用途的信息。有人能给我解释一下或给我指出一个解释它的源代码吗?

当你使用/GL或链接时编译时,vc 2010之后的代码生成编译器会发出一个额外的调试目录,其中包含vcfeature。这些目录存储一些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)
dumpbin/headers pogo_vcfeature.exe | grep-A 8“调试目录”

窗口标题

:\>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

:\>

当使用/GL或链接时代码生成编译器编译时,vc 2010之后的编译器会发出一个包含vcfeature的额外调试目录,这些目录存储一些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)
dumpbin/headers pogo_vcfeature.exe | grep-A 8“调试目录”

窗口标题

:\>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

:\>

你怎么知道的?我在哪里可以找到其他类型的信息,例如13(0xd)?@blabb我也对指向0xd和0xC调试数据类型详细信息的指针感兴趣,以及任何关于如何确定一个PE文件中有多少调试目录的文档。@stackoverflowwww和ReluctantBIOSGuy我在回答这些问题时编辑过,你是怎么知道的?我在哪里可以找到关于其他类型的信息,例如13(0xd)?@blabb我也对指向类型0xd和0xC调试数据的详细信息的指针感兴趣,以及关于如何确定PE文件中有多少调试目录的任何文档。@stackoverflowwww和ReluctantBIOSGuy我在回答这些问题时编辑过