如何在WinDbg中为操作员新建/操作员删除设置模块断点(bu)?

如何在WinDbg中为操作员新建/操作员删除设置模块断点(bu)?,windbg,Windbg,我的问题是: 0:001> x xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator* 00000000`06645e10 xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator delete (void *) 00000000`06645be0 xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator new (un

我的问题是:

0:001> x xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator*
00000000`06645e10 xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator delete (void *)
00000000`06645be0 xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator new (unsigned int)
0:001> bu "xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator delete"
0:001> bu "xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator new"
breakpoint 0 redefined
0:001> bu xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator delete
Couldn't resolve error at 'xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator delete'
0:001> bu xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator\ delete
Couldn't resolve error at 'xerces_depdom_2_8!xercesc_2_8::DOMStringHandle::operator\ delete'
首先,我尝试引用函数名。无骰子-尝试在
运算符new
上设置断点将删除
运算符delete
上的断点。这意味着,断点首先设置不正确

未引用的尝试也不起作用

那么,我该怎么做呢

编辑

我想使用bu而不是bp是有原因的。断点是在脚本中设置的。使用断点的实际地址不是一个好主意,因为它们可能会在不同的运行中发生变化,这与函数名不同。此外,bu允许在加载相应模块之前设置断点,这与bp不同


因此,让我澄清一下问题-断点是在加载相应模块之前设置的。

如果要使用的符号名称中有空格,则需要使用大括号:

bu (blah!operator new)

请特别参阅“使用复杂文本的断点”一节,如果要使用的符号名称中有空格,则需要使用大括号:

bu (blah!operator new)

请特别参阅有关使用复杂文本的断点的部分

另一个选项是使用
bu@!“blah!operator new”
,它的优点是引用了模板方法中经常使用的
'
字符。EdChum回答的链接中也提到了这一点。

另一个选项是使用
bu@!“blah!operator new”
,它的优点是引用了模板方法中经常使用的
'
字符。EdChum回答的链接中也提到了这一点。

这太好了,谢谢!我会求助于bm*,然后注意符号名称,然后在相应的地址上使用bu。“但是,这是更好的方法,再次感谢:”MarcSherman:是的,有很多不同的设置断点的方法,包括使用源文件行号和非常复杂的MASM和C++语法,总是有一种查找和设置断点的方法,这是非常好的,谢谢!我会求助于bm*,然后注意符号名称,然后在相应的地址上使用bu。但是这是更好的方式,再次感谢:)MarcSherman:是的,有很多不同的设置断点的方法,包括使用源文件行号和非常复杂的MASM和C++语法,总是有一种方法可以找到并设置所有情况下的断点。