如何在 WinDbg 中的 C# 代码中添加 BreakPoint 以查看局部变量的值?

问题描述

首先,在WinDbg.exe中是否可以通过添加SOS.dll来查看C#代码中的局部变量?

我使用 .cordll -ve -u -l 将 SOS.dll 扩展加载到 WinDbg.exe 命令。机器是x​​86。命令的结果是:

CLRDLL: Loaded DLL C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll
Automatically loaded SOS Extension
CLR DLL status: Loaded DLL C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll

我认为 SOS.dll 已成功加载。然后我想在代码中插入一个 BreakPoint。通过测试 F9 似乎不起作用。所以我使用 !bpmd 命令插入一个断点,如下所示:

0:004> !bpmd MyCode.exe Program.Main
PDB symbol for clr.dll not loaded
Found 1 methods in module 00714044...
MethodDesc = 00714d50
Setting breakpoint: bp 00760869 [Demo.Program.Main(System.String[])]
Adding pending breakpoints...
0:004> bl
     1 e Disable Clear  00760869     0001 (0001)  0:**** 

但结果是:

0:004> g
eax=00000024 ebx=00000001 ecx=00eff73c edx=77592740 esi=00000000 edi=77621a20
eip=77592740 esp=00eff73c ebp=00eff750 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
ntdll!KiFastSystemCallRet:
77592740 c3   

为什么没有命中断点?

希望大家能给我一些帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)