Почему символ get_libraryName DIA SDK возвращает значение NULL для IDiaSymbol? - PullRequest
2 голосов
/ 18 ноября 2010

Мне нужно найти правильный .dll / .exe, откуда перечислила функция.Для этого я использую get_libraryName, который мне должен возвращать имя файла (.dll / .exe), в котором функция была изначально определена.

Но возвращается каждый раз, когда NULL (BadPtr = 0x00000) .. Есть ливыход, чтобы получить точное имя файла, откуда была определена и использована функция?

С уважением, Хасан

1 Ответ

2 голосов
/ 13 января 2011
IDiaSession mSession;
DiaSourceClass mSourceClass;
IDiaSymbol mGlobalScope;
string pdbFileName = @"c:\test.pdb";

mSourceClass = new DiaSourceClass();
mSourceClass.loadDataFromPdb(pdbFileName);
mSourceClass.openSession(out mSession);
mSession.loadAddress = loadAddress; 
mGlobalScope = mSession.globalScope;

IDiaEnumSymbols methodSymbols;
mGlobalScope.findChildren(SymTagEnum.SymTagFunction, null, 0, out methodSymbols);
foreach (IDiaSymbol methodSymbol in methodSymbols)
{
     string projectName = functionSymbol.lexicalParent.name;
}

Надеюсь, это поможет!

...