Test:
```
class CTest
{
public:
~CTest()
{
__debugbreak();
}
};
int wmain(__in int argc, __in PWSTR argv[])
{
std::list<CTest> TestList;
TestList.emplace_back();
return 0;
}
```
Debugging:
```
0:000> .inline 1
Include inline function queries is "enabled".
0:000> r
rax=000000000041ce60 rbx=000000000041ce60 rcx=000000000041cf10
rdx=0000000000000003 rsi=0000000000000000 rdi=00000000001dfaf8
rip=000000013fcb1743 rsp=00000000001dfa90 rbp=0000000000000000
r8=000000000041cf10 r9=0000000000000000 r10=0000000000000200
r11=000000000041cf10 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei pl nz na pe nc
cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000202
test!std::list<CTest,std::allocator<CTest> >::clear+0x93:
00000001`3fcb1743 cc int 3
0:000> k
# Child-SP RetAddr Call Site
00 (Inline Function) --------`-------- test!CTest::{dtor} [~\test.cpp @ 100]
01 (Inline Function) --------`-------- test!std::allocator<std::_List_node<CTest,void *> >::destroy [c:\program files (x86)\microsoft visual studio 14.0\vc\include\xmemory0 @ 744]
02 (Inline Function) --------`-------- test!std::allocator_traits<std::allocator<std::_List_node<CTest,void *> > >::destroy [c:\program files (x86)\microsoft visual studio 14.0\vc\include\xmemory0 @ 864]
03 (Inline Function) --------`-------- test!std::_Wrap_alloc<std::allocator<std::_List_node<CTest,void *> > >::destroy [c:\program files (x86)\microsoft visual studio 14.0\vc\include\xmemory0 @ 1003]
04 (Inline Function) --------`-------- test!std::_List_buy<CTest,std::allocator<CTest> >::_Freenode [c:\program files (x86)\microsoft visual studio 14.0\vc\include\list @ 853]
05 00000000`001dfa90 00000001`3fcb17f5 test!std::list<CTest,std::allocator<CTest> >::clear+0x93 [c:\program files (x86)\microsoft visual studio 14.0\vc\include\list @ 1513]
06 (Inline Function) --------`-------- test!std::list<CTest,std::allocator<CTest> >::_Tidy+0xa [c:\program files (x86)\microsoft visual studio 14.0\vc\include\list @ 1884]
07 (Inline Function) --------`-------- test!std::list<CTest,std::allocator<CTest> >::{dtor}+0xa [c:\program files (x86)\microsoft visual studio 14.0\vc\include\list @ 1098]
08 00000000`001dfad0 00000001`3fcb3394 test!wmain+0x75 [~\test.cpp @ 110]
09 00000000`001dfb20 00000001`3fcb32b7 test!invoke_main+0x34 [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 80]
0a 00000000`001dfb60 00000001`3fcb317e test!__scrt_common_main_seh+0x127 [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 253]
0b 00000000`001dfbc0 00000001`3fcb33a9 test!__scrt_common_main+0xe [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 296]
0c 00000000`001dfbf0 00000000`778059cd test!wmainCRTStartup+0x9 [f:\dd\vctools\crt\vcstartup\src\startup\exe_wmain.cpp @ 17]
0d 00000000`001dfc20 00000000`7793a561 kernel32!BaseThreadInitThunk+0xd
0e 00000000`001dfc50 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
```
```
0:000> !py
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> dbgCommand(".inline 1")
u'Include inline function queries is "enabled".\n'
>>> for f in getStack():
... print( findSymbol(f.ip) )
...
test!std::list<CTest,std::allocator<CTest> >::clear+93
test!wmain+75
test!invoke_main+34
test!__scrt_common_main_seh+23
test!__scrt_common_main+e
test!wmainCRTStartup+9
kernel32!BaseThreadInitThunk+d
ntdll!RtlUserThreadStart+1d
```
```
0:000> .inline 0
Include inline function queries is "disabled".
0:000> r
rax=000000000041ce60 rbx=000000000041ce60 rcx=000000000041cf10
rdx=0000000000000003 rsi=0000000000000000 rdi=00000000001dfaf8
rip=000000013fcb1743 rsp=00000000001dfa90 rbp=0000000000000000
r8=000000000041cf10 r9=0000000000000000 r10=0000000000000200
r11=000000000041cf10 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei pl nz na pe nc
cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000202
test!std::list<CTest,std::allocator<CTest> >::clear+0x93:
00000001`3fcb1743 cc int 3
0:000> k
# Child-SP RetAddr Call Site
00 00000000`001dfa90 00000001`3fcb17f5 test!std::list<CTest,std::allocator<CTest> >::clear+0x93 [c:\program files (x86)\microsoft visual studio 14.0\vc\include\list @ 1513]
01 00000000`001dfad0 00000001`3fcb3394 test!wmain+0x75 [d:\projects\!trash\test.cpp @ 110]
02 00000000`001dfb20 00000001`3fcb32b7 test!invoke_main+0x34 [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 80]
03 00000000`001dfb60 00000001`3fcb317e test!__scrt_common_main_seh+0x127 [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 253]
04 00000000`001dfbc0 00000001`3fcb33a9 test!__scrt_common_main+0xe [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 296]
05 00000000`001dfbf0 00000000`778059cd test!wmainCRTStartup+0x9 [f:\dd\vctools\crt\vcstartup\src\startup\exe_wmain.cpp @ 17]
06 00000000`001dfc20 00000000`7793a561 kernel32!BaseThreadInitThunk+0xd
07 00000000`001dfc50 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
```
MSDN:
* [.inline (Toggle Inline Function Debugging)](https://msdn.microsoft.com/library/windows/hardware/hh974778(v=vs.85).aspx)
* [Debugging Optimized Code and Inline Functions](https://msdn.microsoft.com/library/windows/hardware/hh406275(v=vs.85).aspx)
Comments: ** Comment from web user: ussrhero **
Это не так чтобы просто было сделать.
Получить стек с 'inline' фреймами - не сложно,
вот тут обсуждается: http://stackoverflow.com/questions/38893832/inline-stack-frames-with-idebugcontrol5-getcontextstacktraceex
Проблема в том, что мы получаем инфу о функции, ее параметрах через DIA. Там есть специальные методы для работы с inline функциями, но надо разбираться.