首页
社区
课程
招聘
[求助]windbg条件断点设置问题2
发表于: 2015-3-21 20:47 4606

[求助]windbg条件断点设置问题2

2015-3-21 20:47
4606
前几天在坛里问了个关于windbg设置字符串断点的问题,非常感谢@啤酒肚给了我不少指导,
但仍有存在两个问题,没弄明白,本人喜欢刨根问底,还请大家多指点啊,先谢了!

情况如下:
想在打开文件C:\1.txt时,断下来,利用windbg设置条件断点如下:
bp kernel32!CreateFileW "
as /mu ${/v:filename} poi(esp+4);
.block{
    .if ($sicmp(\"${filename}\", \"c:\\1.txt\") == 0){
        .echo \"open 1.txt\";
        r
    }
}
ad ${/v:filename};
gc;
"
问题:
1.就是不明白为什么最后需要清掉别名?不是如果别名已经定义,再定义的话会覆盖掉之前的吗?
2.当打开C盘时,此时的filename为C:\,此时$sicmp(\"${filename}\", \"c:\\1.txt\")
  就相当于$sicmp("C:\", "C:\1.txt"),此时C:\"中的\"会转义成",因此会出现$sicmp语句
  会出现语法错误,请问有什么办法解决没,本文尝试在"${filename}"加@禁止转义,但仍有
  问题。
  加@的方法可以解决下面的问题,如:
  $sicmp(@"C:\", @"c:\1.txt")此时是正确的,但由于在设置条件断点时,后面的语句本身在
  ""里面,所以@的方式似乎不行。
  请问大家有没有解决的好方法。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 97
活跃值: (141)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
1. 因为会出现上次别名内容清除不掉的情况。
2. 你可以这样写 "C:\ " ,也就是在最后一个“号前面加个空格。 另外加@是正确的方法。
2015-3-21 20:57
0
雪    币: 93
活跃值: (52)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
非常感谢啊!!!
1.加空格的方法确实很好用
2.对于加@的方法,再没有字符串嵌套时,没有问题,但一旦有嵌套,就有问题了,如下面的例子,如果字符串本来就是C:"
0:000> ? $sicmp(@"C:"", @"C:\1.txt")
Syntax error at '(@"C:"", @"C:\1.txt")'
2015-3-21 21:25
0
游客
登录 | 注册 方可回帖
返回
//