使用sos.dll调试.net应用程序时,为什么本地和参数在堆栈框架上没有显示数据?

时间:2014-05-08 13:36:05

标签: .net debugging windbg sos

我的.net 4 asp.net应用程序正在处理请求,但请求是超时,所以我得到一个转储并尝试在线调试实时应用程序(修订版:只分析转储文件,而不是附加到实时进程)该应用程序。)。我发现消耗请求的线程花费1分5秒。 我浏览了那个帖子的堆栈。我想尝试找出参数和局部变量,但是命令输出显示没有数据,只有一些局部变量有值。我可以知道为什么会这样吗?方法' FilterEntity'呼叫' Concat'' Concat'不归还。所以我假设' FilterEntity'的当地人一定是在那里。我哪里错了?

我有源代码。我知道这段代码非常慢,因为有一个非常大的字符串,如...' ... AEc3988sfdfJDelxn ...'与','结合在循环中重复。

我想找到真正的大字符串,这是根本原因的证据。

!clrstack -a:

00000000741ebe10 000007feeffa1ff0 System.String.Concat(System.String, System.String, System.String)
    PARAMETERS:
        str0 = <no data>
        str1 = <no data>
        str2 = <no data>
    LOCALS:
        <no data>
        <no data>

00000000741ebed0 000007ff0080e918 Business.FilterDataProcess.FilterEntity(Request, Entity)
    PARAMETERS:
        Request = <no data>
        Entity = <no data>
    LOCALS:
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        <no data>
        0x00000000741ec160 = 0x000000078b27a018
        <no data>

1 个答案:

答案 0 :(得分:5)

问题在于您正在调试优化代码。在这种情况下,抖动不会生成参数和本地的跟踪信息。要禁用优化以简化调试,请参阅以下内容:Making an Image Easier to Debug