我已经将IIS w3wp.exe
进程和inetpub
文件夹转储到了运行asp.net应用程序的dll和pdb。
当我在WinDbg中执行命令!dumpstack
时,没有关于代码行号的信息,只有函数MD附近偏移:
0:088> !DumpStack
OS Thread Id: 0x1b358 (88)
Current frame: (MethodDesc 00007ffdc6850430 +0x2ae System.Text.RegularExpressions.RegexInterpreter.Go())
Child-SP RetAddr Caller, Callee
00000016e619e380 00007ffdc66c3675 (MethodDesc 00007ffdc5fc8650 +0x185 System.Text.RegularExpressions.RegexRunner.Scan(System.Text.RegularExpressions.Regex, System.String, Int32, Int32, Int32, Int32, Boolean, System.TimeSpan))
00000016e619e3f0 00007ffdc66c333e (MethodDesc 00007ffdc5fc1db8 +0x1ce System.Text.RegularExpressions.Regex.Run(Boolean, Int32, System.String, Int32, Int32, Int32)), calling (MethodDesc 00007ffdc5fc8650 +0 System.Text.RegularExpressions.RegexRunner.Scan(System.Text.RegularExpressions.Regex, System.String, Int32, Int32, Int32, Int32, Boolean, System.TimeSpan))
00000016e619e4b0 00007ffdc66c3110 (MethodDesc 00007ffdc5fc1bd8 +0x30 System.Text.RegularExpressions.Regex.Match(System.String, Int32)), calling (MethodDesc 00007ffdc5fc1db8 +0 System.Text.RegularExpressions.Regex.Run(Boolean, Int32, System.String, Int32, Int32, Int32))
00000016e619e4c0 00007ffdc66c209a (MethodDesc 00007ffdc5fc19f8 +0x3a System.Text.RegularExpressions.Regex..ctor(System.String)), calling (MethodDesc 00007ffdc5fc1a28 +0 System.Text.RegularExpressions.Regex..ctor(System.String, System.Text.RegularExpressions.RegexOptions, System.TimeSpan, Boolean))
00000016e619e500 00007ffdc888d27f (MethodDesc 00007ffdc8aee670 +0x27f EmailProcessor.Process()), calling (MethodDesc 00007ffdc5fc1bc8 +0 System.Text.RegularExpressions.Regex.Match(System.String))
在此命令之前,我还使用命令设置符号路径:.symfix d:\inetpub\bin; .reload
。
我想解决的主要问题 - 方法EmailProcessor.Process
中的哪一行代码调用System.Text.RegularExpressions.Regex
方法 - 也许我可以在IL代码中使用+0x27f
MethodDesc offset和get命令获取它?
Web应用程序构建设置 - Release
配置和Debug info
为full
。
UPD
当我在转储上运行!clrstack
命令时,我会得到类似的结果:
0:088> !CLRStack
OS Thread Id: 0x1b358 (88)
Child SP IP Call Site
00000016e619d610 00007ffdc66c41ce System.Text.RegularExpressions.RegexInterpreter.Go()
00000016e619e390 00007ffdc66c3675 System.Text.RegularExpressions.RegexRunner.Scan(System.Text.RegularExpressions.Regex, System.String, Int32, Int32, Int32, Int32, Boolean, System.TimeSpan)
00000016e619e400 00007ffdc66c333e System.Text.RegularExpressions.Regex.Run(Boolean, Int32, System.String, Int32, Int32, Int32)
00000016e619e4c0 00007ffdc66c3110 System.Text.RegularExpressions.Regex.Match(System.String, Int32)
00000016e619e510 00007ffdc888d27f EmailProcessor.Process()