19.新版windbg无法调试源码怎么办

用 windbg 调试 .NET6 的coreclr源码时,可以轻松映射代码,但在调试 .NET8 时就不行了,该怎么办呢?

首先说一下原理,默认情况下缺省的 .srcpath 指向的是微软的源码服务器,如果可以往外翻的话,可以直接下载,无需任何操作,如果不能翻的话,需要手工设置下远程路径为空,所以有两种方案。

1. 界面配置

将下面的三行代码丢到输入框即可,尤其是第一行代码。


srv*
D:\dream\runtime-8.0.2\coreclr\gc
D:\dream\runtime-8.0.2\coreclr\vm

2. 代码配置

也可以使用 windbg 自带的 .srcpath 命令设置,脚本如下:


.srcpath srv*;D:\dream\runtime-8.0.2\coreclr\gc;D:\dream\runtime-8.0.2\coreclr\vm

接下来写一段简单的代码,用 windbg 测一下。


       static void Main(string[] args)
       {
           int a = int.MaxValue;
           int b = 1;

           try
           {
               Debugger.Break();
               int result = checked(a + b);
               Console.WriteLine(result);
           }
           catch (OverflowException ex)
           {
               Console.WriteLine("Overflow occurred: " + ex.Message);
           }
       }

然后用 windbg 附加调试,截图如下,可以看到完美命中。

posted @ 2024-03-08 17:26  一线码农  阅读(217)  评论(0编辑  收藏  举报