首页 > 解决方案 > 我无法理解 clrstack 结果

问题描述

Cent OS 7 上的核心转储测试,使用 dotnet core 3.1。

这是完整的源代码。

using System;
using System.Threading;

namespace Test_NetCoreCrash
{
    class Program
    {
        static void Test1()
        {
            throw new Exception( "Test" );
        }

        static void Test2()
        {
            Test1();
        }

        static void Main( string[] args )
        {
            Test2();
        }
    }
}

通过 dotnet-dump 打开核心转储。这是 clrstack 结果。

$dotnet-dump analyze core.1800

...

> clrstack
OS Thread Id: 0x708 (0)
        Child SP               IP Call Site
00007FFFD14749B0 00007fa00291c387 [HelperMethodFrame: 00007fffd14749b0]
00007FFFD1474B30 00007F9F88AF0C32 /home/test/Test_Crash_Mine/Test_NetCoreCrash.dll!Unknown
00007FFFD1474B70 00007F9F88AF087F /home/test/Test_Crash_Mine/Test_NetCoreCrash.dll!Unknown
00007FFFD1474B80 00007F9F88AF0838 /home/test/Test_Crash_Mine/Test_NetCoreCrash.dll!Unknown
00007FFFD1474E98 00007fa001ef25ff [GCFrame: 00007fffd1474e98]
00007FFFD1475380 00007fa001ef25ff [GCFrame: 00007fffd1475380]
>

如何获得正确的呼叫站点信息?

预期结果

$dotnet-dump analyze core.1800

...

> clrstack
OS Thread Id: 0x708 (0)
        Child SP               IP Call Site
00007FFFD14749B0 00007fa00291c387 [HelperMethodFrame: 00007fffd14749b0]
00007FFFD1474B30 00007F9F88AF0C32 Test_NetCoreCrash.Program.Test1() [E:\MySolution\MyMSSolution\Test_NetCoreCrash\Program.cs:line 18]
00007FFFD1474B70 00007F9F88AF087F Test_NetCoreCrash.Program.Test2() [E:\MySolution\MyMSSolution\Test_NetCoreCrash\Program.cs:line 23]
00007FFFD1474B80 00007F9F88AF0838 Test_NetCoreCrash.Program.Main(String[] args) [E:\MySolution\MyMSSolution\Test_NetCoreCrash\Program.cs:line 28]
00007FFFD1474E98 00007fa001ef25ff [GCFrame: 00007fffd1474e98]
00007FFFD1475380 00007fa001ef25ff [GCFrame: 00007fffd1475380]
>

(对不起,我不是英语母语)

标签: c#.net-corecoredump

解决方案


推荐阅读