如何从符号表中获取全局变量定义?

时间:2012-12-17 09:02:58

标签: c visual-studio data-structures global symbol-table

我正在用C / C ++语言进行Visual Studio 2005或2010的开发。我想从二进制或执行文件中的符号表中获取全局结构定义信息。举一个例子如下。一个名为“TD”的全局结构和结构中的三个成员。编译代码后,信息将在符号表,PDB符号文件或DBG文件中。是否有任何一组函数来从符号表中抽象出信息?我可以获得会员的大小和该会员的类型吗?

typedef struct {
void * pointer;
int    b;
char c;
}TD;

1 个答案:

答案 0 :(得分:1)

您必须使用ISymbolReader界面。我在这里有C#示例:

        // Create the Metadata dispenser.
        IMetaDataDispenserEx pDispenser = new IMetaDataDispenserEx();

        // Open the Metadata importer for the given file.
        Guid importerIID = new Guid(RCWHelper.IID_IMetaDataImport);
        IntPtr pImporter = IntPtr.Zero;
        pDispenser.OpenScope(filepath, COR_OPEN_FLAGS.ofRead, ref importerIID, out pImporter);

        SymBinder binder = new SymBinder();
        ISymbolReader symReader = binder.GetReader(pImporter, filepath);

然后,您可以使用此接口的GetGlobalVariables和GetVariables方法获取有关变量的完整信息。