Is the stack trace of function that has been inlined preserved on a thrown exception?

前端 未结 2 545
南笙
南笙 2021-02-14 10:18

When compiling an executable in Release mode -with code optimizations enabled- the compiler may opt to inline functions that meet certain criteria in order to improve

2条回答
  •  执念已碎
    2021-02-14 11:11

    This is not a definitive answer but i tried to decorate a simple method that only does division by zero with the [MethodImpl(MethodImplOptions.AggressiveInlining)] attribute which in .NET 4.5 gives a hint to the JIT (which actually performs inlining) to inline a certain method and when i ran the program in release mode, the exception was reported from the calling method, not the one with the division. On the other hand, as Hans said, Methods with throw statements and complex flow logic aren't inlined. This Article on MSDN blog (although from 2004) gives you an overview on how inlining is done by the JIT.

提交回复
热议问题