我在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符号。
谢谢
发布于 2020-04-23 03:22:34
我能够使它在不使用C++表达式语法和MASM表达式的情况下工作(其中dwo
用于解除DWORD大小的数据(如unsigned int
)):
bp clr!ThreadSuspend::RestartEE ".if (poi(clr!SVR::GCHeap::GcCondemnedGeneration)==2) {kb} .else {g}"
https://stackoverflow.com/questions/61383952
复制