2015-01-28 1 views
0

SymTagFuncDebugStartSymTagFuncDebugEnd에 대한 documentationIDiaSymbol::get_lexicalParent을 호출하면 해당 기능을 나타내는 기호가 반환됨을 나타냅니다. 나는 의 get_symTag 메쏘드가 SymTagFunction을 반환 할 것이므로 이것을 해석한다. 그러나이 작업을 수행하면 SymTagCompiland이 반환되고 함수는 반환되지 않습니다. 그래서 설명서가 잘못 표시되지만 더 나쁜 것은 실제로 SymTagFuncDebugStartSymTagFuncDebugEnd을 포함하는 SymTagFunction에 묶는 방법을 잘 모르겠습니다.DIA SDK FuncDebugStart/FuncDebugEnd의 부모 함수를 얻는 방법?

아는 사람 있습니까? 몇 가지 덤프를 사용하면 IEnumSymbols을 통해 기호를 열거 할 때 SymTagFunction 바로 다음에 SymTagFuncDebugStartSymTagFuncDebugEnd이 항상 올 수 있습니다. 즉, IDiaSymbol::get_symIndexId이 함수의 경우 n을 반환하면 func 디버그 시작 및 func 디버그 끝의 경우 각각 n+1n+2을 반환합니다.

그러나 이것이 항상 사실인지는 확신 할 수 없으며, 이는 신뢰할 수없고 해킹 된 것처럼 보입니다.

누구든지 올바른 방법을 제안합니까?

답변

0

나는 결국이 작업을했습니다. 문제는 SymTagNull을 사용하여 전역 범위의 모든 기호를 열거하면 FuncDebugStartFuncDebugEnd 기호가 있다는 것입니다. 이 기호의 어휘 부모는 전체 범위이므로 FuncDebugStartFuncDebugEnd 기호에 대한 포인터를 사용자에게 보냈다는 의미에서 "부모"입니다. 당신이 실제 SymTagFunction 기호에 findChildren를 호출하여 FuncDebugStartFuncDebugEnd을받을 경우

그러나, 다음의 어휘 부모는 사실 원래의 기능을 할 것이다. 그래서 이것은 불분명 한 문서의 문제였습니다.

0

여기에 코드를 붙여 주실 수 있습니까? 나는 당신의 코드에 잘못된 것이 있다고 생각한다. get_lexicalParentSymTagFuncDebugStartSymTagFuncDebugEnd으로 호출하면 해당 기능과 관련된 기호 (SymTagFunction)가 반환됩니다.

+0

나는 그것을 알아내는 것을 끝내었다. 나는이 질문을 내가 도착한 대답으로 업데이트했다. –

관련 문제