张老师,条件断点为什么会这样呢?
Windows内核调试
张老师,条件断点为什么会这样呢?
kk345
2014-09-03, 23:27 下午
测试函数
void qqq(char * str) {}
void main()
{
while(1)
{
qqq("c1");
qqq("c2");
qqq("c3");
Sleep(300);
}
}
设置条件断点
bp qqq "r $t1=poi(esp+4); as /ma $String $t1; .if($scmp(\"
${$String}
\",\"c1\")==0){} .else{.printf\"File:%ma \",$t1;g}"
查看断点
0:000> bl
0 e 00d5c540 [d:\test\ctest\ctest\ctest.cpp @ 9] 0001 (0001) 0:**** CTest!qqq "r $t1=poi(esp+4); as /ma c1 $t1; .if($scmp(\"
c1
\",\"c1\")==0){} .else{.printf\"File:%ma \",$t1;g}"
为什么String被固定为字符串 "c1" 了,然后每次运行qqq都断下来了,总是匹配成功
不能根据调用参数动态对比吗?
谢谢!
Re: 张老师,条件断点为什么会这样呢?
kk345
2014-09-04, 11:09 上午
解决了 应该是没删除变量的原因