locked
IDiaSymbol::findInlineeLines doesn't return expected values (Debug Interface Access SDK) RRS feed

  • Question

  • Hi,

    I am trying to extract the inlined function details from PDB file and observed that IDiaSymbol::findInlineFrames*, IDiaSymbol::findInlineeLines* APIs are not returning any value regarding the inlined function details.

    Setup Details:

    • Visual Studio Professional 2013
    • MS DIA SDK - Microsoft Visual Studio 12.0
    • Source language: C++
    • Compiler options: /c /Zi /nologo /W3 /WX- /sdl /Ox /Ob1 /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _LIB /D _CRT_SECURE_NO_WARNINGS /D _UNICODE /D UNICODE /Gm /EHsc /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc120.pdb" /Gd /TP /analyze- /errorReport:prompt
    • Function inline declared by using __forceinline
    • Functions are getting inlined as expected, that is verified by findLines and get_wasInlined APIs.
    • Also I am not able to hit breakpoints places in the inline functions on Visual Studio. Does this means there is no inline expansion info present in the PDB file.

    Issue:

    I am trying the extract inlined function information i.e. which functions got inlined, where actually inline function expansion happened, etc.). To extract that, I am trying to use the following DIA APIs:

    IDiaSymbol::findInlineFramesByAddr
    IDiaSymbol::findInlineFramesByRVA
    IDiaSymbol::findInlineFramesByVA
    IDiaSymbol::findInlineeLines
    IDiaSymbol::findInlineeLinesByAddr
    IDiaSymbol::findInlineeLinesByRVA
    IDiaSymbol::findInlineeLinesByVA

    To me, it appears that, none of the above functions are able to provide any details about the inlined functions. Lack of a tutorial/samples/examples for above functions blocking me a little.

    Can someone help me in understanding:

    - How can I extract the inline expansion details?

    - Why the above APIs are not working as expected? How to call these APIs correctly to get expected results?

    - How to ensure inline expansion info gets added into PDB file.

    Let me know if I need to provide more regarding this.


    Wednesday, August 27, 2014 7:07 AM

All replies

  • Hi Swarup,

    According to the MSDN document about this method:

    http://msdn.microsoft.com/en-us/library/jj155714.aspx

    It takes an IDiaEnumLineNumbers object  as parameter that contains the list of line numbers that are retrieved, and returns an enumeration that allows a client to iterate through the line number information of all functions that are inlined, directly or indirectly. If it returns null, there's a probability that you've passed a wrong list for the method, so please check it out.


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    Friday, August 29, 2014 10:08 AM
  • It doesn't return NULL directly. Sorry about the confusion.

    Actually it returns E_INVALIDARG error.

    Monday, September 1, 2014 7:52 PM