You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调试时错误指向SqlMapper.cs而非业务代码行,无法定位问题

调试时异常指向SqlMapper.cs而非自定义代码的解决办法

1. 保留完整异常堆栈

  • 捕获异常时不要截断堆栈信息,避免仅抛出ex.Message。直接抛出原异常或保留完整异常对象:
    try { /* 你的数据库操作代码 */ }
    catch (Exception ex) { throw; } // 不修改原异常,保留完整调用链
    
  • 全局异常处理逻辑中,确保输出ex.ToString()而非仅异常信息,这样能看到完整的调用堆栈。

2. 确认调试符号加载正常

  • 在Visual Studio的「模块」窗口(调试 → 窗口 → 模块)中,找到你的项目程序集,检查「符号状态」是否为「已加载」。未加载则右键选择「加载符号」。
  • 项目生成配置切换为Debug模式(Release模式默认会优化代码,丢失调试行号信息),同时在项目属性→生成→高级中,将「调试信息」设置为「完整」。

3. 封装数据库调用逻辑

  • 将所有调用SqlMapper的数据库操作(如Query、Execute)封装到独立的业务方法中,这样异常堆栈会包含你的业务方法调用行,快速定位问题:
    public User GetUser(int userId)
    {
        using(var conn = new SqlConnection(_connString))
        {
            return conn.QueryFirstOrDefault<User>("SELECT * FROM Users WHERE Id = @Id", new { Id = userId });
        }
    }
    

4. 关闭代码优化(按需)

  • 如果需要在Release模式下调试,关闭项目属性→生成中的「优化代码」选项,优化会导致代码行号与实际执行逻辑不匹配,进而丢失调试定位信息。

5. 直接断点排查

  • 若堆栈信息仍不明确,在所有调用SqlMapper的业务代码行上设置断点,逐步执行找到触发异常的具体调用位置。

内容的提问来源于stack exchange,提问作者user21952045

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:04:51