WinDBG条件断点在类指针值的成员上

时间:2018-05-03 23:34:15

标签: windbg

尝试将断点设置为类成员,但是我收到语法错误或错误,说“#34;无法解析"。

目标变量是类指针xyz的abc。

0:000> ??@@c++(xyz->abc)
short 0n812

0:000> dt xyz
Local var @ rbx Type Prop*
   +0x000 __VFN_table : 0x00007ffd`b9229510 
   +0x058 abc          : 0n0147

尝试:

0:000> bu ***!***::function+0x56 ".if (@@c++(xyz->abc))==147) {.echo 'hit'} .else {gc}"

^ Syntax error in '.if ....'

我想在pProp-> ydu值等于147时设置断点。

1 个答案:

答案 0 :(得分:0)

来源

NULL

使用vs 2017社区cmd提示编译

#include <iostream>
using namespace std;
class Rectangle {
    int width, height;
  public:
    Rectangle (int x ,int y) : width(x) , height(y) {} 
    int area (void) {return (width*height);}
};
void CalcArea(int i,int j,Rectangle *rect) {
    cout << "Area for Rect("<<i<<","<<j<<") = "<<rect->area()<< endl;
}       
int main () {
    int i,j; 
    for(i=10,j=10; (i<100 && j<100); i+=5,j+=10){
        Rectangle rect (i,j);
        CalcArea(i,j,&rect);        
    }
  return 0;
}

已执行

cl /EHsc /W4 /analyze /Zi /Od classy.cpp /link /release

在windbg中加载并设置条件断点并运行

classy.exe
Area for Rect(10,10) = 100
Area for Rect(15,20) = 300
Area for Rect(20,30) = 600
Area for Rect(25,40) = 1000
Area for Rect(30,50) = 1500
Area for Rect(35,60) = 2100
Area for Rect(40,70) = 2800
Area for Rect(45,80) = 3600
Area for Rect(50,90) = 4500