如何从Break Mode异常中获取报错文件、行号等更多有效信息
排查System.Reflection.TargetInvocationException的实操步骤
报错提示:
System.Reflection.TargetInvocationException: 'Exception has been thrown by the target of an invocation.'
- 查看内部嵌套异常:
TargetInvocationException是反射调用场景下的外层封装异常,真实的业务报错信息全部存储在InnerException属性中。在IDE的异常弹窗中点击「查看详细信息」,展开InnerException节点即可获取实际抛出的错误类型、具体报错描述。 - 开启.NET异常自动捕获:以Visual Studio为例,按快捷键
Ctrl + Alt + E打开异常设置面板,勾选「公共语言运行时异常」下的全部选项,也可以直接搜索System.Reflection.TargetInvocationException单独勾选。配置完成后触发异常时,调试器会直接在真实抛出错误的代码位置断住,自动展示对应文件路径、行号、上下文变量信息。 - 定位自定义代码的报错位置:调试断住后打开调用堆栈窗口(路径:调试>窗口>调用堆栈),从栈顶开始向下遍历,跳过命名空间为
System、Microsoft开头的系统程序集调用帧,第一个归属你的项目代码的调用帧,双击即可直接跳转至对应的报错代码行。 - 确认调试符号生成配置:右键项目→选择「属性」→「生成」→「高级」,确保「调试信息」选项设置为「便携式」或「完整」,保证编译时生成对应的pdb符号文件,调试时才能正常匹配源码行号信息。
内容的提问来源于stack exchange,提问作者Nicoara
相关产品推荐
相关产品推荐

