How can I debug or set a break statement inside an expression tree?
Posted
by
Abel
on Stack Overflow
See other posts from Stack Overflow
or by Abel
Published on 2012-06-13T10:14:20Z
Indexed on
2012/06/13
10:40 UTC
Read the original article
Hit count: 266
When an external library contains a LINQ provider, and it throws an exception when executing a dynamic expression tree, how can I break when that expression is thrown?
For example, I use a third party LINQ2CRM provider, which allows me to call the Max<TSource, TResult>()
method of IQueryable
, but when it throws an InvalidCastException
, I fail to break on the spot when the exception is thrown, making it hard to review the stack-trace because it's already unwinded when the debugger breaks it in my code. I've set "break on throw" for the mentioned exception. My debug settings are:
Clarification on where exactly I'd want to break. I do not want to break in side the LINQ Expression, but instead, I want to break when the expression tree is executed, or, put in other words, when the IQueryable
extension method Max()
calls the override provided by the LINQ provider. The top of the stacktrace looks like this, which is where I would like to break inside (or step through, or whatever):
at XrmLinq.QueryProviderBase.Execute[T](Expression expression)
at System.Linq.Queryable.Max[TSource,TResult](IQueryable`1 source, Expression`1 selector)
© Stack Overflow or respective owner