Windbg 如何使用符号插入断点包括<&燃气轮机&引用;(尖括号)

Windbg 如何使用符号插入断点包括<&燃气轮机&引用;(尖括号),windbg,Windbg,我想使用名为“TSmartPointer::TSmartPointer”的符号在windbg中插入断点 当我将“”替换为“*”时,WinDbg可以找到符号: x TSmartPointer*class CDataMemberMgr*::TSmartPointer*class CDataMemberMgr* 我错了吗?如何插入此断点?我在WinDbg的内部帮助中找不到此断点,但在中,这让我对空格的也有点好奇 在复杂函数中设置断点,包括包含空间的函数,以及C++公共类的成员,将表达式括在括号内。例

我想使用名为“TSmartPointer::TSmartPointer”的符号在windbg中插入断点

当我将“”替换为“*”时,WinDbg可以找到符号:

x TSmartPointer*class CDataMemberMgr*::TSmartPointer*class CDataMemberMgr*

我错了吗?如何插入此断点?

我在WinDbg的内部帮助中找不到此断点,但在中,这让我对空格的也有点好奇

在复杂函数中设置断点,包括包含<强>空间的函数,以及C++公共类的成员,将表达式括在括号内。例如,使用bp(??MyPublic)或bp(新运算符)

此外,它还明确提到了尖括号

您必须从三个符号@开始!并以引号(“)结尾。如果没有此语法,则不能在MASM计算器的符号名称中使用空格、尖括号(())或其他特殊字符

(强调矿山)

因此,在您的情况下,以下方法应该有效:

bp @!"TSmartPointer<class CDataMemberMgr>::TSmartPointer<class CDataMemberMgr>"
bp@!“TSmartPointer::TSmartPointer”
引号也应该注意空格

并对@persistent进行注释:


对于模板类,使用Windbg所需的精确间距和尖括号放置非常重要。有时会有一个额外的空间,在那里是重要的。您可以通过先执行符号查找(如x MSHTML)来判断它应该是什么!TSmartPointer*CDATA成员管理器*。Windbg应该进行通配符匹配并打印出一组符号名。然后,您应该使用@从该列表中复制并粘贴正确的名称!“…”引述。不要尝试自己重新键入符号名称,因为空格很重要,如果遗漏了一个,Windbg将无法正确匹配


感谢您的患者。我阅读了您告知的Microsoft文档。我尝试使用以下命令插入断点。不!!“MSHTML!TSmartPointer::TSmartPointer”。但WinDbg注意到我无法解决“@”处的错误!“MSHTML!TSmartPointer::TSmartPointer”^bu@中出现额外字符错误!“MSHTML!TSmartPointer::TSmartPointer”。@egodcore:我将在回家学习模板类时仔细研究一下,使用Windbg想要的精确间距和尖括号位置非常重要。有时会有一个额外的空间,在那里是重要的。您可以通过先执行符号查找(如
xmshtml)来判断它应该是什么!TSmartPointer*CDATA成员管理器*
。Windbg应该进行通配符匹配并打印出一组符号名。然后,您应该使用
@从该列表中复制并粘贴正确的名称!“…”
quoting。不要尝试自己重新键入符号名称,因为空格很重要,如果遗漏了一个,Windbg将无法正确匹配。@KurtHutchinson:谢谢您的评论。我已经在答案中添加了这一点,因为注释可能会被删除。@egodcore:Kurt的注释有用吗?
x TSmartPointer*class CDataMemberMgr*::TSmartPointer*class CDataMemberMgr*
bp @!"TSmartPointer<class CDataMemberMgr>::TSmartPointer<class CDataMemberMgr>"