.NET GC 后的 WinDbg 条件断点
WinDbg conditional breakpoint after .NET GC
我在 GC 循环结束时设置条件断点。
程序中断但无法评估 GcCondemnedGeneration 变量,因此无论实际收集了多少代,程序都会在每个 GC 周期中断。
这是断点命令:
> bp clr!ThreadSuspend::RestartEE ".if @@(clr!SVR::GCHeap::GcCondemnedGeneration==2) {kb} .else {g}"
这是我在断点中断时得到的:
Type information missing error for SVR::GCHeap::GcCondemnedGeneration
Couldn't resolve error at 'clr!SVR::GCHeap::GcCondemnedGeneration==2) {kb} .else {g}'
clr!ThreadSuspend::RestartEE:
00007fff`145d5dfc 488bc4 mov rax,rsp
我尝试了各种变体,但都失败了。
机器上安装的.Net版本是4.6.1.
我的程序与服务器 gc 一起运行。
clr.dll 符号加载成功。
谢谢
我能够在不使用 C++ 表达式语法和仅使用 MASM 表达式的情况下使其工作(其中 dwo
用于取消引用 DWORD 大小的数据,例如 unsigned int
):
bp clr!ThreadSuspend::RestartEE ".if (poi(clr!SVR::GCHeap::GcCondemnedGeneration)==2) {kb} .else {g}"
我在 GC 循环结束时设置条件断点。
程序中断但无法评估 GcCondemnedGeneration 变量,因此无论实际收集了多少代,程序都会在每个 GC 周期中断。
这是断点命令:
> bp clr!ThreadSuspend::RestartEE ".if @@(clr!SVR::GCHeap::GcCondemnedGeneration==2) {kb} .else {g}"
这是我在断点中断时得到的:
Type information missing error for SVR::GCHeap::GcCondemnedGeneration
Couldn't resolve error at 'clr!SVR::GCHeap::GcCondemnedGeneration==2) {kb} .else {g}'
clr!ThreadSuspend::RestartEE:
00007fff`145d5dfc 488bc4 mov rax,rsp
我尝试了各种变体,但都失败了。
机器上安装的.Net版本是4.6.1.
我的程序与服务器 gc 一起运行。
clr.dll 符号加载成功。
谢谢
我能够在不使用 C++ 表达式语法和仅使用 MASM 表达式的情况下使其工作(其中 dwo
用于取消引用 DWORD 大小的数据,例如 unsigned int
):
bp clr!ThreadSuspend::RestartEE ".if (poi(clr!SVR::GCHeap::GcCondemnedGeneration)==2) {kb} .else {g}"